精读笔记:Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection


论文基本信息

项目 内容
论文标题 Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection
arXiv 编号 2310.11511
发表会议 ICLR 2024
机构 University of Washington + Allen Institute for AI (AI2)
核心作者 Akari Asai, Zeqiu Wu, Yizhong Wang, Avirup Sil, Hannaneh Hajishirzi
发布时间 2023 年 10 月

阅读地图

本文共 5 大章节,精读顺序建议如下:

Abstract(核心贡献一览)
  ↓
Introduction(问题动机 + Self-RAG 三步骤直觉)
  ↓
Section 2: 问题形式化(reflection token 的正式定义)
  ↓
Section 3: Self-RAG 方法核心
    ├── 3.1 推理流程(四种 token 如何协作)
    ├── 3.2 训练数据构造(Critic 模型 + GPT-4 蒸馏)
    └── 3.3 推理时的打分与控制
  ↓
Section 4: 实验结果(与 ChatGPT、标准 RAG 对比)
  ↓
Section 5: 消融分析(略读)

核心一句话概括:Self-RAG 让语言模型在生成答案的过程中,自己判断「要不要查资料、查来的资料好不好、自己写的答案有没有被资料支撑、答案有没有用」,实现真正的自我反思式 RAG。


Abstract(摘要)精译

原文

"Despite their remarkable capabilities, large language models (LLMs) often produce responses containing factual inaccuracies due to their sole reliance on the parametric knowledge they encapsulate. Retrieval-Augmented Generation (RAG), an ad hoc approach that augments LMs with retrieval of relevant knowledge, decreases such issues. However, indiscriminately retrieving and incorporating a fixed number of retrieved passages, regardless of whether retrieval is necessary, or passages are relevant, diminishes LM versatility or can lead to unhelpful response generation. We introduce a new framework called Self-Reflective Retrieval-Augmented Generation (Self-RAG) that enhances an LM's quality and factuality through retrieval and self-reflection. Our framework trains a single arbitrary LM that adaptively retrieves passages on-demand, and generates and reflects on retrieved passages and its own generations using special tokens, called reflection tokens. Generating reflection tokens makes the LM controllable during the inference phase, enabling it to tailor its behavior to diverse task requirements. Experiments show that Self-RAG (7B and 13B parameters) significantly outperforms state-of-the-art LLMs and retrieval-augmented models on a diverse set of tasks. Specifically, Self-RAG outperforms ChatGPT and retrieval-augmented Llama2-chat on Open-domain QA, reasoning and fact verification tasks, and it shows significant gains in improving factuality and citation accuracy for long-form generations relative to these models."

翻译

尽管大型语言模型(LLMs)拥有卓越的能力,但由于它们完全依赖于自身封装的参数化知识,往往会生成包含事实性错误的回答。检索增强生成(RAG)是一种通过检索相关知识来增强语言模型的临时方案,能在一定程度上降低这类错误。然而,不加区分地检索并纳入固定数量的段落——无论检索是否必要,也无论段落是否相关——会削弱语言模型的通用性,甚至导致无用的回答生成。

我们提出一种名为「自反思检索增强生成(Self-RAG)」的新框架,通过检索与自我反思来提升语言模型的输出质量与事实准确性。该框架训练一个单一的任意语言模型,使其能够按需自适应地检索段落,并通过被称为反思 token(reflection tokens) 的特殊标记,对检索到的段落及自身的生成内容进行反思和评估。生成反思 token 使语言模型在推理阶段具有可控性,能够根据不同任务需求调整自身行为。

实验表明,Self-RAG(7B 和 13B 参数规模)在多类任务上显著超越了当前最先进的 LLM 和检索增强模型。具体而言,Self-RAG 在开放域问答、推理及事实核查任务上超越了 ChatGPT 和检索增强版 Llama2-chat,并在长文本生成的事实性与引用准确率方面相对这些模型取得了显著提升。

新手讲解

核心问题是什么?

大模型有两个毛病:
1. 记忆不准——它把知识「记」在参数里,但有些事情记错了,就会「一本正经地胡说八道」(hallucination,幻觉)。
2. 传统 RAG 的检索太机械——遇到任何问题都先去查一堆资料,不管这问题根本不需要查(比如「1+1=?」),结果把一堆不相干的内容塞进去,反而答得更差。

