VisRAG: Vision-Based Retrieval-Augmented Generation on Multi-Modality Documents
论文链接:https://arxiv.org/pdf/2410.10594

一、摘要

检索增强生成(RAG)是一种有效的技术,它使得大型语言模型(LLMs)能够利用外部知识源进行生成。

然而,当前的RAG系统仅基于文本,无法利用布局和图像等在现实世界多模态文档中扮演关键角色的视觉信息。在本文中,我们介绍了VisRAG,该系统通过建立基于视觉-语言模型(VLM)的RAG流程来解决这一问题。

在这个流程中,不是首先解析文档以获取文本,而是直接使用VLM将文档作为图像进行嵌入,然后进行检索以增强VLM的生成能力。与传统的基于文本的RAG相比,VisRAG最大化了保留和利用原始文档中的数据信息,消除了解析过程中引入的信息损失。

我们收集开源和合成数据来训练VisRAG中的检索器,并探索多种生成方法。实验表明,VisRAG在检索和生成阶段都优于传统的RAG,实现了比传统基于文本的RAG流程高出25-39%的端到端性能提升。

进一步分析显示,VisRAG在利用训练数据和展示强大的泛化能力方面表现出色,使其成为处理多模态文档的RAG的有前景的解决方案。

VisRAG | 面向多模态文档的视觉RAG_深度学习


[图1 TextRAG (left) vs. VisRAG (right)]

二、方法

检索增强生成

一个典型的检索增强生成(RAG)流程包括一个检索器和一个生成器,两者都基于大型语言模型(LLMs)。这个流程操作一个知识库,该库被处理成用于检索和生成的单元,表示为,其中是检索单元的数量。

给定一个文本查询和检索库,检索器的功能可以表示为,它接受和作为输入,并产生一个候选集。为了实现高效搜索,知识库中的单元预先编码成嵌入。

在RAG流程的推理过程中,应用近似最近邻(ANN)搜索来检索,它作为生成的知识源。生成过程可以定义为一个函数,其中代表答案,表示LLM生成器。这是通过用查询和检索到的单元提示LLM来生成答案实现的。

如图1(左)所示,传统的检索增强生成框架(TextRAG)通常使用基于文本的单元进行检索和生成。然而,在现实世界的场景中,数据常常出现在复杂的多模态文档中,需要一个额外的解析步骤来获取文本。

在本文中,我们提出使用页面作为检索和生成的基本单元,该页面直接被视觉语言模型(VLMs)作为图像处理,检索和生成过程中不需要进一步处理。在后续章节中,我们将“页面”和“文档”这两个术语交替使用。

VisRAG:基于视觉的检索增强生成

检索

VisRAG的第一阶段,VisRAG-Ret,旨在根据查询从语料库中检索一组页面。我们遵循文本密集型检索模型中的双编码器范式,但使用视觉语言模型(VLM)而不是大型语言模型(LLM)来编码查询和页面。

具体来说,查询和页面在VLM中分别作为文本和图像进行编码,产生一系列隐藏状态。为了得出最终的嵌入,并且考虑到我们使用具有因果关注机制的生成型VLM,我们采用了位置加权平均池化法对最后一层VLM隐藏状态进行聚合,给予后面的词语更高的权重

VisRAG | 面向多模态文档的视觉RAG_LLM_02

在此方程中,是第个隐藏状态,是序列长度,是第个权重,是查询或页面的嵌入。相似度得分是通过查询和页面嵌入的余弦相似度计算的。VisRAG-Ret使用InfoNCE损失进行优化:

VisRAG | 面向多模态文档的视觉RAG_LLM_03

其中是查询的正文档,是查询q的负文档集,是查询与文档之间的相似度得分,是温度参数。

生成

VisRAG的第二阶段,VisRAG-Gen,专注于使用视觉语言模型(VLM)根据用户查询和检索到的页面生成答案。我们提出以下机制,以使VisRAG-Gen能够处理中多个检索到的页面以进行生成。

页面拼接。一种直接的方法是将中的所有页面合并成一张单一的图片,以适应大多数只接受单一图片输入的视觉语言模型(VLM)。具体来说:

VisRAG | 面向多模态文档的视觉RAG_RAG_04

其中是一个接受带有文本提示的单一图片的视觉语言模型(VLM),是图片拼接操作。在本文中,我们尝试了水平拼接。

权重选择。另一种方法是要求视觉语言模型(VLM)为前k个页面中的每一个生成一个答案,并选择一个置信度最高的作为最终答案。最终置信度被定义为答案的加权生成概率:其中是基于单一文档条件下生成答案的困惑度的倒数计算的,而是归一化的检索得分:

VisRAG | 面向多模态文档的视觉RAG_RAG_05

VLMs接受多张图片。一些最近的视觉语言模型,如MiniCPM-V 2.6和Qwen-VL 2被设计和训练用于接受多张图片作为输入,以执行跨图片推理。这种能力可能对生成有用,因为所需信息可能位于检索到的文档集中的单一页上,适用于单跳问题,或分布在多个页面上,适用于多跳问题。

具体来说,我们有:

VisRAG | 面向多模态文档的视觉RAG_RAG_06

其中是接受带有文本提示符的多个图像的VLM。

VisRAG | 面向多模态文档的视觉RAG_大模型_07


[表1 我们从视觉问答(VQA)数据集中收集数据用于训练和评估,并合成额外的查询文档对用于训练]

数据构建

为了有效地构建和评估多模态文档上的RAG(可重复使用的算法组件)管道,我们使用视觉问答(VQA)数据集和合成数据的组合来构建我们的数据集。我们构建的数据集的统计数据在表1中提供。

数据来源。我们从一系列视觉问答(VQA)数据集中收集问题-文档对,针对不同类型的文档:MP-DocVQA用于工业文档,ArXivQA,ChartQA,InfographicsVQA和PlotQA用于各种图表类型,以及SlideVQA用于演示幻灯片。

所有数据集的问题都可以使用单一文档(页面)回答,除了SlideVQA,它包括需要多页信息的多跳问题。我们遵循原始数据集的训练-测试划分,除了MP-DocVQA和InfographicsVQA,我们将验证划分作为我们的评估集。

此外,我们通过从在线源收集公开可用的PDF文件并使用GPT-4o生成查询来增强我们的训练集。我们通过从训练和评估集合中收集与每个查询相关的正向文档来组建检索语料库。

查询过滤。从VQA数据集中提取的一些查询是依赖上下文的,这些查询缺乏对特定实体的具体性。例如,“会议在哪里举行?”的回答会根据上下文文档而变化。

在开放式检索任务中使用这类依赖上下文的查询是无效的,因为它们缺乏强烈的文档具体性。为了解决这个问题,我们实施了一个额外的过滤阶段,以移除这些依赖上下文的问题,其中使用人工注释的上下文样本借助llama-3-8binstruct来生成分类标签。表1显示了跨数据源上下文依赖问题的显著减少。

评价指标。对于检索,我们使用MRR和召回率来评估性能。对于生成,与应用于源数据集的方法一致,我们报告答案准确性,采用宽松的精确匹配度量标准,允许数字回答有5%的误差范围。

三、实验方法

文档解析。为了评估VisRAG与TextRAG的性能比较,我们采用了特定的文本提取方法。

第一种方法,在后续文本中称为“(OCR)”,是一个初始利用PPOCR来识别文本区域的管道,然后结合垂直对齐和水平邻近的文本框以减少碎片化。

第二种方法,称为“(Captioner)”,是一种端到端的基于模型的方法。在这种方法中,我们应用MiniCPM-V 2.0,对配对的(文档图像,提取的文本)数据进行微调,以直接从文档图像中解析文本。

检索实验。VisRAG-Ret是一个基于MiniCPM-V 2.0构建的文档嵌入模型,这是一个视觉-语言模型,将SigLIP作为视觉编码器,MiniCPM作为语言模型整合在一起。

为了确保公平的比较,我们将实验组织成三种设置:现成的、跨领域的和领域内的,如下所述:

现成的:我们直接在提取的文本上评估流行的文本和图像检索模型,包括BM25(OCR),一种词汇模型;bge-large-en-v1.5(OCR)和NV-Embed-v2(OCR),这是两种最先进的文本嵌入模型,大小分别为335M和7.85B;以及SigLIP,一种CLIP风格的视觉模型,用作MiniCPM-V系列的编码器。

跨领域:这一类别的模型仅在合成数据上进行训练,并在VQA数据集上进行评估,缺乏领域内的监督,以此展示模型的泛化能力。这些模型包括文本模型MiniCPM(OCR)、MiniCPM(Captioner)和视觉模型SigLIP。MiniCPM(OCR)和(Captioner)是基于MiniCPM的文本嵌入模型,它们在提取的文本上进行训练和评估。

领域内:这一类别的模型在VQA训练数据和合成数据的混合数据上进行训练。我们评估与跨领域设置相同的一组模型,以展示在有监督标签可用时的模型性能。我们还在我们的评估数据上运行ColPali。ColPali是一个页面嵌入模型,能将一页内容编码成多个向量。其训练集包括其自己的合成数据以及ArxivQA、DocVQA和InfographicsVQA。

