假设我们有一个问题:拿破仑的马的毛色是什么颜色?
RAG系统经过搜索之后给出了两个版本的文档,每个文档都包含了四段话,分别如下:
- A文档:
- 描述拿破仑的马的颜色。
- 描述拿破仑的第一任妻子的马的颜色。
- 描述拿破仑的父亲的马的颜色。
- 描述拿破仑的母亲的马的颜色。
- B文档:
- 描述拿破仑的马的颜色。
- 描述地球处在哪个星系中。
- 描述世界上已知的最大生物。
- 描述恐龙灭绝原因。
当模型对“拿破仑的马的毛色是什么颜色? ”这个问题产生响应时,哪个版本的文档对模型有更大的帮助呢?
看似A文档的每段话都对回答“拿破仑的马的毛色是什么颜色? ”有所帮助,但其实2、3、4这三段话都只会干扰模型对正确答案的判断,相反地,B文档看似有很多无意义的信息,但是这些信息反而不会干扰模型的判断。这便是下面这篇论文给出的结论。
引言
研究问题:检索器应具备哪些特征以优化 RAG 系统的提示构建?
检索器可以返回的三种主要文档类型(或段落):相关性、干扰性和随机性。
- 相关文档包含直接回答查询或可能提供信息的相关内容。
- 干扰性文档不直接回答查询,但它们在语义上或与上下文上与主题有关联。例如,如果有人询问拿破仑的马的毛色,那么描述约瑟芬·德·博阿尔内(拿破仑的第一任妻子)的马的颜色的段落,虽然不是正确的信息,但与主题高度相关。
- 随机文档与查询毫无关系,可以被看作是检索过程中的信息噪声。
RAG
LLM 基于自回归语言建模,生成下一个 token的概率表示:
RAG 的完整概率建模,根据检索文档 d,生成回复 y 的概率:
实验
自然问题数据集
Natural Questions (NQ)数据集是从谷歌搜索数据中衍生出的现实世界查询的大规模集合。数据集中的每个条目包括用户查询和包含答案的相应维基百科页面。
NQ-open dataset,作为NQ数据集的一个子集,通过移除将答案链接到特定维基百科段落的限制,从而模仿类似于网络搜索的更一般的信息检索场景。
文档类型
- 金标文档。指的是自然问答数据集中的原始上下文,具体来说就是包含答案的维基百科页面段落,且与给定查询在上下文中相关。
- 相关文档。相关文档是与金色文档类似,包含正确答案且在回答查询时上下文有用的段落。它们提供了正确且与查询相关的额外信息来源。值得注意的是,金色文档也是一种相关文档。
- 干扰性文档。干扰性文档在语义上与查询相似,但不包含正确答案。它们在评估生成器辨别相关信息与非相关信息能力方面起着关键作用。在实践中,这些是得分最高的检索到的文档,但与查询无关。
- 随机文档。随机文档既与查询无关也不包含答案。它们在评估模型处理完全无关信息的能力方面是重要的工具。在实践中,在我们的测试中,我们将从语料库中随机抽取这些文档。
实验结果
干扰性文档的影响
根据表1的结果可以看到,干扰性文档虽然看似每段话的信息都和查询的问题相关,但其实这些信息反而拉低了模型对正确信息的注意力,从而形成了反作用。
随机文档的影响
- 随机性实验一
在表2中可以看出,随机性文档在 Far 和 Mid 模式下会让模型回复性能有所下降,但是在 Near 的模式下有所上升。
- 随机性实验二
Random from Reddit:从 Reddit TLDR 数据集中随机抽取的文档(非百科风格)
Random Words:完全无意义的句子,由随机单词组成
根据表4的实验结果可以看出,适量增加随机性文档可以增加模型回答的有效性。
结论
根据本篇论文的实验结果,我们可以得到如下的结论:
- 将“语义相关但不含答案”的文档加入 prompt(即 distracting documents),会误导 LLM,严重降低准确率。
- 加入完全无关的随机文档(Noise),反而提升了准确率。
- 金标文档的位置越靠近查询,效果越好,未来的RAG可以根据置信度的排序来让更可靠的文档更靠近查询。