ColPali: 利用视觉语言模型实现高效文档检索 👀

社区文章 发布于 2024 年 7 月 5 日

使用视觉语言模型 (Vision LLM) + 延迟交互来改进文档检索(RAG、搜索引擎等),仅使用文档页面的图像表示(论文)!

背景

为了提高 LLM 的问答能力,通常最好先在网上或外部文档集(PDF)中搜索信息,然后再让 LLM 综合出一个有依据的回答(RAG)。在实践中,这些用于 PDF 文档的检索流程对性能有巨大影响,但并非易事……

  1. 对扫描的 PDF 运行光学字符识别(OCR)
  2. 运行文档布局检测模型,将页面分割成段落、图表、标题
  3. 重建页面的结构和阅读顺序
  4. (可选)使用资源密集型的专门模型为图表、图像和表格添加自然语言描述
  5. 使用分块策略,以连贯的方式分割或合并文本段落
  6. 使用强大的神经嵌入模型(BGE M3)将文本块映射到有语义意义的向量空间
  7. 存储向量索引以备将来检索使用

尽管有工具可以简化这个流程(UnstructuredSurya),但整个索引过程可能很慢,容易传播错误,并且难以考虑页面中更多的视觉元素(表格、图表、图像,还有字体等)。

我们的构想?直接嵌入页面图像!

image/jpeg

实际上,这并不像我们说得那么简单!我们的方法 ColPali 是由视觉语言模型的最新进展(特别是谷歌苏黎世团队的 PaliGemma 模型)所实现的,并利用了 Omar Khattab 在 ColBERT 中提出的通过延迟交互机制进行多向量检索的方法。

让我们用更多技术细节来分解一下!

模型架构

许多检索系统可以分为两个部分。

  • 在索引阶段,语料库中的所有文档都以离线方式进行索引。
  • 在查询阶段,用户查询以低延迟与预先计算的文档索引进行匹配。
因此,高效检索系统的重要要求是 (R1) 良好的检索性能,(R2) 合理的索引速度,(R3) 查询时的低延迟。

在索引期间,标准的“双编码器”神经检索系统首先解析文档以提取语义连贯的文本段落,然后将它们映射到一个旨在表示文本语义的密集向量空间,并存储生成的“嵌入”。在查询期间,查询被转换为其密集向量表示,然后可以低延迟地检索具有最大余弦相似度的文档段落向量。

image/png

我们的方法 ColPali 有点不同!

在索引过程中,我们旨在通过直接使用文档页面的图像(“屏幕截图”)来去除许多复杂性。

一个视觉语言模型(PaliGemma-3B)通过将图像分割成一系列补丁来对其进行编码,这些补丁被馈送到一个视觉变换器(SigLIP-So400m)。这些补丁嵌入被线性投影并作为“软”词元输入到一个语言模型(Gemma 2B)中,以便在语言模型空间中获得高质量的上下文相关的补丁嵌入,然后我们将其投影到一个较低的维度(D=128)以实现更高效的存储。因此,我们为每个页面图像构建并存储一个多向量文档表示。

在运行时查询中,用户查询由语言模型嵌入,以获得词元嵌入。我们能够运行一个 ColBERT 风格的“延迟交互”(LI)操作,以高效地将查询词元与文档补丁匹配。为了计算 LI(查询, 文档) 分数,对于查询中的每个词,我们搜索具有最相似 ColPali 表示的文档补丁。然后,我们将查询中所有词的最相似补丁的分数相加,得到最终的查询-文档分数。直观地说,这种延迟交互操作允许查询的所有词与文档补丁之间进行丰富的交互,同时又得益于更标准的(双编码器)嵌入模型所能实现的快速匹配和离线计算卸载。

有了 ColPali,我们因此受益于快速的索引速度(R2),而不会显著影响查询延迟(R3)!但性能(R1)如何呢?

ViDoRe

虽然存在很棒的基准测试来评估文本嵌入模型,但我们发现在许多实际用例中,前期的文档处理流程远比嵌入模型本身重要得多!虽然文档通常依赖视觉元素来更有效地向人类读者传达信息,但纯文本系统几乎没有利用这些视觉线索。据我们所知,没有基准测试像人类一样同时考虑文本和视觉文档特征来评估文档检索方法。

