摘要
近年来,大语言模型(LLMs)在各个领域中获得了显著的重要性与关注。其中,信息检索(IR)是受其影响最深的领域之一,这一点从越来越多信息检索系统引入生成式模型即可见一斑。特别是检索增强生成(RAG),作为一种新兴范式,通过将来自大规模文档语料库的现有知识整合进生成过程,使得模型在各种任务中能够生成更加连贯、上下文相关且准确的文本。这些任务包括摘要生成、问答系统以及对话系统等。
近期研究指出,RAG 系统存在明显的位置信息依赖性:信息在 LLM 输入提示(prompt)中的位置安排会显著影响最终生成的输出质量。本研究正是基于这一特性展开,探讨了在 LLM 提示中对句子排序的不同策略,以提高用户与对话系统交互中生成响应的平均质量。
我们提出了一个基于 RAG 的端到端对话助手架构,并在 TREC CAsT 2022 数据集上对所提出的排序策略进行了实证评估。实验结果显示,不同的内容排列策略在生成结果上存在显著差异。
通过基于 RankVicuna 的评价方法,我们进一步验证了最优排序策略的效果:在整体响应质量上相比于基线方法可提升最高达 54%,展示出本研究在优化 RAG 系统生成质量方面的有效性。
1 引言
检索增强生成(RAG) 是人工智能(AI)领域中一项新兴范式,旨在通过利用外部数据源来提升生成模型的准确性与可靠性。近年来,RAG 在多个领域获得了显著的重要性和关注 [1],因为它能够结合信息检索(IR)系统与生成模型的优势,从而克服各自的局限性。
RAG 能以多种方式提升生成模型的输出效果。首先,它允许生成过程以可靠知识源为基础,将其融入到提示(prompt)中,从而避免或至少缓解大语言模型(LLM)众所周知的“幻觉”问题,即模型生成与事实不符或与输入提示无关的内容 [2, 3, 4]。其次,RAG 支持持续的知识更新与领域信息整合:即使 LLM 的训练数据未覆盖某些事实或主题,它也能成功应对,并可轻松适配至不同场景与上下文中,无需重新训练或微调整个模型,即便所需数据不可得或数据集规模有限。最后,通过将生成过程锚定于输入中的外部知识,输出结果可以关联到可验证的外部文档,从而提升了生成内容的可信度与透明性 [2, 3, 4]。
然而,当前 RAG 系统仍存在一些文献中已指出的缺陷。其中之一便是 LLM 显著的位置敏感性。输入提示中信息的位置对生成输出有着重大影响。已有研究 [5, 6, 7] 指出生成模型在“首位效应”和“末位效应”方面存在偏倚,即更偏好提示开头或结尾的信息,而容易忽视中间部分。
本研究在前人基础上进一步探索了 RAG 对话系统中位置偏倚的影响。我们提出了一种新颖的策略,用于优化 LLM 输入提示中句子的排列顺序,以提升平均生成质量。该策略的直觉基础在于:如同人类交流中流畅、连贯、结构良好的文本是关键因素,我们认为这对 LLM 同样适用。具体而言,我们认为若将语义相近的句子尽可能相邻地排列在提示中,则平均而言,所生成的输出质量更佳。
为此,我们提出了一种端到端的 RAG 架构来验证该假设。该架构的各个组件能精确识别哪些句子对回答用户查询具有潜在帮助。我们使用句子聚类方法,根据语义相似度对句子进行分组,并进一步定义了聚类内与聚类间的多种排序策略,以便研究这些排列方式对生成结果的影响。据我们所知,这是首个明确考虑句子排序问题,并在 RAG 系统中以系统化方式对输入句子排序进行微调的研究。
我们将提出的方法与当前 RAG 系统所采用的强基线方法进行了对比。实验评估使用了 TREC 对话助手任务(CAsT)2022 数据集 [8],这是一个被广泛接受的对话式搜索(CS)评估场景,适用于比较不同排序策略所能达到的效果。
实验结果表明,不同的句子排列策略会带来显著差异,相较于最优基线方法,最优策略提升达 8.66%,相较于随机排序则提升达 54.94%。
2 相关工作
在下文中,我们将综述主要研究工作,这些工作涉及大语言模型(LLM)的位置信息依赖性以及 RAG 系统在调和内部与外部知识时所面临的困难。随后,我们还将分析 RAG 响应质量评估以及“LLM 作为评判者(LLM-as-a-judge)”所面临的挑战。
2.1 检索增强生成(Retrieval Augmented Generation, RAG)
RAG 通过从外部知识源中检索额外信息来增强大语言模型(LLM),使其能够成功回答训练数据之外的问题。同时,RAG 能缓解“幻觉”问题(即生成与事实不符的文本),因为其参考了提供的外部知识。
RAG 框架主要包含两个阶段:检索 和 生成。当用户提出查询时,系统首先从外部知识源中检索相关信息。这一过程通常由标准的信息检索(IR)流程完成,输出一个排序好的文档列表。随后,在生成阶段,LLM 使用这些文档中的信息合成回应用户查询的答案。
尽管 RAG 优势明显,但它仍存在一些局限与挑战:
-
忽视模型内部知识:RAG 系统依赖外部知识作为主要信息来源,常常忽略 LLM 已掌握的内部知识 [9, 10]。这会导致在外部内容质量不高的情况下,生成质量反而下降 [10]。在某些情况下,RAG 的输出甚至不如不开启检索的“闭卷场景”下的 LLM 表现 [10]。已有研究指出,当话题非常热门时,LLM 直接回答反而效果更佳 [9]。
-
冷门、专业或长尾知识依赖 IR 支持:虽然最先进的 LLM 能应对大部分问题,但对于冷门话题、专业知识,或者当模型参数增大效果也未显著提升的场景,仍需 IR 系统协助 [9]。
-
显著的位置信息依赖性:LLM 对输入中信息的位置极为敏感 [5, 6, 7]。研究发现 LLM 对开头和结尾信息偏好显著(首位效应和末位效应),而对中间信息关注度较低,性能呈现出典型的 U 形曲线 [5]。
-
长上下文输入存在干扰:直接将所有检索结果输入 LLM 通常不是理想做法。冗余信息与过长的上下文会干扰生成质量,导致内容重复、割裂甚至不连贯 [1]。
因此,在提供给 LLM 之前,检索内容往往需要进一步处理 [14]。近期研究对 RAG 系统的检索策略进行了系统性分析 [15],指出文段的相关性、位置和数量都会影响生成效果。其中一个反直觉的发现是:检索得分最高但不包含答案的文档可能会削弱 LLM 表现。甚至有研究发现,在提示中添加随机文档会使 LLM 准确率提升高达 35%。
本研究基于以下直觉:结构清晰、连贯流畅的输入能提升 RAG 效果。因此,我们提出了一种端到端架构,用于精细选择和组织将提供给 LLM 生成的外部知识。
2.2 响应质量评估
另一条研究主线关注如何评估生成输出的整体质量。虽然人工评估最为准确可靠,但其高时间与成本使得实际应用受限。因此,亟需开发能与人类判断一致、且更高效、低成本的自动化评估技术。
在本文中,我们关注的是文本生成模型。传统自动化评估指标包括 BLEU [16]、ROUGE [17] 和 METEOR [18],这些指标通过评估候选文本与参考文本的 n-gram 匹配程度来衡量相似度。由于其解释性强、与人工评分相关性高,这些指标被广泛用作基线。
但它们也存在显著不足 [19]:
-
无法识别词汇多样性;
-
惩罚语序变化;
-
难以捕捉同义表达(paraphrase);
-
无法处理长距离依赖。
随着词嵌入 [20, 21] 和基于 Transformer 的神经网络模型 [22–25] 的兴起,出现了新的学习型评估指标。例如,BERTScore [19] 利用 BERT [22] 生成的上下文嵌入,衡量候选文本与参考文本的语义相似性。
近年,LLM 的强大性能也使其在“评估者”角色中崭露头角。由于采用了“人类反馈强化学习”(RLHF)训练方法,这些模型与人类判断高度一致。许多研究探索使用先进 LLM 自动生成评估结果,以此代替人工评分,这种范式被称为 “LLM 作为评判者(LLM-as-a-judge)”。
例如,Zheng 等人 [24] 使用 GPT-4 [13] 对多种 LLM(包括开源与闭源)生成的对话质量进行评估,实验包括单项打分、成对比较以及与参考答案对比。
GPT-3.5 Turbo 和 GPT-4 还被用于 TREC Deep Learning 2019、2020 [27, 28] 以及 BEIR [29] 数据集的列表式重排序任务 [6, 7],取得了 SOTA(最先进)表现。同时,它们也被用作教师模型,帮助微调较小的开源学生模型(如 LLaMA 和 Vicuna) [30–32],其中包括 RankVicuna [32]。
在本研究中,我们采用当前最先进的评估方法,使用 RankVicuna 对不同方法生成的响应进行质量评估。
3 方法
生成式模型通常存在对输入信息的显著位置偏好:倾向于重视开头和结尾的信息,而忽略中间部分 [5]。这一现象促使我们开展研究,旨在探究在基于 RAG(检索增强生成)的对话系统中,输入句子的顺序如何影响生成输出的质量,进而寻找最优排序策略,以生成最佳回答。本节将介绍我们在实验中所采用的各方法及其变体。
我们提出的 RAG 系统架构如图 1 所示。其中包含一个信息检索(IR)流程,针对每条用户输入(查询)𝑞,检索出前 𝑘 条相关文档 𝐷 = {𝑑₁, 𝑑₂, ..., 𝑑ₖ}。然后,这些检索到的文档会被后续模块处理,包括:
-
将文档划分为句子;
-
识别与查询最相关的句子;
-
根据语义相似度对句子进行聚类;
-
根据多种排序策略对这些句子进行重排序。
最后,选出的(并重排后的)句子将作为输入,提供给大语言模型(LLM)用于生成回答。这些组件构成了本研究的重点,其功能将在本节剩余部分详细介绍。
3.1 文档预处理与句子划分
已有研究 [33, 34] 指出,相关文档中的完整文本很少能完整满足查询 𝑞 所表达的用户信息需求。在多数情况下,只有文档中的一小部分内容与查询直接相关,其余内容则为无关信息。我们提出的系统架构旨在精确识别检索文档中的关键信息(句子),以此减少用于生成回答时提示中的“噪音”。
从本节起,我们将文档中的句子视为最小的信息单元。图 1 展示了我们的数据处理流程,其主要步骤如下:
-
对于每个用户查询 𝑞,仅考虑 IR 系统返回的前 𝑘 条文档 {𝑑₁, 𝑑₂, ..., 𝑑ₖ};
-
使用最先进的共指消解模型(co-reference resolution)处理所有文档,将句中出现的代词或模糊表述替换为前文明确提到的实体。这一步的目的是消除句子之间的上下文依赖,使每个句子可独立理解;
-
将每篇文档 𝑑ᵢ 划分为句子序列 {𝑠ᵢ,₁, 𝑠ᵢ,₂, ..., 𝑠ᵢ,ₙᵢ};
-
针对所有文档提取出的句子,进行近重复句子移除:使用 Jaccard 相似度(基于词袋模型 BoW)对句子进行两两比较,若相似度 ≥ 0.9,则视为冗余并剔除。
3.2 句子选择(Sentence Selection)
在第一阶段的预处理完成后,我们会为每条查询生成一个候选句子集,这些句子将被包含在我们 RAG 系统的 LLM 输入提示中(见图 1)。由于候选句集的规模可能很大,且并非所有句子都对回答查询有用,因此我们采用了由 Lajewska 和 Balog [35] 提出的 基于 BERT 的交叉编码器“句中含答案”分类器1,用于对这些候选句子按预测的相关性进行排序,并仅保留排名前 n 的句子,其余部分被丢弃。
需要指出的一个潜在局限是:Lajewska 和 Balog [35] 的模型是基于本研究中使用的查询和文本进行训练的。因此,该模型在本实验数据集上的表现可能优于其他模型,这确保了选出的句子在很大程度上确实与查询相关。虽然这种模型在实际应用中可能并不可用,但我们之所以使用它,是因为本研究的重点在于比较句子排序策略对 LLM 输出质量的影响,而非 RAG 系统本身的最终性能。
3.3 句子聚类与排序(Sentence Clustering and Ordering)
在前几步中,我们限制了每条查询所对应的句子数量,并提升了这些句子在回答查询时的预期效用;同时也控制了来自不同检索文档的冗余或长度差异带来的“噪声”干扰。因此,我们可以更加清晰地研究位置信息偏好对生成过程的影响。
需要再次强调,LLM 的位置信息偏好已在先前研究中得到验证 [5, 6, 7],但通常只是作为一种限制被讨论。我们的研究更进一步,探索哪种句子排序策略能在平均意义上最大化生成响应的质量。我们认为,如果句子在语义上相似且在提示中靠得更近,LLM 更可能生成逻辑清晰、质量更高的文本。
因此,我们的排序策略充分利用了句子选择阶段选出的句子之间的语义相似性。我们采用 tct-colbert 模型2 生成这些句子的上下文嵌入,并计算其两两之间的余弦相似度。之后,我们使用层次聚类算法对最相似的句子进行逐步聚合,并使用 Silhouette 系数最大化来决定最优聚类数。最终,对于每个查询 𝑞 ∈ 𝑄,我们将前 n 个句子划分为若干(𝑁𝑐 ≥ 1)个语义相似度较高的句子簇,每个簇包含一个或多个语义相近的句子。
我们正是基于这种聚类,设计了多种输入排序策略,以研究跨簇(inter-cluster)和簇内(intra-cluster)排序差异对响应质量的影响。
更正式地说,对于每条查询,设:
-
𝑆 为前 n 个选中句子的集合;
-
𝑝 为输入提示;
-
ord(S) 为对句子集合 𝑆 的排序策略;
-
LLM(p, q, ord(S)) 表示在提示 𝑝 和查询 𝑞 下,采用给定句子顺序生成的响应;
-
s(q, r) 为衡量响应质量的评分函数;
我们的目标是找到最优句子排序方式:
即,在测试集 𝑄 上,平均生成质量最优的句子排列。
最终,句子簇的顺序与每个簇内部句子的顺序共同决定了这 n 个句子的全局输入顺序。在实验中,我们将评估:
-
6 种跨簇排序策略:考虑因素包括簇的大小、与查询的相似度等;包括随机排序、按递增或递减方式排序,以及参考 [5] 中提出的 “U 形排序”。
-
4 种簇内排序策略:包括随机排序、根据重排序器得分排序、按访问顺序排序、按聚类合并顺序排序。
Footnotes
-
原文脚注:sentence classifier:https://huggingface.co/ia-lab/answer-sentence-selection ↩
-
原文脚注:tct-colbert 模型:https://huggingface.co/castorini/tct_colbert-v2-hnp-msmarco ↩
实验
研究问题(Research Questions)
在前述的句子选择与聚类步骤的基础上,我们关注的两个主要因素分别是:
-
不同簇之间在 LLM 提示中的排列顺序;
-
同一个簇内各句子的排序方式。
这两个因素共同决定了输入 LLM 的前 n 个句子的全局排序 ord(·)
。我们的研究问题正是围绕这些排序策略展开,以评估在各种可选方案中,哪种策略效果最佳。
具体而言:
-
RQ1:什么是最优的簇排序策略?
-
RQ2:什么是最优的簇内句子排序策略?
-
RQ3:我们提出的排序策略是否在效果上优于现有的基线方法,从而增强了 RAG 系统的有效性?
实验设置(Experimental Settings)
我们选用了标准的对话式搜索(CS)评估集合 TREC CAsT 2022 数据集 [8] 进行实验。这一选择基于相关先前研究,该研究为该数据集发布了额外的模型、数据及人工评价结果 [34, 35]。
该语料库由以下三类文档集合构成:
-
MS-MARCO v2 [37]
-
KILT [38]
-
Washington Post v4
这些集合共计包括约 1.06 亿条短文档。CAsT 2022 包含 18 个信息需求主题(topics) 和 205 条用户查询(utterances),平均每个主题包含 11.39 条查询。其中 163 条查询带有人工相关性判断(relevance judgments)。
在检索系统方面,我们直接采用 TREC CAsT 2022 官方提交中表现最优的一组检索结果 [39] 作为检索阶段的输出,以便将研究重点放在我们提出的后续步骤(即排序与生成)上。
所有实验均仅考虑每条查询前 Top-20 条检索文档。对于选择 Top-k 文档数量对实验结果的影响,我们将留作未来研究探讨。
为确保检索结果包含足够的相关信息,我们剔除了所有 Precision@20 小于 0.2 的查询,即 Top-20 结果中相关段落少于 3 条 的查询被排除1。这样能保证用于生成响应的输入中包含足够的高质量信息。
在句子排序和回答生成这两个需要使用查询文本的步骤中,我们采用了每条查询的人工改写版本,以避免不同查询重写方式可能带来的偏差。未来的研究将进一步探讨查询重写方式与 RAG 效果之间的关系。
在文档级别的Co-reference Resolution步骤中,我们使用了 “F-Coref” 模型 [40],该模型基于“LingMess”架构 [41]。消解完成后,使用 SpaCy Python 库将每篇文档划分为独立的句子序列。
在接下来的章节中,对于每组排序策略对比实验,我们将提供两种指标:
-
平均得分:即基于 RankVicuna 的 10 次随机重排实验中每个排序策略的平均效果;
-
成对比较指标(pairwise metric):展示每种排序策略在多少条查询上表现为优于 / 相同 / 劣于对比策略。
这种双重评估方式可比单一平均分数更好地反映策略之间的差异,并提供更全面的比较视角。