开源发布 RAG-CoT:结合检索增强生成与思维链的经验研究
摘要
自 2022 年年底,以 ChatGPT 为代表的生成式对话模型迅速成为日常生活和工作中的重要工具。为了增强生成式对话模型解决复杂问题的能力,RAFT 方法被提出。本文在原研究的基础上,扩展了该方法的训练和应用范围,特别是弥补了其在处理长答案和中文文本方面的不足。同时,分析了 RAFT 方法对于不同类型推理任务中的性能提升差异,进行了较为全面的优化和评估。
1. 研究背景
当前对于生成式对话模型性能提升的研究已经提出了多种具有前景的方法,主要包括检索增强生成(RAG)和思维链(CoT)。
1.1 检索增强生成法 (RAG)
检索增强生成法通过整合外部数据库中的知识,使得模型从外部信息库获取信息,进而提升生成式对话模型的性能和可靠性。由于检索增强生成的性能依赖于检索器的准确性和效率,因此低质量或不相关的检索结果反而会影响生成内容。另外,如何有效地将检索到的信息与模型的先验知识进行整合也是该方法面临的一大挑战。
1.2 思维链 (CoT)
思维链将复杂推理任务分解为多个中间步骤依次进行计算,从而获得最终结果。当前思维链的常见应用方法——思维链提示法,通常需要依赖约 100B 参数量级的模型才能充分释放模型的推理能力。这一参数量级的模型不论是用于研究还是实际应用,都对计算资源有着较高的要求。
1.3 RAFT 方法 (RAG+SFT)
RAFT 方法将 RAG 与 CoT 相结合用于小规模模型的微调(SFT),从而优化生成式对话模型在推理任务中的表现。该方法不仅规避了思维链提示法对模型参数规模的需求,同时也缓解了检索增强生成方法对检索器性能的依赖以及知识整合的难点,提高了模型的复杂信息提取能力以及逻辑推理能力。
2. RAFT 方法详解
如果用考试来类比生成式对话模型的问答任务,那么监督微调(SFT)是一场课后的闭卷考试,在考试时不借助任何参考资料,仅利用课上学到的解题方法进行答题;检索增强生成法(RAG)是一场开卷考试,在考场上根据考题内容从外部知识库中寻找相关段落并推理出答案。RAFT 方法则相当于让模型在考试前首先习得从相关信息中推理计算出结果的能力,从而在开卷考试中模型可以更快速、更准确地根据参考资料推理出答案。
具体来说,我们用特定的 RAFT 训练数据集对模型进行微调。RAFT 方法具有以下两个核心特点:
- 干扰文档引入:在问题之外附有若干参考文档,其中不仅包含携带有效信息的文档,还包含与问题内容无关联的干扰文档,从而训练模型的信息提取和处理能力。
- 思维链目标:数据集中的答案采用思维链式答案作为微调的目标文本,通过微调提高模型的逻辑推理能力。
2.1 数据集重构流程
我们对开源数据集 HotpotQA、PubMedQA 和 DuReader_robust 进行了数据集重构用于 RAFT 微调。重构过程主要涉及以下步骤:
- 问题抽取:从原始数据集中提取多跳推理问题。
- 文档检索与筛选:使用检索器获取相关文档,并人为加入无关文档作为干扰项。
- 思维链生成:为每个问题生成包含推理步骤的答案,确保逻辑链条完整。
- 格式标准化:将问题、文档集合及思维链答案统一为标准输入输出格式。
{
"question": "What is the capital of the country where the author of 'The Great Gatsby' was born?",
"documents": [
{"text": "F. Scott Fitzgerald was an American novelist..."


