检索增强生成(RAG)系统的出现提高了LLMS响应生成的准确性。 它分为两部分:检索和生成。 检索是使用检索机从大量文档中检索与查询最相关或最相似的段落,而生成是 LLMS 为混合查询和检索到的文档生成响应。
最近有很多关于RAG的研究,特别是关于检索组件的研究。 我们今天介绍的文件是从特殊的角度讨论的检索到的文档对 RAG 系统性能的影响。
你可能想说,有什么好讨论的,检索到的文档对性能的影响是很简单的,它一定是和查询相关的,效果越好。
那么,如何为检索文档添加一些噪音呢? 换言之,如果无法查询的文档不可用,对系统性能有何影响?
直观地说,噪声应该对系统性能产生负面影响。
但今天文章中给出的结果相当惊人!
噪声记录不会对系统性能产生负面影响,而是可以显著提高系统精度,最高可达 35%。与查询相关的文档可能是影响模型性能的强大干扰因素。这一发现挑战了对传统信息检索系统的传统理解,其中传统的检索技术可能不是最佳的,需要开发专门的方法来满足语言生成模型和检索集成的特定需求。
标题
the power of noise: redefining retrieval for rag systems
声明:本期**口译为非人类撰写,全文由赛博马利安AI**口译专家代理独立完成,经人工审核和插图后发布。
** 习逍遥科技表示“后台回复”。智能内部测试“获取情报内部测试的邀请链接。
通过检索组件获得的文档可分为三类:相关、相关但未回答和不相关
相关文档包含与查询直接相关的信息,提供直接回答或解释查询的标准数据。 相关但不包含答案文档,虽然不直接回答查询,但在语义或上下文上与主题相关联。 例如,如果有人询问拿破仑马的颜色,那么表达拿破仑妻子马颜色的文件虽然不包含正确的信息,但与它高度相关。 不相关的文档与查询无关,代表检索过程中的一种信息噪声。 1.数据
该实验使用了自然问题 (NQ) 数据集,这是一个从 Google 搜索数据中得出的真实世界查询的大规模集合。 每个数据集条目都包括一个用户查询和一个包含答案的相应维基百科页面。 为了促进自然语言理解和开放领域问答的研究,该数据集提供了一组丰富的现实世界问题和上下文相关的答案。 经过处理,最终数据集由 21,035,236 个文档组成,训练集中有 72,209 个查询,测试集中有 2,889 个查询。
2.文档检索
文档检索器使用 Contriever,这是一种基于 BERT 的密集检索器,它使用对比度损失进行无监督训练。 为了提高在大约2100万份文献的语料库中进行相似性检索的效率,还使用了FAISS IndexFlatip索引系统。 每个文档和查询的嵌入通过平均模型最后一层的隐藏状态来平均。
3.LLM生成
收到查询后,检索器会根据给定的相似度指标从语料库中选择上一个文档。 这些文档以及任务指令和查询构成了 LLM 生成响应的输入。 nq-open 数据集被构造为仅包含答案不超过 5 个单词的查询。 因此,LLM 的任务是从提供的文档中提取最多五个单词的响应。 模型生成始终使用贪婪生成方法,并将最大响应长度设置为 15 个令牌。 LLM 使用支持 4096 个代币的 LLAMA2-7B 和支持 2048 个代币的 Falcon-7B,即 PHI-2-27B 支持 2048 个令牌,MPT-7B 支持几乎无限的上下文长度,但为了公平比较,限制为 2048 个令牌。
为了提高实验设置的清晰度和理解力,将使用简化模式来表示提示的组成。 该模式如下所示:
在此模式中,任务指南 (i) 和查询 (q) 始终位于开头和结尾。 中间部分是可变的,代表不同的上下文元素,这些元素又引用文档(指nq数据集中的原始上下文,包括包含答案并与给定查询相关的维基百科页面段落。 )、相关文档、不包含答案的相关文档以及不相关的文档。这些文档按顺序以不同的数量组合,以测试检索到的文档对 RGA 性能的影响。
相关但没有答案的文档设置为检索器分配了较高分数但不包含答案的文档。下表显示了使用由 ** 文档和不同数量的不包含答案的相关文档组成的提示进行评估时 LLM 的结果。 “far”,"mid","near"第一行“0”表示不相关但不包含答案的文档,相关文档的数量依次增加。 “-表示输入超出了 LLM 支持的输入长度。
从上表可以看出,在检索增强生成系统中,在语义上与查询相关但不包含正确答案的文档可能会对系统性能产生负面影响。当在上下文中仅添加一个相关文档时,准确性可能会下降多达 25%。 普遍的共识是,相关文件通常比不相关的文件更容易被接受,这挑战了传统信息检索系统的常识。
下图是添加不包含答案的相关文档后的输出错误示例,黄色表示具有正确答案的黄金标准文档,很明显,那些相关但不包含答案的文档误导了 LLM 并导致准确性降低。
除此之外,作者还展示了模型对相关但未回答文档和**文档的注意力得分,如下图所示,模型过于关注相关但没有答案文档(最左边)而忽略了**文档(最右边),这可能导致错误的回答。
为了评估RAG系统对噪声的鲁棒性,从语料库中随机抽取一定数量的文档添加到**文档中,称为噪声。 实验结果如下表所示
竟然在存在噪声的情况下,性能不会下降相反,在某些情况下已经有了显着的改善,例如 MPT 提高了 008(增长36%)。Llama2 和 Phi2 距离查询最远"near"当引入噪声时,会显示改进。 然而,在"mid"跟"far"当引入噪声时,模型的性能会下降,但远低于相关文档的情况。 这表明,虽然 llama2 和 phi-2 在处理远离查询的噪音方面是有效的,但它们处理查询附近的无关信息的能力较差。 该实验进一步检查了文档(即包含正确答案的文档)在上下文中的位置对模型性能的影响。 “far”,"mid","near"它们分别表示将 ** 文档放置在不同的位置。 您可以在上面的两个大表中看到它。
实验结果表明,**文档的位置对RAG系统的性能有显著影响。
在添加相关但无应答文档的设置中,当文档靠近查询语句时,模型最准确。 相反,当文档位于上下文的中间或远离查询语句时,模型的准确性会降低。 在与文档无关的设置中,某些模型即使在嘈杂的情况下也能保持或提高性能。 这些发现强调了这样一个事实,即在RAG系统中,检索器需要精心设计,以确保文档的最佳放置,以提高整个系统的准确性
上述实验是在检索标准答案的假设下进行的,但在实际场景中,不可能每次都检索包含答案的文档。 所以作者设置了一个更现实的场景。 给定一个查询,我们检索一组文档,这些文档可以相关或相关,但不包含答案。 将不相关的文档添加到这组检索到的文档中,如下表所示,行表示添加的不相关文档数,列表示检索到的文档数。
实验结果表明,添加无关的文档几乎总是有益的,并且可以提高准确性。 此外,当使用BM25等稀疏猎犬进行实验时,精度平均提高了3-4个百分点。
这些结果表明,在检索器的设计中,有必要在相关和不相关的文档之间找到最佳平衡。
上述实验表明,添加不相关的文档可以提高性能。 但有人可能会争辩说,这些文档并非真正无关,因为它们是同一语料库(维基百科)的一部分,并且可能导致 LLM 以与该特定语料库更一致的方式做出响应,而不会引入大量噪音。
因此,作者进行了另一项实验,从Reddit webis-tldr-17数据集中提取了无关的文档,使其在语气和风格上与维基百科形成了鲜明的对比。
如下表所示,左侧部分报告了从 reddit 添加不相关文档的结果,右侧部分报告了由随机单词组成的无意义句子的结果。
正如你所看到的,无论噪音来自Reddit语料库中的不相关文档还是无意义的句子,性能都会得到改善
有文献是极低的注意力熵会导致 LLM 产生降级的输出并大幅降低性能。这些情况称为:熵坍缩。沿着这一研究思路,作者测量了仅提供黄金标准文档时注意力分数的熵,与添加随机文档的情况相比。 结果发现,在引入随机文档后,系统的熵增加了 3 倍。 然而,这种现象并不能完全解释为什么噪声是有效的,它有待于未来的研究。
鉴于 LLMS 只能处理有限数量的文档,检索器应该向 LLMS 提供哪些文档? 根据常识,应提供与查询语义相近的文档。 然而,从本文的结果来看,随机文档似乎对LLM的准确性有积极影响。 那么,如何平衡相关文件和不相关文件的比例呢?
当最初检索最少的文档集并补充无关文档直到达到上下文限制时,会找到最佳比率。 在本文的实验中,检索 3 到 5 个文档是最有效的选择,超过这个数字会增加包含太多相关但分散注意力的文档的风险。 然而,这一理论尚未得到广泛研究,迫切需要进一步的研究来确定这一规则的广泛适用性。
本文是第一个全面了解检索到的文档如何影响RAG框架的文章,旨在了解检索器构建RAG系统优化提示所需的特征。 该研究的主要发现包括:
相关文档应位于靠近查询的位置,否则模型将难以将重点放在查询上。 与查询语义相关但不包含答案的文档对 RAG 系统极为有害,后续研究应找到从检索到的文档中消除这些干扰的方法。 与预期相反,如果放置得当,外来噪声记录有助于RAG提高系统的精度。 作者提出,这些策略可以帮助优化RAG系统,但仍需要进一步的研究来揭示这种行为背后的潜在机制,并开发更适合与生成组件交互的新一代信息检索技术。
声明:本期**口译为非人类撰写,全文由赛博马利安AI**口译专家代理独立完成,经人工审核和插图后发布。