生成实验。为了评估生成性能,我们固定检索模型为VisRAG-Ret,并报告各种生成模型和方法的性能。对于VisRAGGen,我们比较了仅接受单一图像的单图像VLM MiniCPM-V 2.0与多图像VLM MiniCPM-V 2.6和GPT-4o的性能。

MiniCPM-V 2.6是MiniCPM-V 2.0的升级版,整合了Qwen2-7B作为语言模型,并支持多图像输入。我们评估了在单图像VLM上进行页面连接和加权选择的性能。

此外,我们还报告了基于文本的生成基准线的性能,包括MiniCPM(OCR)和GPT-4o(OCR),这些方法仅使用提取的文本进行生成。对于所有实验,我们报告了使用前1、前2和前3名检索的文档的结果,以及“Oracle”条件下的结果,其中模型仅提供正面文档以显示性能上限。

实现细节。VisRAG-Ret通过使用批内负样本在8个NVIDIA A100 80GB GPU上微调一个epoch,批大小为128。方程2中的温度参数设置为0.02。基线检索器使用相同的超参数进行微调,文本基线利用提取的文本数据作为文档侧输入。

四、摘要

总体表现

检索性能。在这个实验中,我们将VisRAG-Ret与

(a)现成模型以及在

(b)跨领域设置中的训练基线进行比较,在此设置中我们仅利用合成数据;以及在

(c)领域内设置中的训练基线进行比较,在此设置中我们利用领域内和合成的训练数据。

VisRAG | 面向多模态文档的视觉RAG_人工智能_08


[表2 在MRR@10中的整体检索性能]

如表2(a)(b)所示,VisRAG-Ret在跨领域数据上的训练表现超越了所有现成的基线模型,包括文本和视觉模型。它显著优于BM25和bgelarge,并超越了NV-Embed-v2,这是一个拥有7.85B参数的最先进的文本检索模型。

需要注意的是,bge-large和NV-Embed-v2是在数百万的查询-文档对上训练的,这比我们的训练数据多10倍。尽管bge-large在如MTEB等基准测试上表现优于BM25,但在我们的数据集上却未能表现良好,这表明在干净文本上训练的基于文本的嵌入模型在处理真实世界文档中解析的文本时存在困难。

如表2(b)©所示,当使用相同的数据设置进行训练时,VisRAG-Ret显著优于文本模型MiniCPM(OCR)&(Captioner)和视觉模型SigLIP。

该优势在跨领域设置中更为明显,其中VisRAG-Ret相比于MiniCPM(OCR)和SigLIP分别实现了15%和22%的提升,而在领域内设置中的提升分别为8%和10%。

这表明VisRAG-Ret相比于以文本和视觉为中心的模型具有更好的泛化能力。

值得注意的是,尽管使用相同的VLM MiniCPM-V 2.0进行解析,MiniCPM(Captioner)的表现却不如VisRAG-Ret,这表明直接使用VLM进行编码比用VLM进行解析效果更好。这可以归因于多模态信息转录为文本时不可避免的信息损失。

进一步分析显示,MiniCPM(OCR)和SigLIP在不同数据集上的表现各有千秋:SigLIP在ArxivQA和ChartQA中表现出色,而MiniCPM(OCR)在DocVQA和InfographicsVQA中显著优于SigLIP。

这可能是由于两种模型关注的焦点不同:MiniCPM主要关注文本,而SigLIP则关注视觉信号。

VisRAG-Ret基于MiniCPM-V 2.0构建,采用SigLIP编码器和MiniCPM语言模型,结合了两者的优点,在所有数据集中都表现良好,能够从文档中捕获更全面的信息。

与多向量文档页面嵌入模型ColPali相比,VisRAG-Ret不仅保持了更优的性能,还实现了更好的内存效率。

ColPali使用256KB的数据分布在1030个128维向量中,而VisRAG-Ret仅使用一个2304维向量的4.5KB。这使得VisRAG-Ret更适合在现实世界应用中扩展到数百万或数十亿文档。

VisRAG | 面向多模态文档的视觉RAG_大模型_09

[表3 总体生成性能的准确度]

生成性能。在这个实验中,我们在同一个检索器VisRAG-Ret的基础上应用了一系列基于文本和视觉的生成器和方法,以研究它们在生成给定查询和检索文档的答案方面的有效性。

表3显示了(a)基于文本的生成(TextRAG-Gen)、(b)使用只接受单张图片输入的VLM MiniCPM-V 2.0进行生成、以及(c)使用接受多张图片输入的VLM进行生成的性能。

