目录
1.什么是蒸馏?
2.什么是书籍知识蒸馏?
3.蒸馏最核心的三个动作
4.参考Chatgpt给出的工作流程(从一本书中蒸馏知识)
(1)知识提取
(2) 知识理解
(3)去冗余(蒸馏中最关键的一步)
(4)概念抽象(概念归并)
(5)关系重构(形成知识图谱)
(6)形成“最小但完整”的知识体系(这是整个流程最接近真正蒸馏的地方。)
(7)建立一个“蒸馏评分”
从完整流程中,可以就看出LLM模型贯穿全程,那么,简单概括LLM模型在其中的作用:
1.什么是蒸馏?
就是“把复杂对象里的核心信息提取出来,变成更精简、更容易使用的形式,同时尽量保留原来的有效信息”。
2.什么是书籍知识蒸馏?
简单地说,就是将原来几十页的描述蒸馏成一个结构化知识单元。
以一本机械零件加工手册为例:
500页原始手册
↓
提取核心知识
↓
去掉重复和无关信息
↓
重新组织知识关系
↓
得到几十页/几百个知识单元
类比知识蒸馏(KD),简单地说,一本书就是教师模型;书中的全部知识就i是教师模型的知识,书中的知识库/学习笔记就是学生模型;对问题的回答,概念之间的关联就是逻辑;书中的概念,事实,原理就是特征;对蒸馏结果的质量约束就是KD Loss;从书中学习的核心知识就是学生模型学习的东西。
Teacher = 原书
Student = 蒸馏后的知识表示
注意的是,只是简单的类比,其中的数学逻辑不能做套用。同时在目标上也有所差别(模型的知识蒸馏为了模型压缩/能力迁移;书记知识蒸馏为了知识压缩/知识结构化/知识保留)
3.蒸馏最核心的三个动作
(1)提取:找出“有什么知识”
(2)压缩:删除重复、冗余的信息
(3)保真:最重要,不能为了压缩而减少内容或以偏概全
对于机械加工项目来说,不是简单地将机械加工手册总结下,而是从机械加工手册的文本、图片和表格中提取核心加工知识,并在压缩知识规模的同时保持知识之间的语义、几何和工艺关系。
其中真正值得研究的核心其实是:
“如何在减少知识量的情况下,最大程度地保持原始机械加工知识的正确性和关系结构?”
这才是“蒸馏”最核心的思想。
4.参考Chatgpt给出的工作流程(从一本书中蒸馏知识)
以零件加工手册为例
机械加工手册
│
↓
① 知识提取
│ LLM + OCR + VLM + 表格解析
↓
② 知识理解
│ LLM + Embedding + 知识分类
↓
③ 去冗余
│ Embedding + 聚类 + 相似度 + LLM判断
↓
④ 概念抽象
│ LLM + Ontology + 层次聚类
↓
⑤ 关系重构
│ Knowledge Graph + LLM + Graph算法
↓
⑥ 最小但完整的知识体系
│ 图优化 + 知识压缩 + 完整性验证
↓
精炼机械加工知识库
详细讲解如下:
(1)知识提取
目标:把原始文档转换成结构化知识单元。
a. 文本提取
需要处理:文字,图片,表格,公式,图注,标题,章节,页码
技术:PyMuPDF/PaddleOCR(区别:扫描版的PDF(图片)需要用OCR提取文本,电子版的PDF直接提取文本即可)
最好同时保存:文本内容,页码,坐标bbox,字体/标题i信息
b. 图片提取
技术流程:PDF -> Image Extraction -> 图片 ->VLM-> 图片语义
c. 表格提取
目标:为后面做参数知识抽取做准备
技术流程: Table Detection -> Table Structure Recognition -> Structured Data
d. 得到“原始知识单元”(Knowledge Unit)
(2) 知识理解
就是要理解文本中的含义。----是什么?为什么?怎么做?有什么作用?等
技术支持:LLM + Structured Output
Embedding的作用
LLM负责理解语言。Embedding负责把知识转成向量,通过向量相似度判断文本之间的相关性。
常用技术:BGE / E5 / Qwen Embedding / OpenAI Embedding
那么,文本和图片怎么对齐??(确定“哪一段文字”描述“哪一张图片”,以及这段文字和图片中“哪个机械特征”对应。)图文对齐应该放在“知识理解”和“去冗余”之前。
回答:通常要结合版面位置 + 图注 + 章节结构 + 语义相似度 + VLM理解。
第一步:给文字和图片都建立“位置”(解析PDF的页码,为当前页的每个对象都保存坐标)
第二步:利用空间距离进行第一次匹配(利用坐标进行匹配,距离越近,初始关联概率越高)
有个Bug要注意,当有两张图横向排版时,就i不能只用距离完成,需要图注匹配
第三步:利用图注进行对齐(图注中的文字和文本中的文字进行相似度匹配)
第四步:利用章节结构(构建强关联)
第五步:语义对齐——Embedding(解决图片没有文字说明的情况),需要让模型理解这张图表达的是什么?----------先用VLM对图片生成描述,然后分别通过Text Embedding和Image Description Embedding得到特征向量,再计算余弦相似度。
第六步:VLM直接进行图文判断——“这张图片是否表达了这段文字?”
最后,将所有信息综合起来
进一步可以按照以下方向改进(采用四级对齐):
第1级:版面对齐
Text ↔ Image
↓
“它们在页面上是不是相关?”
第2级:语义对齐
Text ↔ Image
↓
“它们表达的是不是同一个主题?”
第3级:知识对齐
Concept ↔ Concept
↓
“文字中的‘深槽’是不是图片中的‘深槽’?”
第4级:区域对齐
Text Concept ↔ Image Region
↓
“文字中的‘刀具’具体对应图片中的哪个区域?”
(3)去冗余(蒸馏中最关键的一步)
常见技术路线:可以使用K-Means / Cosine Similarity / DBSCAN
Knowledge
↓
Embedding
↓
Similarity Matrix
↓
Clustering
(聚类,把“相似的东西”自动分到同一组,不需要提前告诉计算机每一组叫什么。)
↓
LLM判断
↓
合并
语义相似 ≠ 知识相同,所以不能只用Embedding
(4)概念抽象(概念归并)
技术支持: Embedding + LLM + Ontology + Clustering
用Embedding找相似的概念,用LLM判断概念之间的关系
Ontology(本体)是什么?
是一个带有明确语义关系的知识网络。是“概念抽象”和“关系重构”的骨架。
在现在这个“机械加工手册知识蒸馏”的语境里,可以简单理解为:
把一个领域里“有哪些概念、概念是什么、概念之间是什么关系”规定清楚的一套知识体系。
Ontology 和 Knowledge Graph 又是什么关系?
Ontology = 规定“知识应该怎么组织”。
Knowledge Graph = 根据这个规定,把实际知识装进去。
彻底理解Embedding、Clustering、Ontology、Knowledge Graph
原始机械手册
│
↓
知识提取
│
↓
Embedding
│
“转换成向量”
↓
Clustering
│
“相似的放一起”
↓
概念抽象
│
“这些是什么?”
↓
Ontology
│
“概念和关系怎么定义?”
↓
Knowledge Graph
│
“实际知识放进去”
↓
知识蒸馏
(5)关系重构(形成知识图谱)
关系抽取的方法:LLM + 规则(Neo4j) + 图算法(Graph Transformer/GNN)
图算法的作用:Neo4j存放的就是图,用图算法可以学习哪些知识节点之间的关系更重要。
(6)形成“最小但完整”的知识体系(这是整个流程最接近真正蒸馏的地方。)
目标:尽可能少的知识单元,覆盖尽可能多的重要知识。
图优化+知识压缩+检查(正确性,完整性,关系完整性,可追溯性)
(7)建立一个“蒸馏评分”
C = Coverage 知识覆盖率
R = Relation Preservation 关系保留率
F = Factuality 知识正确性
Red = Redundancy 冗余率
从完整流程中,可以就看出LLM模型贯穿全程,那么,简单概括LLM模型在其中的作用:
LLM 不应该负责所有事情。
最合理的架构是:传统工具负责“看、测、算、检索”,LLM负责“理解、判断、抽象、推理、生成结构化知识”。
可以把 LLM 看成整个系统里的一个知识理解与推理中枢。
但是,整个过程不能只有LLM,否则会产生幻觉。
完整流程可以扩展为:
机械加工手册
│
↓
┌──────────────┐
│ 文档解析 │
└──────────────┘
│
┌────────┼────────┐
↓ ↓ ↓
文本 图片 表格
│ │ │
OCR VLM Table Parser
│ │ │
└────────┼────────┘
↓
多模态知识提取
│
↓
┌──────────┐
│ LLM │ ← 理解
└──────────┘
│
↓
Embedding
│
↓
Clustering
│
↓
┌──────────┐
│ LLM │ ← 去重判断
└──────────┘
│
↓
概念抽象
│
↓
┌──────────┐
│ LLM │ ← 概念归纳
└──────────┘
│
↓
Ontology
│
↓
┌──────────┐
│ LLM │ ← 关系抽取
└──────────┘
│
↓
Knowledge Graph
│
↓
知识压缩/蒸馏
│
↓
最小完整知识体系
第一阶段:LLM理解(理解文本,理解图片(VLM 是 LLM 在视觉上的扩展。),)
第二阶段:负责图文对齐
第三阶段:负责去冗余
第四阶段:负责概念抽象
第五阶段:LLM负责构建 Ontology
第六阶段:LLM负责关系抽取
第七阶段:LLM负责知识压缩
结合上述分析的缺陷,最好的架构其实是“LLM + 专用模型 + 算法”
整个系统可以理解为三个“大脑”:
机械加工手册
│
↓
┌──────────────────┐
│ 数据处理层 │
│ OCR/VLM/Parser │
└──────────────────┘
│
↓
┌──────────────────┐
│ LLM层 │
│ │
│ 理解 │
│ 抽象 │
│ 推理 │
│ 对齐 │
│ 去冗余 │
│ 关系抽取 │
└──────────────────┘
│
↓
┌──────────────────┐
│ 知识约束层 │
│ Ontology │
│ Rules │
│ Validation │
└──────────────────┘
│
↓
Knowledge Graph
│
↓
知识蒸馏结果