为此,我们引入了 ViDoRe,即视觉文档检索基准,以评估检索器在文档中检索视觉丰富信息的能力,其任务涵盖了各种主题、模态(图表、表格、文本)和语言!

image/png

ViDoRe 链接到一个 HF 排行榜 https://huggingface.co/spaces/vidore/vidore-leaderboard,我们希望看到许多模型尝试这种新的“在视觉空间中检索”的范式!

结果

训练细节

我们使用 PaliGemma 的预训练权重来初始化视觉语言模型骨干,并随机初始化最后的投影层。为了方便训练,我们在语言模型的注意力权重以及线性投影层中添加了低秩适配器。我们的训练数据集由(查询,文档图像)对组成,我们从两个主要来源获取。一方面,我们重新利用了视觉问答数据集,并使用原始问题作为我们的查询,关联的图像作为黄金标签。为了增加训练集的覆盖范围和多样性,我们还收集了数以万计的许可宽松的 PDF 文档,涵盖了广泛的主题,并使用强大的 Claude Sonnet Vision 模型综合生成相关查询。总共,我们收集了约 10 万对数据,并通过批内对比损失对我们的模型进行微调,尝试最大化正确(页面,查询)对的匹配分数与错误对的分数之间的差异。

ColPali 结果

在 ViDoRe 上,ColPali 的性能优于所有其他评估的系统,包括那些使用非常强大的专有视觉模型(Claude Sonnet)为所有视觉元素添加描述的基线!

image/png

在视觉上更复杂的基准测试任务上,差异尤其明显,例如分别代表信息图、图表和表格的 InfographicVQA、ArxivQA 和 TabFQuAD。然而,ColPali 模型在所有评估的领域和语言中,对以文本为中心的文档的检索效果也更好,这使得我们的方法成为 ViDoRe 上整体性能最佳的文档检索模型!

可解释性

除了速度和性能,ColPali 的另一个有趣特性是,它能够可视化文档的哪些补丁在给定查询的情况下脱颖而出。这里的术语 <hour> 匹配了包含“hourly”等词语的补丁,也匹配了代表时间的 x 轴,展示了良好的图表理解能力!

image/png

结论

这篇博文已经够长了,但好消息是,还有大量的资源、信息和消融研究存在,并且会不断推出!

📝 论文:https://arxiv.org/abs/2407.01449

🗃️ 基准测试:https://huggingface.co/vidore

👀 模型:https://huggingface.co/vidore/colpali

💻 基准测试代码:https://github.com/illuin-tech/vidore-benchmark

💻 训练代码:https://github.com/ManuelFay/colpali

✖️ 第一作者的 X (推特) 账号:@ManuelFaysse, @sibille_hugues, @tonywu_71

引用

@misc{faysse2024colpaliefficientdocumentretrieval,
      title={ColPali: Efficient Document Retrieval with Vision Language Models}, 
      author={Manuel Faysse and Hugues Sibille and Tony Wu and Bilel Omrani and Gautier Viaud and Céline Hudelot and Pierre Colombo},
      year={2024},
      eprint={2407.01449},
      archivePrefix={arXiv},
      primaryClass={cs.IR},
      url={https://arxiv.org/abs/2407.01449}, 
}

致谢

这项工作主要源于 CentraleSupélec 和 Illuin Technology 之间的学术-产业合作,并有来自 Equall.ai 和 ETH Zürich 的参与者。它得益于 CINES ADASTRA 的计算资助(拨款 2024-AD011015443)。由 Manuel FaysseHugues SibilleTony WuBilel OmraniGautier ViaudCéline HudelotPierre Colombo 共同完成。

社区

此评论已被隐藏
此评论已被隐藏

这种方法非常吸引人,
非常感谢您提供的这种方法,
我想知道如何实现您使用的“视觉定位”概念,即高亮显示与用户查询相关的信息特定区域,就像这个例子一样。

image.png

在此先感谢您

page_4.png

用 markdown 结构的方法给我表格

此评论已被隐藏(标记为无关话题)

注册登录 以发表评论