Self-RAG 的解法是什么?

用一个关键创新:reflection tokens(反思 token)

术语解释:reflection token(反思 token)

就是模型输出文本里夹带的几个「特殊小标记」,专门用于做判断和控制。比如模型生成到一半,会先输出一个 [Retrieve=Yes] 的 token,意思是「我需要去查资料」;查完资料后再输出 [IsREL=relevant] 表示「这段资料确实有用」。这些 token 不是给人看的回答,而是模型内部的「决策信号」。

类比:想象你在做一道开卷考试题。聪明的做法是:
- 先判断「这道题我会不会,需不需要翻书?」(Retrieve)
- 翻书后判断「这页内容跟这道题有没有关系?」(IsREL)
- 写完答案后对照资料检查「我写的内容有没有被资料支持?」(IsSUP)
- 最后评估「这个答案有没有真正回答题目?」(IsUSE)

Self-RAG 就是把这个「边做题边自我检查」的能力训练进了模型本身。


Introduction(引言)精译

第一段:传统 RAG 的缺陷

原文关键句:

"State-of-the-art LLMs continue to struggle with factual errors despite their increased model and data scale. Retrieval-Augmented Generation (RAG) methods augment the input of LLMs with relevant retrieved passages, reducing factual errors in knowledge-intensive tasks. However, these methods may hinder the versatility of LLMs or introduce unnecessary or off-topic passages that lead to low-quality generations since they retrieve passages indiscriminately regardless of whether the factual grounding is helpful."

翻译:

尽管模型和数据规模不断增大,当前最先进的 LLM 依然持续受到事实性错误的困扰。RAG 方法通过在 LLM 的输入中加入检索到的相关段落,降低了知识密集型任务中的事实错误。然而,这些方法可能会削弱 LLM 的通用性,或引入不必要的、偏离主题的段落,因为它们不加区分地检索段落,不管事实依据是否真正有帮助。

新手讲解:

传统 RAG 的问题用一句话说:检索是无脑的。无论问什么问题,先检索三篇文章再说。这就像一个学生,无论做什么题都先去图书馆翻书,结果做「2+2=?」这种题也要翻半天,而且有时翻到不相关的书反而被带偏了。


第二段:Self-RAG 的核心思路

原文关键句:

"Moreover, the output is not guaranteed to be consistent with retrieved relevant passages since the models are not explicitly trained to leverage and follow facts from provided passages. This work introduces Self-Reflective Retrieval-augmented Generation (Self-RAG) to improve an LLM's generation quality, including its factual accuracy without hurting its versatility, via on-demand retrieval and self-reflection."

翻译:

此外,模型的输出并不能保证与检索到的相关段落保持一致,因为模型并没有被明确训练来利用和遵循所提供段落中的事实。本文引入了「自反思检索增强生成(Self-RAG)」,旨在通过按需检索自我反思来提升 LLM 的生成质量,包括事实准确性,同时不损害其通用性。

新手讲解:

传统 RAG 还有第二个问题:就算检索到了正确资料,模型也可能「看了资料却不用」——继续按自己的记忆回答,资料形同虚设。

Self-RAG 的关键创新有两点:
1. 按需检索(on-demand retrieval):只在真正需要的时候才去检索,不是每次都检索。
2. 自我反思(self-reflection):模型主动评估自己的输出质量,包括「我的答案有没有被资料支持」。


第三段:反思 token 的正式引入

原文关键句:

"We train an arbitrary LM in an end-to-end manner to learn to reflect on its own generation process given a task input by generating both task output and intermittent special tokens (i.e., reflection tokens). Reflection tokens are categorized into retrieval and critique tokens to indicate the need for retrieval and its generation quality respectively."

翻译:

我们以端到端的方式训练一个任意的语言模型,使其能够通过同时生成任务输出和间歇性的特殊 token(即反思 token)来反思自身的生成过程。反思 token 被分为检索 token(retrieval tokens)评判 token(critique tokens) 两类,分别用于指示检索的必要性及生成内容的质量。

新手讲解:

术语解释:critique(评判)

