索引 · 2022

多模态 RAG

检索对象从纯文本扩到图像、版面和带图的文档。

演进中 · 使用现成模型

要解决的问题

很多资料的关键信息不在连续正文里,而在图、表、扫描件和版面位置上。只对抽出来的纯文本做向量,这些信息会丢。

相对前一代的变化

MuRAG 在 2022 年把检索扩到图像和文本,生成时同时阅读两种证据。后来的系统多半不重新训练一个多模态生成器,而是在入库时用版面分析和图像描述,把非文本变成可检索的文本或向量。

做法

一条路线是像 MuRAG 那样,用多模态模型直接检索图像和文本。另一条路线是解析文档:识别版面、表格和图片,为图片写文字描述,再与正文一起切块、嵌入。提问时检索到的可能是段落、表格或图片描述。

局限

解析错了,后面的检索都发生在错误文本上。直接做多模态检索则依赖专门模型,和现有的文本向量库不一定兼容。

在链路中的位置

主要改索引和入库。检索、重排序和生成仍可沿用文本 RAG 的后半段。

详解

「详解」根据 Datawhale《All-in-RAG》 的 多模态嵌入 改写,有删节和重组,未包含原教程的代码、图片和练习。原教程与本节详解均按 CC BY-NC-SA 4.0 许可提供:使用时需署名并标明修改,不得用于商业目的,再次改编须以相同许可共享。

关键信息可能不在连续正文里

图表、扫描件、界面截图和版面位置经常承载主要事实。先 OCR 成纯文本再嵌入,会丢失行列关系,也会把识别错误写进索引。多模态嵌入希望查询文本能直接和图像、页面处于可比较的空间。

图文需要被放进同一个空间

CLIP 用大量图文对做对比学习:匹配的图像和文字靠近,不匹配的配对远离。检索时可以用文字向量找图像,也可以用图像向量找文字。它说明多模态检索的关键不是再训练一个生成器,而是让不同模态能够互相度量。

BGE-Visualized 这类模型把视觉能力和文本嵌入接在一起,能对图片、文本或图文组合产生向量。使用时,入库和查询必须使用同一模型与同一预处理;只更换其中一边,相似度就没有意义。

两条实现路线

第一条直接保存页面或图片向量,适合表格、图纸和扫描件。ColPali 是这一路的后续发展:整页作为图像编码,再用后期交互匹配。第二条仍走文本索引,但在入库时识别版面、表格和图片,为图片写描述,并把描述和正文一起切块。

第一条保留视觉信息,依赖专门模型。第二条能复用现有文本向量库,质量则取决于解析和描述。一个系统可以按文档类型分路:普通文章走文本,复杂版面走页面图像。