索引 · 2022
多模态 RAG
检索对象从纯文本扩到图像、版面和带图的文档。
要解决的问题
很多资料的关键信息不在连续正文里,而在图、表、扫描件和版面位置上。只对抽出来的纯文本做向量,这些信息会丢。
相对前一代的变化
MuRAG 在 2022 年把检索扩到图像和文本,生成时同时阅读两种证据。后来的系统多半不重新训练一个多模态生成器,而是在入库时用版面分析和图像描述,把非文本变成可检索的文本或向量。
做法
一条路线是像 MuRAG 那样,用多模态模型直接检索图像和文本。另一条路线是解析文档:识别版面、表格和图片,为图片写文字描述,再与正文一起切块、嵌入。提问时检索到的可能是段落、表格或图片描述。
局限
解析错了,后面的检索都发生在错误文本上。直接做多模态检索则依赖专门模型,和现有的文本向量库不一定兼容。
在链路中的位置
主要改索引和入库。检索、重排序和生成仍可沿用文本 RAG 的后半段。
详解
「详解」根据 Datawhale《All-in-RAG》 的 多模态嵌入 改写,有删节和重组,未包含原教程的代码、图片和练习。原教程与本节详解均按 CC BY-NC-SA 4.0 许可提供:使用时需署名并标明修改,不得用于商业目的,再次改编须以相同许可共享。
关键信息可能不在连续正文里
图表、扫描件、界面截图和版面位置经常承载主要事实。先 OCR 成纯文本再嵌入,会丢失行列关系,也会把识别错误写进索引。多模态嵌入希望查询文本能直接和图像、页面处于可比较的空间。
图文需要被放进同一个空间
CLIP 用大量图文对做对比学习:匹配的图像和文字靠近,不匹配的配对远离。检索时可以用文字向量找图像,也可以用图像向量找文字。它说明多模态检索的关键不是再训练一个生成器,而是让不同模态能够互相度量。
BGE-Visualized 这类模型把视觉能力和文本嵌入接在一起,能对图片、文本或图文组合产生向量。使用时,入库和查询必须使用同一模型与同一预处理;只更换其中一边,相似度就没有意义。
两条实现路线
第一条直接保存页面或图片向量,适合表格、图纸和扫描件。ColPali 是这一路的后续发展:整页作为图像编码,再用后期交互匹配。第二条仍走文本索引,但在入库时识别版面、表格和图片,为图片写描述,并把描述和正文一起切块。
第一条保留视觉信息,依赖专门模型。第二条能复用现有文本向量库,质量则取决于解析和描述。一个系统可以按文档类型分路:普通文章走文本,复杂版面走页面图像。