AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


[论文] 超越RAG:Self-RAG如何通过自我反思提升问答准确性
发布日期:2024-05-20 10:35:07 浏览次数: 2117 来源:差分隐私


摘要

尽管大型语言模型(LLMs)拥有卓越的能力,但由于它们仅依赖于内部的参数知识,经常会产生包含事实错误的响应。检索增强生成(RAG)是一种通过检索相关知识来增强 LLMs 输入的方法,这种方法减少了知识密集型任务中的事实错误。然而,RAG 方法会不加选择地检索和整合一定数量的检索段落,无论检索是否必要或段落是否相关,这可能会减少 LLMs 的多功能性,或导致生成质量低下的回答。 本文引入了一种新的框架,称为自反思检索增强生成(SELF-RAG),通过 按需检索自我反思 提高 LLMs 生成质量,而不损害其多功能性。

此框架训练一个 LLM,根据需求适应性地检索段落,并使用特殊的反思标记生成和反思检索到的段落以及自身的生成内容。生成反思标记使 LLM 在推理阶段可控。实验表明,SELF-RAG(7B 和 13B 参数)在多种任务上显著优于最先进的 LLMs 和 RAG 模型,包括开放域问答、推理和事实验证任务,并且在长篇生成任务中提高事实准确性和引用准确性方面取得了显著进步。

引言

最新的大型语言模型(LLMs)尽管模型和数据规模有所增加,但仍然在与事实错误作斗争。检索增强生成(RAG)方法通过检索相关段落来增强 LLMs 的输入,减少了知识密集型任务中的错误。RAG 存在两个方面的问题:

  1. RAG 可能会引入不必要的内容,导致生成质量下降,因为它们无论检索是否有帮助都会不加选择地检索段落。
  2. 输出并不能保证与检索到的相关段落一致,因为模型没有明确地被训练去利用和遵循提供的段落中的事实。 本工作引入了自反思检索增强生成(Self-Reflective Retrieval-augmented Generation,SELF-RAG),以改善 LLMs 的生成质量,通过按需检索和自我反思(self-reflection)的方式,可以不损害 LLMs 的原始创造力和多功能性。我们以端到端的方式训练一个任意的 LLM,使其能够根据任务输入通过生成任务输出和间歇性的特殊标记(即,反思标记 reflection tokens)来反思自己的生成过程。反思标记被归类为检索和批评两类,以指示检索的需求和生成质量(图 1 右侧)。

具体来说,给定一个输入提示和前面的生成,SELF-RAG 首先决定是否通过检索段落来增强。如果是,它输出一个检索标记,按需调用检索器模型(步骤 1)。随后,SELF-RAG 同时处理多个检索到的段落,评估它们的相关性,然后生成相应的任务输出(步骤 2)。然后,它生成批评标记来批评自身的输出,并选择最佳输出(步骤 3),就事实准确性和整体质量而言。这个过程与传统的 RAG 不同,后者无论检索必要性如何,都会一致地检索固定数量的文档,并且从不重新审视生成质量。

在多个任务上(包括推理和长篇生成)的实证结果证明了 SELF-RAG 在多种指标上显著优于预训练和指令调整的 LLMs。特别是,SELF-RAG 在四个任务上超越了检索增强的 ChatGPT,所有任务超过了 Llama2-chat 和 Alpaca。

SELF-RAG: 学习召回, 生成和批评

SELF-RAG 是一个框架,通过按需检索和自我反思提高大型语言模型(LLM)的生成质量和事实准确性,同时不牺牲 LLM 原有的创造力和多功能性。我们端到端的训练允许语言模型生成文本,如果需要,可以引用检索到的段落,并通过学习生成特殊标记来批评输出。这些反思标记明了检索的需求或确认输出的相关性、支持或完整性。相比之下,常见的 RAG 方法会不加选择地检索段落,而不能确保完全得到引用来源的支持。

SELF-RAG 框架的不同之处在于其生成的过程中,生成了特殊 token,包含以下几类:

  • [Retrieve]:确定是否需要从 中检索信息
  • [IsREL]:is_relevant 的缩写,判断 是否包含解决问题 的信息
  • [IsSUP]:is_supported 的缩写,判断生成的 是否是从 来的
  • [IsUSE]:is_useful 的缩写,判断 是否是 的好回答

形式上,给定输入 ,模型 顺序生成由多个段落组成的文本输出 ,其中 表示第 个段落的令牌序列。生成的 中的 token 包括原始词汇表中的文本以及反思标记。

image.png