critique 在这里不是批评,而是「评估/批判性检查」的意思。就像老师批改作文时写的批语——指出哪里好、哪里需要改。self-critique 就是模型自己给自己打批语。

模型生成内容时,会在合适的位置插入特殊的 token:
- 检索 token:告诉系统「我要/不要查资料」
- 评判 token:告诉系统「查来的资料怎么样」「我写的内容怎么样」

这些 token 统称 reflection tokens(反思 token),是 Self-RAG 最核心的设计。


第四段:Self-RAG 三步工作流

原文关键句:

"In particular, given an input prompt and preceding generations, Self-RAG first determines if augmenting the continued generation with retrieved passages would be helpful. If so, it outputs a retrieval token that calls a retriever model on demand (Step 1). Subsequently, Self-RAG concurrently processes multiple retrieved passages, evaluating their relevance and then generating corresponding task outputs (Step 2). It then generates critique tokens to criticize its own output and choose best one (Step 3) in terms of factuality and overall quality."

翻译:

具体而言,给定一个输入提示和前面已生成的内容,Self-RAG 首先判断用检索到的段落来增强后续生成是否有帮助。如果有帮助,它就输出一个检索 token,按需调用检索器模型(步骤一)。随后,Self-RAG 并行处理多个检索到的段落,评估它们的相关性,然后生成对应的任务输出(步骤二)。接着,它生成评判 token 来评估自己的输出,并从事实性和整体质量两个维度选出最优结果(步骤三)。

新手讲解:

这三步骤可以用「考试答题」来类比:

步骤 Self-RAG 做什么 类比
Step 1 判断要不要检索,是则调用检索器 判断「这道题需不需要翻书」,需要就去翻
Step 2 并行处理多篇资料,评估相关性 + 生成回答 翻开几本书,判断哪本有用,边看边写答案
Step 3 用评判 token 评估各候选答案,选最优 写完几个草稿,对照资料检查,选最准确的一个

第五段:与传统 RAG 的区别

原文关键句:

"This process differs from conventional RAG, which consistently retrieves a fixed number of documents for generation regardless of the retrieval necessity and never second visits the generation quality. Moreover, Self-RAG provides citations for each segment with its self-assessment of whether the output is supported by the passage, leading to easier fact verification."

翻译:

这一过程与传统 RAG 有根本区别——传统 RAG 不管检索是否必要,总是固定检索若干文档来生成回答,且从不回过头来检查生成质量。此外,Self-RAG 为每个输出片段提供引用,并附带自我评估(说明该输出是否被段落所支持),从而使事实核查更为便捷。

新手讲解:

对比维度 传统 RAG Self-RAG
何时检索 每次都检索(固定 k 篇) 按需检索(自己判断要不要查)
检索后评估 评估检索内容相关性(IsREL)
回答质量评估 自评回答是否有支撑(IsSUP)、是否有用(IsUSE)
透明度 高(每段输出都带引用 + 支持度自评)

Section 2:问题形式化与框架概述(精译)

反思 token 的正式定义

原文关键句(Table 1 完整内容):

"Formally, given input x, we train ℳ to sequentially generate textual outputs y consisting of multiple segments y=[y₁,…,yₜ], where yₜ indicates a sequence of tokens for the t-th segment. Generated tokens in yₜ include text from the original vocabulary as well as the reflection tokens."

翻译:

形式化地,给定输入 x,我们训练模型 ℳ,使其依次生成由多个片段组成的文本输出 y=[y₁,…,yₜ],其中 yₜ 表示第 t 个片段的 token 序列。yₜ 中生成的 token 既包含原始词汇表中的普通文本,也包含反思 token。

四种反思 token 定义表(Table 1):

Token 类型 输入 输出值 含义
Retrieve x 或 (x, y) {yes, no, continue} 决定是否调用检索器 ℛ
IsREL(相关性) x, d {relevant, irrelevant} 判断文档 d 是否为解决问题 x 提供了有用信息
IsSUP(支持度) x, d, y {fully supported, partially supported, no support} 判断输出 y 中所有可核查陈述是否都被文档 d 所支持
IsUSE(有用性) x, y {5, 4, 3, 2, 1} 评估 y 是否是对 x 的有用回答(5 分制)

新手讲解:

把这四种 token 理解成模型内置的四个「自我检查清单」:

  1. Retrieve(要查吗?) —— 在开始回答之前或回答到一半时,模型先问自己:「我需要去外部知识库查资料吗?」答案是 yes/no/continue(continue 意味着「继续生成,暂时不用查」)。

  2. IsREL(资料相关吗?) —— 查回来资料之后,模型评估:「这篇文档和我的问题有关系吗?」如果无关,就不用,避免被误导。

术语解释:IsREL = Is Relevant(相关性判断)

  1. IsSUP(我的回答有依据吗?) —— 写完一段回答后,模型对照资料检查:「我写的这段话,文档里有依据吗?」三个等级:完全支持 / 部分支持 / 不支持。

术语解释:IsSUP = Is Supported(支持度判断),即回答是否被检索到的文档所「支撑」。factuality(事实性)就是指回答在多大程度上符合外部可核查的事实。

  1. IsUSE(答案有用吗?) —— 最后做整体评分:「这个回答对用户真的有帮助吗?」1 到 5 分。

术语解释:IsUSE = Is Useful(有用性判断)

关键洞察:这四个 token 不是后处理,而是嵌入在生成过程中的——模型一边生成答案,一边输出这些 token,形成「生成-反思-生成」的循环。


Section 3:Self-RAG 方法核心(精译全部段落)

3.1 推理阶段的整体流程

原文关键句:

"For every x and preceding generation y<t, the model decodes a retrieval token to evaluate the utility of retrieval. If retrieval is not required, the model predicts the next output segment, as it does in a standard LM. If retrieval is needed, the model generates: a critique token to evaluate the retrieved passage's relevance, the next response segment, and a critique token to evaluate if the information in the response segment is supported by the passage. Finally, a new critique token evaluates the overall utility of the response."

翻译:

对于每个输入 x 和前面已生成的内容 y<t,模型解码出一个检索 token 来评估检索的效用。如果不需要检索,模型就像标准语言模型一样预测下一个输出片段。如果需要检索,模型会依次生成:一个用于评估检索段落相关性的评判 token(IsREL),下一个回答片段,以及一个用于评估回答片段是否被段落支持的评判 token(IsSUP)。最后,一个新的评判 token(IsUSE)评估整体回答的有用性。

新手讲解:

推理时的完整流程如下(用伪代码形式展示):

输入:用户问题 x

Step 1: 生成 Retrieve token
  → 如果 Retrieve = No:直接生成回答,结束
  → 如果 Retrieve = Yes:继续 Step 2

Step 2: 调用检索器,拿回 K 篇文档 {d₁, d₂, ..., dK}
  对每篇文档 dᵢ 并行执行:
    → 生成 IsREL token(这篇文档相关吗?)
    → 如果 IsREL = irrelevant:跳过这篇
    → 如果 IsREL = relevant:
        → 生成回答片段 yᵢ
        → 生成 IsSUP token(yᵢ 有文档支持吗?)

Step 3: 给每个候选回答打综合分
  → 生成 IsUSE token(回答有用吗?)
  → 综合 IsSUP + IsUSE 打分,选出最优回答
  → 输出最优回答

与标准 LM 的对比:标准语言模型从头到尾只是预测 token,没有任何「中途检查」;Self-RAG 则像是一个边做边检查的学生,每写一段就回头看看资料,确认自己没写错。


原文关键句:

"f(yₜ,d,Critique) = p(yₜ|x,d,y<t)) + 𝒮(Critique), where 𝒮(Critique) = ∑_{G∈𝒢} wᴳ sₜᴳ for 𝒢 = {IsRel, IsSup, IsUse}"

翻译:

对片段 yₜ 的综合得分定义为:f(yₜ,d,Critique) = p(yₜ|x,d,y<t) + 𝒮(Critique),其中 𝒮(Critique) = ∑_{G∈𝒢} wᴳ sₜᴳ,𝒢 = {IsREL, IsSUP, IsUSE}。

新手讲解:

这个公式意思是:每个候选片段的最终得分 = 语言模型生成概率 + 反思 token 加权分

最关键的是:权重 wᴳ 在测试时可以自由调整!

