在大语言模型(LLM)中,如何有效地检索和利用信息是一个挑战。这篇文章通过改进检索器,帮助模型更准确地回答问题,这对于提高AI系统的智能性和可靠性至关重要。
我们翻译解读最新论文:为RAG实现最佳搜索和检索,文末有论文信息。作者:张长旺,图源:旺知识
检索增强生成(RAG)是一种有前景的方法,用于解决与大型语言模型(LLMs)相关的一些记忆挑战。RAG流程由两个独立的系统组成:检索器和阅读器,每个系统对下游任务性能的影响尚不清楚。在这里,我们致力于理解如何为常见任务(如问题回答(QA))优化检索器以用于RAG流程。我们进行了实验,重点关注检索与RAG在QA和属性QA上的性能之间的关系,并揭示了许多对开发高性能RAG流程的实践者有用的见解。例如,降低搜索精度对RAG性能的影响很小,同时可能提高检索速度和内存效率。
1 引言
检索增强生成(RAG)因其能够解决使用大型语言模型(LLMs)的一些挑战而越来越受欢迎,包括幻觉和过时的训练数据。RAG流程由两个不同的组件组成:检索器,它从给定的语料库中识别与查询相关的文档;阅读器,通常是一个LLM,它被提示使用查询、检索到的文档文本和指示使用此上下文生成其响应。然而,目前尚不清楚RAG流程在下游任务上的性能如何归因于这些组件。在这项工作中,我们研究了检索对下游性能的贡献。为此,我们评估了分别训练的检索器和LLM组件的流程,因为从头到尾训练检索增强模型既资源密集型,也模糊了检索器本身贡献的界限。我们的目标是解决使实践者能够为RAG流程设计检索系统的问题。例如,典型的搜索和检索设置在RAG系统中的弱点是什么?哪些搜索超参数对RAG任务性能重要?
我们选择评估RAG流程在标准QA和属性QA上的性能。在属性QA中,模型被指示在做出事实声明时引用提示中提供的支撑文档。这项任务因其潜在的提高生成文本的可信度和可验证性而变得有趣。
我们做出了四项贡献:
我们展示了QA性能和引用指标如何随着检索到的文档数量的增加而变化,为RAG的属性QA文献增加了新数据。
我们描述了当上下文中包含较少的事实文档时,RAG任务性能如何受到影响。
我们展示了通过降低检索器中的近似最近邻(ANN)搜索精度来节省检索时间对任务性能只有轻微影响。
我们展示了将噪声注入检索结果会导致性能下降。我们没有发现任何设置能够超越事实标准,与之前的报告相反。
2 背景
RAG流程由两个组件组成:检索器和阅读器。检索器组件从外部知识库中识别相关信息,这些信息与查询一起被包含在阅读器模型的提示中。这个过程已被用作昂贵的微调的有效替代方案,并已显示出减少LLM幻觉。
检索模型。密集向量嵌入模型已成为标准,因为它们比依赖于项频率等度量的稀疏检索器性能更好。这些密集检索器利用最近邻搜索算法找到与查询嵌入最接近的文档嵌入。在这些密集模型中,大多数检索器将每个文档编码为单个向量。然而,允许文档项和查询项之间交互的多向量模型,如ColBERT,可能更适用于新数据集。在实际应用中,大多数开发人员参考文本嵌入排行榜或一般信息检索(IR)基准,如BEIR,来选择检索器。
近似最近邻(ANN)搜索。现代向量嵌入包含≥1024维,导致搜索性能严重下降(例如,筛选约170GB的维基百科等通用知识库),这是由于维度的诅咒。因此,RAG流程通常采用近似最近邻搜索作为一种折中方案,选择更快的搜索时间以牺牲一些准确性为代价。尽管这种做法很常见,但文献中很少有讨论关于配置ANN搜索的最佳参数,以及在准确性和速度之间平衡的最佳方式。降低搜索精度可以在搜索速度和内存占用方面带来巨大的改进(例如,通过消除常见的重新排名步骤)。
3 实验设置
我们使用两个指令调整的LLMs进行实验:LLaMA(Llama-2-7b-chat)和Mistral(Mistral-7B-Instruct-v0.3)。没有进行进一步的训练或微调。我们避免额外的微调,以确保我们的结果直接适用于当前跨行业应用中部署的RAG流程。额外的实验细节在附录A.1中。
问题回答(QA)和属性QA。对于标准QA任务中的查询,RAG流程提示LLM基于检索到的文档列表中的信息生成答案。在属性QA中,LLM还被要求明确引用(例如,通过文档ID)一个或多个使用的文档。
提示。按照先前的工作,模型通过少量学习了解如何用引用归因答案的期望格式。我们使用2次提示对Mistral进行训练,因为它的上下文窗口更长,对LLaMA使用1次提示。我们保持实验中相同的提示顺序:系统指令、检索到的文档列表,然后是查询(见图1)。在评估没有归因的QA时,给出0次提示。
3.1 检索
我们选择评估两个高性能的开源密集检索模型。对于单向量嵌入,我们依赖BGE-base来嵌入文档(bge-base-en-v1.5,BEIR15得分为0.533)。我们使用英特尔SVS库在这些嵌入上进行搜索,以实现高效的密集检索,利用其最先进的基于图的ANN搜索性能。对于多向量搜索,我们使用了ColBERTv2,它利用BERT嵌入来确定文档和查询中的项之间的相似性(BEIR15得分为0.499)。
3.2 数据集
ASQA是一个长形式QA数据集,用于评估模型在自然发生的模糊问题上的性能。它由948个查询组成,地面真实文档基于2018年12月20日的维基百科转储,包含2100万个段落。我们使用(5)提供的五个事实文档,这在他们的RAG流程中产生了最佳性能。
QAMPARI是一个开放域QA数据集,其中1000个查询有多个答案,可以跨越多个段落找到。它被设计为对检索和生成都具有挑战性。与ASQA一样,我们使用(5)提供的五个事实文档,来自2018年的维基百科转储。
自然问题(NQ)是一个包含100k个实际提交给谷歌搜索引擎的问题的数据集。我们遵循(26)并使用KILT(27)版本的数据集,它包含2837个查询,由2019年维基百科转储的1.12亿个段落支持。它包括一个简短的答案和每个查询的至少一个事实段落。尽管NQ传统上不对应于属性QA,我们通过简单地提示语言模型用包含在上下文中的文档引用来支持声明,将其适应到这项任务(见图1)。
3.3 指标
对于检索,我们报告召回@k,它反映了在k个文档中检索到的事实段落的百分比。我们也将其称为检索器召回或事实文档召回。当使用ANN时,我们还报告搜索召回@k,即在k个近似最近邻中检索到的k个确切最近邻(根据检索器相似度)的百分比。
通过字符串精确匹配召回(EM Rec.)来量化QA任务的正确性,或者数据集中提供的短答案作为生成输出的确切子串的百分比。注意,对于NQ,我们只报告前五个事实答案的召回。
为了报告引用质量,我们使用一个与(4)完全一致的过程,遵循ALCE框架中的引用指标:引用召回和引用精确度。引用召回是衡量每个生成的声明是否包含引用(s)的指标。引用精确度量化每个单独引用是否必要以支持声明。
置信区间。所有指标都是为数据集中的每个查询计算的,并在所有n个查询中平均。为了描述分布的扩散,我们使用自助法计算95%置信区间(CIs)。也就是说,我们从真实分布中替换地重新采样n个查询,计算平均值,并重复这个过程1000次自助迭代。然后我们找到这个分布的2.5和97.5百分位数,以产生95%置信区间。请注意,这些自助CIs可以用来确定两个分布之间的差异是否具有统计学意义。
4 结果
我们首先分析应该在LLM上下文窗口中包含多少检索到的文档以最大化选定QA任务的正确性。这显示为检索到的最近邻数量k的函数。包含检索到的文档缩小了闭卷情况(k=0)和仅事实文档天花板之间的性能差距。然而,评估的检索系统的性能仍然明显落后于理想状态。ColBERT通常以小幅度胜过BGE。
正确性在QA上开始在5-10个文档左右趋于平稳。我们发现,对于所有三个数据集,Mistral在10个或20个文档时表现最佳(图2)。LLaMA在ASQA和NQ上表现最佳时k=4或5,但在QAMPARI上k=10(附录图8)。这种LLM之间的差异可能是由于LLaMA的上下文窗口更短。我们还发现,在k>10之前,将引用提示添加到NQ几乎不会改变性能。表1和表2显示,引用召回通常在与QA正确性相同的点达到峰值,而引用精确度往往在更低的k达到峰值。由于引用精确度衡量的是每个声明需要多少引用文档,这表明向LLM展示更多文档(即在更高的k)会导致更多额外的或不必要的引用。其他数据集和模型的引用指标在A.4中。
我们进一步调查了事实文档在检索到的文档排名列表中的位置。我们发现事实文档通常排在7-13个最近邻之间。鉴于这些结果,我们在所有随后的分析和实验中使用5-10个上下文文档,因为这些通常是QA性能的好设置,即使错过了一些事实文档。
基于上述结果,我们假设RAG流程中包含的理想文档数量与在该k中检索到的事实文档数量直接相关。这在文献中相对未被探索,因为大多数人已经研究了LLM如何利用上下文并忽略非事实文档。由于我们观察到跨数据集的类似趋势,我们为了简单起见从以下结果中丢弃了QAMPARI。我们重新分析了结果,针对提示中的k=10个文档,并简单地根据检索器召回(即检索到的事实文档的百分比)对查询进行分箱。
只包含一个事实文档可以大大提高正确性。我们观察到,与没有事实文档相比,提示中只有一个事实文档的查询的EM召回有显著提高。当使用Mistral(图3)或LLaMA(附录图9)作为阅读器模块时,情况也是如此。我们注意到,这种趋势也在(26)中被观察到。
更多的事实文档与更高的正确性相关。我们发现,提示中包含的事实文档数量稳步增加,QA正确性指标也随之增加。这在图3中为Mistral说明了,LLaMA在图9中说明了。我们注意到,平均正确性的差异开始在检索器召回约为0.5时趋于平稳。这支持了假设,即上下文窗口中的理想文档数量与该上下文窗口中的事实文档数量直接相关,尽管可能通过更多的非事实文档增加了潜在的噪声。
4.1 事实文档召回和搜索精度范围
接下来,我们研究了近似搜索如何影响RAG在QA任务上的性能。特别是,由于先前的证据表明事实文档对性能至关重要,我们进行了两组实验,以了解搜索召回和事实文档召回如何影响QA性能。首先,我们取事实集,并替换其中一些以达到0.9、0.7或0.5的事实文档召回目标。对于每个查询,我们对事实文档的一个子集进行采样,以便所有查询在数据集中的平均事实召回达到目标,并用最近的非事实邻居填充其余的10个文档。其次,我们将ANN搜索算法设置为实现0.95、0.9和0.7的搜索召回目标(细节在附录A.1.1中),并将这些与BGE-base的精确搜索(召回1.0)进行比较。图12显示了这两组实验的结果。
操纵ANN搜索召回只会导致QA性能的轻微下降。我们发现事实文档召回(图12,左)是QA性能的一个比搜索召回(图12,右)更大的因素。将搜索召回@10设置为0.7只会与使用穷尽搜索相比导致事实文档召回下降2-3%(表3)。虽然我们的数据限于单一密集检索器,但它是第一次实验(据我们所知)证明实践者可以利用ANN搜索的速度和内存占用优势,而对RAG任务性能几乎没有负面影响。
事实文档召回(左)对RAG QA性能的影响大于搜索召回(右)。RAG流程使用Mistral和BGE-base。阴影条是使用每个查询的所有事实文档的天花板性能。误差条是95%自助置信区间。
随着可用支持文档数量的减少,引用指标通常会降低。我们观察到,文档召回和搜索召回的减少会导致引用指标的减少(完整结果在附录A.6)。与QA性能一样,文档召回的减少比搜索召回的减少对引用性能的影响更大(表4)。然而,这种效果在ASQA数据集上不太明显,ASQA数据集更可能有多个事实证据文档包含单个答案(A.6)。
随着文档召回和搜索召回的减少,引用召回减少(NQ数据集,BGEbase检索器与Mistral阅读器)。值在括号中是95% CIs。
4.2 注入不同相关性的噪声文档
接下来,我们探索了包含在上下文窗口中的非事实文档的相关性如何影响RAG流程在QA任务上的性能。我们定义相关性为查询和检索文档之间的相似性,由相应的检索器定义。先前的工作(7)对查询-文档相似性提出了两项主张:(1)随机非事实文档提高了QA性能,超过了仅事实文档的上限;(2)高度相似的非事实文档分散注意力,降低了QA性能。
为了调查主张1,我们将不同相似性的文档添加到事实集或5个最相似文档(最近邻索引0-4)中。首先,我们使用BGE-base检索每个ASQA查询的数据集中的所有文档,为每个邻居分配一个相似性分数。我们按这个分数对检索到的文档进行排序,并将它们分成十个等大小的箱子。我们定义第一箱中的文件为10百分位噪声,第二箱为20百分位噪声,依此类推。我们从每个箱子中随机选择5个文档,并将它们添加到提示中,放在事实文档或BGE-base检索到的文档之后。这个设置遵循了(7)中的实验。请注意,当在事实文档上注入额外的噪声时,事实文档召回(但不是准确性或F1)仍然是1.0。
我们的证据并不明确复制(7)中关于注入噪声的主张。与主张1相反,我们发现添加噪声文档,无论它们的噪声百分位如何,都会降低正确性(图5)和引用质量(A.7)。图5还显示,随着文档越来越不相似,性能变化没有一致的趋势。然而,如果只取最近的100个邻居,可能会观察到主张2——非常相似的邻居比相似度较低的邻居更具干扰性,因为相似性已知会随着更远的邻居急剧下降(见附录图6)。因此,我们重复了一个类似的实验,样本来自前100个邻居,以测试这一主张。我们在ASQA上比较了Mistral使用5个事实文档的性能与添加第5-10个或第95-100个最近邻居时的性能(表5)。尽管QA性能仍然下降,但影响较小——注入更相似的邻居只使性能下降了1个百分点。总体而言,注入更接近的邻居似乎并不比更远的邻居更具破坏性。然而,有趣的是,对于更远的邻居,引用分数有所提高。当使用与(7)相同的LLM时,观察到类似的QA性能模式(附录A.7)。
这些结果与4.1一致。由于ANN图搜索的参数化(A.1.1,降低搜索召回增加了与查询相似的“噪声”非事实文档。在这里和4.1中,我们观察到注入高度相似的邻居只会轻微降低下游任务性能。
表5:Mistral在ASQA上的性能,添加基于它们与查询相似性排名的非事实(噪声)文档(在第5-100个最近邻居之间)。QA性能仍然下降,但影响较小——注入更相似的邻居只会使性能下降1个百分点。总体而言,注入更接近的邻居似乎并不比更远的邻居更具破坏性。然而,有趣的是,对于更远的邻居,引用分数有所提高。当使用与(7)相同的LLM时,观察到类似的QA性能模式。
5 结论
总体而言,我们的实验表明,能够检索到更多事实文档的模型将最大化QA性能。我们还观察到,利用ANN搜索以较低的召回率检索文档,只会导致轻微的QA性能下降,这与事实文档召回的微小变化相关。因此,在实践中,以较低的搜索召回率运行是一个可行的选项,可能会增加速度和内存效率。我们还发现,与先前的研究(7)相反,注入噪声文档与事实文档或检索到的文档一起会降低与事实上限相比的正确性。我们还发现它对引用指标的影响不一致。这表明文档噪声对RAG性能的影响需要进一步研究。
未来的工作应该在其他设置中测试这些发现的普遍性。了解近似搜索与精确搜索如何影响多向量检索器(如(13))将很有趣,特别是鉴于它们通常的良好性能。此外,我们只评估了检索器和阅读器分别训练的系统。从头到尾训练的RAG系统(例如Fusion-in-Decoder(FiD)模型)可能不那么依赖事实文档,以至于检索指标不是有用的相关性标记。
作者:张长旺,图源:旺知识
参考资料
标题:Toward Optimal Search and Retrieval for RAG
作者:Alexandria Leto, Cecilia Aguerrebere, Ishwar Bhati, Ted Willke, Mariano Tepper, Vy Ai Vo
单位:University of Colorado Boulder, Intel Labs
标签:人工智能、自然语言处理、检索增强生成(RAG)、大型语言模型(LLMs)、信息检索
概述:文章研究了如何优化RAG流程中的检索器,以提高问题回答(QA)任务的性能。
链接:https://arxiv.org/abs/2411.07396