当模型仅提供真实文档(“Oracle”)时,直接处理文档图像的VisRAG-Gen模型显著优于仅依赖提取文本的RAG-Gen模型。例如,当使用真实文档时,MiniCPM-V 2.0的性能比MiniCPM(OCR)高出36%。

这突显了视觉线索在从文档中提取答案中的重要性,并表明VisRAG-Gen的性能上限高于TextRAG-Gen。

在实际场景中,模型接收到的前1至3个检索文档可能包含噪声,VisRAG-Gen在同一模型系列中始终表现优于TextRAG-Gen。

具体来说,对于只能处理单张图片的MiniCPM-V 2.0,当处理2或3个检索文档时,加权选择方法比页面串联显示出更好的性能。

简单的串联可能会用不必要的信息使VLM不堪重负,而加权选择则基于针对各个文档的多个VLM输出来过滤答案,从而减少信息负担。

TextRAG的流程通常因为更好的信息覆盖而从增加检索文档的数量中受益。然而,尽管加权选择增强了性能的稳健性,使用这种方法时检索文档数量的增加并没有带来显著的性能提升。

值得注意的是,只有最先进的VLM,如处理多张图片的GPT-4o,随着检索文档数量的增加显示出明显的性能提升。这表明在当前的VLM上,对多张图片进行推理仍然是一项挑战性任务。

VisRAG | 面向多模态文档的视觉RAG_人工智能_10

[图2 (a)TextRAG和(b)VisRAG在InfographicsVQA上的pipeline性能]

端到端性能。在这个实验中,我们通过将VisRAG流程与TextRAG流程进行比较,研究了VisRAG的有效性。我们分别使用MiniCPM(OCR)和MiniCPM-V 2.6(OCR)构建TextRAG用于检索和生成,使用VisRAG-Ret和MiniCPM-V 2.6构建VisRAG用于检索和生成。

InfographicsVQA上的性能在图2中进行了视觉表示。值得注意的是,VisRAG在准确检索文档方面的成功率高于TextRAG,并且在从准确检索的文档中生成正确答案的比率上有显著提高。检索和生成阶段的累积改进使总体准确率从22.1%提升到42.7%。

VisRAG | 面向多模态文档的视觉RAG_LLM_11

[图3 使用不同数量的训练样本训练VisRAG-Ret与MiniCPM (OCR)的平均检索性能]

训练数据效率

在RAG流程中,检索作为瓶颈环节,拥有一个有效的检索组件对于维持最佳性能至关重要。在这个实验中,我们通过评估VisRAG-Ret在不同数量的合成训练数据下的性能,即在领域外设置中,研究了VisRAG-Ret的训练数据效率。

如图3所示,当仅在2万个问答对上训练时,VisRAG就能超过bge-large(OCR)。在训练了15万对后,它进一步超过了NV-Embed-v2(OCR),这是一个在数百万精选文本对上训练的8B大小的最新文本嵌入模型。

这突显了VisRAG-Ret在训练数据效率和强大的泛化能力方面的优势,因为所有的模型都是在领域外进行评估的。与使用提取文本进行训练的MiniCPM(OCR)相比,VisRAG-Ret始终能够实现约17%的性能提升,并展示了更稳定的训练过程。

结果显示VisRAG-Ret通过扩大训练数据量有进一步提升性能的潜力。

VisRAG | 面向多模态文档的视觉RAG_人工智能_12

[图4 VisRAG、VisRAG (SigLIP)和TextRAG在不同查询子集上的相对检索和生成性能]

不同数据子集上的性能

在这个实验中,我们评估了图2中定义的VisRAG和TextRAG的检索与生成性能,以及用SigLIP替换VisRAG中的检索器的VisRAG (SigLIP)。

我们通过将查询基于其正面文档的长度(用提取文本的令牌数量衡量)分类,来报告它们在不同数据子集中的表现。提取文本量较大的文档可能会优先考虑文本信息而非视觉内容。

如图4所示,ArxivQA和InfographicsVQA中的查询被划分到根据相关文档长度等大小的区间中。对于每个区间,我们计算并绘制VisRAG与TextRAG之间以及VisRAG (SigLIP)与TextRAG之间的平均性能差异,以比较每个模型相对于TextRAG的表现。

我们观察到,总体上,VisRAG和VisRAG (SigLIP)的相对性能随着相关文档长度的减少而提高。这表明具有视觉编码器的模型能更好地理解强调视觉信息的文档。

然而,VisRAG (SigLIP)在所有数据子集中一致地表现不如VisRAG,并且在某些情况下甚至比TextRAG还差。

相比之下,VisRAG始终表现优于TextRAG,这表明VisRAG中的底层语言模型对于更好地理解通过视觉线索传达的语义至关重要。