比如:
- 做医疗问答时,把 IsSUP(支持度)权重调高 → 确保每句话都有文献依据
- 做创意写作时,把 IsUSE(有用性)权重调高,IsSUP 权重调低 → 允许更有创意的回答
- 做事实核查时,IsSUP 权重拉满 → 严格要求每个陈述都有资料支撑

这种推理时可调的权重机制,让同一个 Self-RAG 模型能适应不同的任务需求,而无需重新训练——这是 Self-RAG 比传统 RAG 更灵活的重要原因之一。


3.3 训练数据构造——Critic 模型

原文关键句:

"We create supervised data by prompting GPT-4 to generate reflection tokens and then distill their knowledge into an in-house 𝒞."

"For each group of reflection tokens, we randomly sample instances from the original training data... The critic achieves higher than 90% agreement with GPT-4-based predictions on most reflection token categories."

"We collected 4k-20k supervised training data for each type of reflection token. The critic model was initialized with Llama 2-7B and trained using standard conditional language modeling objective, maximizing likelihood."

翻译:

我们通过提示 GPT-4 生成反思 token 来创建有监督数据,然后将其知识蒸馏到内部的评判模型 𝒞 中。

对于每类反思 token,我们从原始训练数据中随机采样实例……评判模型在大多数反思 token 类别上与基于 GPT-4 的预测达到了超过 90% 的一致性。

我们为每种反思 token 类型收集了 4k-20k 个有监督训练样本。评判模型以 Llama 2-7B 为初始化,使用标准条件语言建模目标(最大化似然)进行训练。

新手讲解:

这里解决了一个关键工程问题:训练数据从哪来?

反思 token 是 Self-RAG 自己创造的新概念,互联网上当然没有带反思 token 的训练数据。怎么办?

两步走策略:

第一步:让 GPT-4 当「标注老师」
  → 拿出已有的问题-回答对
  → 用特定提示词让 GPT-4 判断「这里需要检索吗?这段资料相关吗?这个回答有支持吗?」
  → GPT-4 输出对应的反思 token 标注
  → 收集 4k-20k 条每种 token 类型的标注数据

第二步:训练一个「廉价评判模型」C(Critic Model)
  → 用第一步的 GPT-4 标注数据训练 Llama 2-7B
  → 这个小模型学会了 GPT-4 判断反思 token 的能力
  → 与 GPT-4 的一致性超过 90%
  → 用这个便宜的评判模型来大规模标注训练数据(不用每次都调 GPT-4)

类比:GPT-4 是有经验的资深老师,亲自批改了几千份作业,告诉我们每道题的判断标准。然后我们用这些批改过的作业,训练了一个「助教模型」——助教虽然没有老师强,但 90% 的题他能判断正确,用来大规模批改就够了。


3.4 生成器模型的训练

原文关键句:

"Self-RAG enables an arbitrary LM to generate text with reflection tokens by unifying them as next token predictions from the expanded model vocabulary. Specifically, we train the generator model ℳ on a curated corpus with interleaving passages retrieved by a retriever ℛ and reflection tokens predicted by a critic model 𝒞."

"Unlike critic training, M learns to predict the target output as well as the reflection tokens. During training, retrieved text is masked for loss calculation while the vocabulary expands to include reflection tokens."

翻译:

Self-RAG 通过将反思 token 统一为来自扩展词汇表的下一个 token 预测,使任意语言模型都能生成带有反思 token 的文本。具体而言,我们在一个精心构建的语料库上训练生成器模型 ℳ,该语料库中交错插入了检索器 ℛ 检索到的段落以及评判模型 𝒞 预测的反思 token。

与评判模型的训练不同,ℳ 需要同时学习预测目标输出和反思 token。训练期间,检索到的文本在损失计算中被掩码遮蔽,而词汇表则扩展以包含反思 token。

新手讲解:

生成器训练的巧妙之处在于:反思 token 被当作普通词汇来学习

传统方法需要单独的模块来做这些判断(一个模块判断要不要检索、另一个模块评估质量……)。Self-RAG 的做法更优雅:

  1. 把反思 token 加入词汇表(就像增加了几个新单词)
  2. 训练时,模型同时学习「写正常回答」和「在合适位置输出反思 token」
  3. 检索到的文档文本在计算损失时被「遮住」(masked),这样模型不用「背」这些文档,只用学习「利用它们」