SELF-RAG 推理的过程如算法 1 所示:对于每个输入 和前面的生成 $y_{<t}$,模型解码一个检索标记来评估检索的效用。如果不需要检索,模型就像在标准的语言模型(lm)中那样预测下一个输出段。如果需要检索,模型会生成:一个批评标记来评估检索到的段落的相关性,下一个响应段,以及一个批评标记来评估响应段中的信息是否得到段落的支持。最后,一个新的批评标记评估响应的整体效用。为了生成每个段落,self-rag 1并行处理多个段落,并使用自身生成的反思标记来对生成的任务输出施加软约束或硬控制(算法1)。例如图中,在第一时间步选择检索到的段落d1,因为d2没有提供直接证据(isrel=是无关的),而d3的输出只是部分支持,而d1则完全支持。

训练概览。 SELF-RAG 通过将它们统一为扩展模型词汇表中的下一个标记预测(即原始词汇表加上反思标记),使任意的语言模型(LM)能够生成带有反思标记的文本。具体来说,我们在由检索器 检索的段落和由批评模型 预测的反思标记交错组成的策划语料库上训练生成模型 。我们训练 来生成反思标记,以评估检索到的段落和给定任务输出的质量。使用批评模型,我们通过将反思标记插入到任务输出中来更新训练语料库。随后,我们使用传统的 LM 目标训练最终的生成模型 ,使其能够在推理时不依赖批评模型自行生成反思标记。

实验效果

与无检索 baseline 比较。 表 2(上部)展示了无检索的 baselines。SELF-RAG(底部两行)在所有任务中都显示出对监督微调的大型语言模型(LLMs)的显著性能优势,甚至在公共卫生、流行问答(PopQA)、传记生成和自动问答(ASQA)(ROUGE 和 MAUVE)中超过了 ChatGPT。SELF-RAG 还显著优于采用复杂提示工程的并行方法;具体来说,在生物生成任务中,本文的 7B 和 13B 模型超过了并行的 CoVE(Dhuliawala 等人,2023 年),后者迭代地提示 Llama265B 以精炼输出。

与有检索 baseline 比较。 如表 2(下部)所示,SELF-RAG 在许多任务中也超过了现有的 RAG,获得了非专有基于语言模型(LM)的模型在所有任务中的最佳性能。虽然此方法在其他基线中表现更好,但在流行问题问答或生物学上,具有检索的强大指令微调的语言模型(例如,Llama2-chat、Alpaca)从它们的无检索基线中显示出了巨大的增益。然而,我们发现这些基线对于我们不能简单地复制或提取检索段落的子字符串的任务提供了有限的解决方案。在公共卫生和 ARC 挑战上,具有检索的 baselines 并没有显著提高它们的无检索对应物的性能。我们还观察到,大多数具有检索的基线在提高引用准确性方面存在困难。在 ASQA 上,本文的模型在引用精度和召回率方面显著高于除 ChatGPT 外的所有模型。高等人(2023 年)发现 ChatGPT 在这项特定任务中持续展现出优越的效果,超越了较小的语言模型。SELF-RAG 弥合了这一性能差距,甚至在引用精度上超过了 ChatGPT,这衡量的是模型生成的声明是否完全由引用证据支持。此外,在事实精度的指标上,SELF-RAG 7B 有时由于较小的 SELF-RAG 倾向于经常生成精确而简短的输出而超过我们的 13B 模型。Llama2-FT7B 是与 SELF-RAG 相同指令-输出对训练的基线语言模型,没有检索或自我反思,并且仅在测试时增强了检索,它落后于 SELF-RAG。

开源实现

SELF-RAG 有以下几个主要的开源实现:

  • 论文开源地址
  • Langchain: self-rag
  • LlamaIndex: self-rag

以 Langchain 为例,图例为 LangGraph 流程示例,包含以下几个主要关键处理逻辑:

  1. 是否应该通过 retriever 进行召回输出:是、否或继续
  2. 召回的文章 D 是否和问题 x 相关:输出相关或不想管
  3. LLM 根据 D 中的 chunk 生成的内容是否和 chunk 相关(用于判断是否有幻觉):输出全支持、部分支持或不支持
  4. LLM 根据 D 中的 chunk 生成的内容是否是有意义的回答:输出 1-5 评分

总结

本工作介绍了 SELF-RAG,通过按需检索和自我反思提高大型语言模型(LLM)的生成质量和事实准确性。SELF-RAG 训练一个语言模型(LM),通过预测原始词汇表中的下一个令牌以及新添加的特殊令牌,即反思标记,来学习检索、生成和批评文本段落以及自身的生成。SELF-RAG 进一步在测试时通过利用反思标记,使语言模型的行为得以调整。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询