训练数据构造流程:

原始训练数据(问题+回答)
  ↓ 评判模型 C 处理
    → 判断每段是否需要检索 → 插入 [Retrieve=?] token
    → 如果需要检索 → 用检索器找相关文档 → 插入文档
    → 评估文档相关性 → 插入 [IsREL=?] token
    → 评估回答支持度 → 插入 [IsSUP=?] token
    → 评估整体有用性 → 插入 [IsUSE=?] token
  ↓
带反思 token 的标注语料(用于训练生成器 M)
  ↓
生成器 M 在这个语料上微调
  → 学会:何时检索、如何评估、如何生成、如何反思

训练目标(最大化对数似然):

max_ℳ 𝔼_(x,y,r)~𝒟_gen log p_ℳ(y,r|x)

其中 r 就是插入的反思 token 序列——模型需要同时学会「生成正确答案 y」和「在正确位置生成正确的反思 token r」。


3.5 与 FLARE 的比较:Self-RAG 进了一步

背景说明(基于论文上下文):

FLARE(Active Retrieval Augmented Generation,EMNLP 2023)是 Self-RAG 之前最具代表性的「主动检索」方案,其核心思路是:当模型生成的下一个 token 置信度低于某个阈值时,触发检索。

Self-RAG 比 FLARE 更进一步的地方:

能力 FLARE Self-RAG
判断何时检索 是(基于 token 概率阈值) 是(基于 Retrieve token,更灵活)
评估检索质量(IsREL)
评估生成有支持吗(IsSUP)
评估整体有用性(IsUSE)
推理时可调权重
端到端训练 否(基于规则触发) 是(反思 token 是模型原生能力)

新手讲解:

FLARE 解决了「何时检索」的问题,就像一个学生知道「我不确定的时候才翻书」;但它不评估「翻回来的书有没有用」「我写的答案有没有被书支持」。

Self-RAG 是更完整的自我检查系统:不仅决定何时检索,还全程质控——检索前问「要查吗」、检索后问「有用吗」、写完答案问「答案有支持吗」、最后问「整体有用吗」。这是质的飞跃,从「被动验证」到「全程自我监督」。


Section 4:实验结果(关键段落精译)

4.1 实验设置概述

原文关键句:

"We evaluate on diverse tasks spanning short-form and long-form generation: Open-domain QA (PopQA, TriviaQA), reasoning (ARC-Challenge), fact verification (PubHealth), and long-form generation (Biography writing with FactScore, ASQA with citation accuracy)."

翻译:

我们在涵盖短文本和长文本生成的多类任务上进行评估:开放域问答(PopQA、TriviaQA)、推理(ARC-Challenge)、事实核查(PubHealth),以及长文本生成(传记写作,使用 FactScore 评估;ASQA,使用引用准确率评估)。

新手讲解:

6 个任务来自不同难度和类型,验证 Self-RAG 是否真的「全面」:
- PopQA:关于长尾实体的问答(冷僻知识,模型参数里记不住的)
- TriviaQA:常见的知识问答
- ARC-Challenge:需要推理的科学题
- PubHealth:公共健康领域的真假判断(事实核查)
- Biography + FactScore:写一段人物传记,用 FactScore 评估事实准确率
- ASQA:需要综合多个文档的长文本问答,评估引用准确率


4.2 与 ChatGPT 和 Llama2 的对比

原文关键句(Table 2 主要数字):

"Self-RAG outperforms ChatGPT and retrieval-augmented Llama2-chat on Open-domain QA, reasoning and fact verification tasks."

核心实验数据(Table 2):

任务 Self-RAG 7B Self-RAG 13B ChatGPT Ret-Llama2-chat
PopQA(准确率%) 54.9 55.8 29.3
PubHealth(准确率%) 72.4 74.5 70.1
Biography FactScore 81.2 80.2 71.8 79.9
TriviaQA(准确率%) 66.4 69.3 74.3
ARC-Challenge(准确率%) 67.3 73.1 75.3 26.0
ASQA EM 30.0 31.7 40.7

翻译与分析:

新手讲解:

从数字来看,几个重要发现:

  1. Self-RAG 7B 在 PopQA 上以 54.9% 碾压 ChatGPT 的 29.3%:这道题问的是冷僻知识(长尾实体),ChatGPT 因为训练数据覆盖不足而答错,Self-RAG 能够按需检索并找到正确资料,优势极大。

  2. Self-RAG 7B 在 PubHealth(72.4%)超越 ChatGPT(70.1%):事实核查任务,Self-RAG 的 IsSUP token 在这里发挥关键作用——模型知道每个陈述是否有文献依据。

  3. Biography FactScore:Self-RAG 7B 达 81.2,显著超越 ChatGPT(71.8):传记写作中「每句话是否符合事实」极为关键,Self-RAG 的 IsSUP 机制直接对准了这个痛点。

  4. ARC-Challenge(推理题):Self-RAG 13B 达 73.1,远超 Ret-Llama2-chat 的 26.0%:说明 Self-RAG 不只是「更好地检索」,其推理能力本身也经过了系统训练的增强。

  5. ASQA 和 TriviaQA:ChatGPT 仍略占优势:ASQA 需要很长的综合回答,ChatGPT 在这类开放式问题上的语言能力仍有优势;TriviaQA 是常见知识,ChatGPT 参数记得更准。

结论:Self-RAG 并非在所有任务上都全面超越 ChatGPT,但在事实密集型冷僻知识需要引用支撑的任务上优势显著——这正好对应 reflection token 的设计目标。


4.3 与标准 RAG 的关键对比

原文关键句:

"Self-RAG substantially outperforms traditional retrieval-augmented approaches. The key advantage emerges in tasks requiring reasoning rather than simple passage extraction."

翻译:

Self-RAG 大幅超越了传统检索增强方法。关键优势体现在需要推理而非简单段落抽取的任务上。

新手讲解:

传统 RAG = 「查了资料,把资料拼进去」,本质上是信息拼接。

Self-RAG = 「查了资料,用反思 token 评估资料质量,用 IsSUP 确保回答有依据,用综合打分选最优答案」,是一个有质量保证的生成-反思循环。

在 ARC-Challenge(推理题)上,差距最为惊人:
- 检索增强版 Llama2:26.0%
- Self-RAG 13B:73.1%

相差近 47 个百分点。这说明 Self-RAG 的提升不只来自「检索到更好的资料」,还来自「更好地利用和评估资料」以及「训练时注入的推理能力」。


总结:Self-RAG 的核心贡献

一图概览

传统 LLM:
  问题 → [语言模型] → 回答(可能有幻觉)

传统 RAG:
  问题 → [检索器] → 资料 → [语言模型] → 回答(但不知道资料有没有用)

Self-RAG:
  问题 
    → [Retrieve token: 要查吗?]
    → 若是:[检索器] → 多篇资料
    → [IsREL token: 每篇资料相关吗?]
    → 对相关资料 → [语言模型生成片段]
    → [IsSUP token: 片段有文档支持吗?]
    → [IsUSE token: 整体有用吗?]
    → 综合打分 → 选最优答案

三大核心创新

  1. Reflection Tokens(反思 token):把「要不要检索」「资料好不好」「回答有没有依据」「答案有没有用」这四个判断,变成模型词汇表里的特殊 token,在生成过程中自然产生,无需外部模块。

  2. Critic Model(评判模型):用 GPT-4 生成少量标注数据(4k-20k 条),训练出与 GPT-4 90%+ 一致的廉价评判模型,再用这个模型大规模标注训练数据——用小模型蒸馏大模型的判断能力

  3. 推理时可调权重:测试时可以调整 IsREL/IsSUP/IsUSE 的权重,使同一模型适应不同场景(精确型 vs 创意型)——这是「可控推理」的关键。

局限性


相关工作与附录

相关工作(Section 6)简要梳理了主动检索(FLARE)、标准 RAG(DPR/RAG 原论文)、自我评估方法(CoVE、自我一致性)等方向;附录补充了实验细节、提示词模板和消融实验数据,有兴趣可参阅原文。


精读完成。如需深入某一部分(如消融实验、具体提示词设计、与 FLARE 更详细的比较),可进一步扩展阅读 Section 5 和 Appendix。