Home / 大语言模型 / Self-RAG:学会决定何时检索,再检查证据是否支持回答

082|Self-RAG:学会决定何时检索,再检查证据是否支持回答

返回目录 · 发展时间线

论文:Akari Asai 等,Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection,2023,ICLR 2024。采用首版正文;结果数值保留该版口径。部分特殊 token 在 HTML 中渲染不完整,以下以其语义名称解释,避免复制损坏的排版。项目与代码见官方页面。

图表来源:Akari Asai 等,2023,原文;CC BY 4.0。本篇展示做了图形区域裁切、按原图面板顺序拼合,图中数据与标签未改动。

先接住前作的问题

RAG把段落接入生成器,却未自动决定是否该查、文档是否相关或论断是否受支持。本篇直接发展这条路线,把几个判断写进可训练输出;GraphRAG关注全局覆盖,是另一个可组合但不能替代支持度检查的轴。

五个前置概念

五个前置概念:检索增强从参数之外引入证据;知识蒸馏学习教师的标签行为;损失掩码控制哪些位置参与训练;片段级 beam search保留多条回答续写路径;引用支持度判断来源是否蕴含对应陈述。

一、问题设定:检索到相关材料后,怎样判断回答是否真受支持

输入 xx 的回答切为片段 y1,…,yTy_1,\ldots,y_T,实验中按句子切分,检索器返回段落 dd。同一段材料可以相关却不支持某个年份或身份断言,因此要分开学习四类判断;本篇用监督训练和可控推理,没有PPO或测试奖励策略更新。

四种反思信息分别回答不同问题:

信号 所依赖的信息 含义
Retrieve 问题及已有回答 需要新证据、无需检索,或继续使用已有材料
IsRel 问题与段落 这段文字是否对解决问题有用
IsSup 问题、段落与生成片段 片段中的可核查陈述是否被段落完整或部分支持
IsUse 问题与回答 回答整体对用户是否有用

“相关”不意味着“蕴含”。一篇介绍某人的文章与出生年份问题相关,但若文章没有出生年份,就不能支持任意年份。支持度也不是世界真实性:若检索材料本身有误,忠实转述依然可能错误。效用则可能要求补充解释,不能完全等同于引用精度。

二、把检索、相关、支持和有用性定义为不同控制量

第一阶段:训练标注用 critic

作者先用 GPT-4 生成不同类型的反思标签,再训练一个基于 Llama 2 7B 的 critic。critic 的任务是给定相关条件预测标签,而不是生成完整答案。它降低了给大量训练实例逐一调用外部模型的成本。

这个 critic 与 Actor–Critic 中估计长期回报的 value critic 不同。名称相同,学习目标并不相同。它也不是训练过程中始终在线给策略打分的奖励模型:主要用于离线加工数据。

第二阶段:训练生成器同时输出内容与反思

对原始指令回答,离线调用检索器和 critic,插入检索段落以及反思 token。然后训练生成器预测回答与反思:

Lgen=−∑t∈Alog⁡pθ(zt∣x,z<t),L_{\mathrm{gen}}=-\sum_{t\in\mathcal A}\log p_\theta(z_t\mid x,z_{<t}),

zz 是包含内容、证据和反思的扩展序列,A\mathcal A 只包含应学习生成的位置。检索段落的 token 不计入损失,因为它们是外部输入,不是要求模型背出来的目标。反思 token 则参与训练,使模型学会在正确时机预测这些信号。

这一区别解释了为什么只在普通 RAG 提示末尾加一句“请反思”不等价:Self-RAG 改了词表、训练数据格式与推理控制协议。训练之后,生成器自己输出反思,不需同时部署那个离线 critic;但外部检索器和语料库仍然存在。

第三阶段:按需检索与片段级搜索

检索可由模型生成的离散标签触发,也可由归一化检索概率超过阈值 δ\delta 触发。较低阈值鼓励检索,较高阈值节省调用;这是推理配置,不是重新训练参数。

当触发检索时,不是将所有段落毫无区分地拼成一大块。模型针对不同段落并行生成候选片段,并利用反思概率对候选排序。反思加权部分可写作

St=wrelsrel,t+wsupssup,t+wusesuse,t.S_t=w_{\mathrm{rel}}s_{\mathrm{rel},t} +w_{\mathrm{sup}}s_{\mathrm{sup},t} +w_{\mathrm{use}}s_{\mathrm{use},t}.

ss 来自相应 token 组归一化后的概率或等级加权值,ww 是用户指定的控制权重。完整片段选择还结合生成概率,并在多个片段间保持有限 beam。上式只是解释反思评分部分,不能把它当作已经重新训练的奖励目标或严格校准的概率。

特殊 token 的归一化,为什么会改变一次检索决策?

设在检索决策位置,模型赋给 Yes、No 两个控制 token 的原始词表概率分别为 qYq_Y、qNq_N。在只比较这两种决策的情形,使用的分数是 qY/(qY+qN)q_Y/(q_Y+q_N),不是 qYq_Y。这是对限定选项重新归一化;含 Continue 的位置还要遵循论文附录 A.3 对可用标签集合的约定,不能任意忽略一个有效动作。

原创教学例。 取 qY=0.06,qN=0.04q_Y=0.06,q_N=0.04,其余词表占0.90。二选一条件分数是0.60;阈值0.20会触发检索,拿0.06直接比较却会得到相反动作。大量概率落在普通词上,不代表限定控制决策偏好 No。这也解释为什么实现时必须检查分母,而不能把论文的阈值直接套到普通词表概率。

同样,反思权重确实能改变排序,但它不是事实概率。为单独观察支持度项,设两候选其他评分相同,相关性分数分别为0.9、0.7,支持度分别为0.2、0.8。相关性权重固定为1、支持度权重为 ww 时,两者的反思分差为 0.2−0.6w0.2-0.6w;w>1/3w>1/3 后,第二候选反超。这里仅比较前文的反思评分部分,没有假装复现完整 beam 打分。若模型把第二段的支持度误判为0.8,调高 ww 反而会放大错误。

实现时为每次反思评分记录合法标签集合、该集合的概率和以及归一化后分数;检索决策和支持度等级可能使用不同标签集合,不能共用一个未经核对的分母。再保存所选片段与证据ID,才能定位是检索门控、支持度判断还是最终beam选择改变了答案。

自构例子。 问“某研究者在哪一年加入大学?”段落 A 说“2018 年获得博士”,段落 B 说“2020 年加入该校”。两段都相关,但把 A 的 2018 当成任职年份不受支持。Self-RAG 理想情况下会给 A 所生成答案较低支持度,选择 B。若问题是“把这句话改得礼貌一些”,则通常无需外部检索。这个例子展示判断职责,不代表系统每次都能正确区分日期。

三、离线标注并训练反思token,再执行片段搜索

训练:
    用外部教师标注反思类型,训练离线 critic
    对指令回答检索材料,由 critic 插入反思标签
    微调生成器预测回答与反思,屏蔽检索文本损失
推理输入:问题、已生成片段、检索语料与控制权重
直到回答结束:
    预测是否需要检索
    若不需要,则直接生成下一片段
    若需要,则获取 K 个候选段落
    对每个段落预测相关性,生成片段并预测支持度、效用
    结合生成分数与反思分数,保留 B 条片段级路径
    继续扩展保留路径,并保存对应证据来源
输出:选择的回答、引用及可供核查的反思信息

四、按引用精度、召回和检索频率检查可控取舍

比较同训练基线后,再看支持度权重如何同时改变引用与MAUVE;条件筛选后的人评不可当成所有输出可靠率。

项目 原文设置与范围
模型 生成器 Llama 2 7B/13B,离线 critic 基于 7B
训练数据 正文约称 150K;附录 A.2 列出的精确合计为 145,619,包含指令、知识问答和 ASQA 等任务数据
训练预算 附录 B.1:4 张 A100 80GB、3 epoch、批量 128、峰值学习率 2×10−52\times10^{-5}、3% warmup;7B 长度 2,048、13B 1,524
检索 默认 Contriever-MS MARCO 的前 5 段;人物传记和开放问答额外用网页搜索的 5 段;ASQA 各基线使用统一提供的 GTR-XXL 前 5 段
推理 token 级贪心,片段 beam 宽度 2;常用检索阈值 0.2,要求引用的 ALCE 为 0
测试集 PopQA 的 1,399 个稀有实体问题;TriviaQA 11,313 问;另有 PubHealth、ARC、人物传记、ASQA
指标 短答以包含标准答案为准,并非严格全文精确匹配;长答采用 FactScore、str-em、ROUGE、MAUVE 和引用精度/召回
消融与重复 关键消融只用 50K 训练实例,ASQA 抽 150 实例;未报告全部设置的多随机种子训练区间

因此主表不是所有模型严格同数据、同算力比较。更有诊断价值的是同训练对的 Llama2-FT,以及移除检索或 critic 的消融。另一方面,网页搜索和 Wikipedia 版本会变化;PopQA 使用较新的 Wikipedia 是为了改善新实体覆盖,重跑时必须固定语料版本。

“零样本评价”指测试提示没有附示范,不意味着训练数据完全没有相同任务类型。ASQA 出现在训练混合中,不能把其结果写成从未见过这一任务的泛化证明。

证据一|表2:同训练对基线提供了更有意义的对照。 7B Self-RAG 与检索增强 Llama2-FT 的 PopQA 分数为 54.9 对 48.7,PubHealth 为 72.4 对 64.3;说明改进不只是额外指令数据。但是 Self-RAG 还结合反思、检索训练与搜索,主表无法单独归因给其中一个模块。

证据二|表2:引用精度提高不等于全面占优。 13B 的 ASQA 引用精度为 70.3,检索增强 ChatGPT 为 65.1;引用召回则是 71.3 对 76.6,str-em 为 31.7 对 40.7。前者更强的一个维度,伴随其他维度的差距。传记 FactScore 的 7B 为 81.2,13B 为 80.2,也不能简单画成参数越多事实性必然越好。

证据三|图3(a):检索价值随任务变化。 50K 消融中,完整模型 PopQA 为 45.5,推理禁用检索后 24.7;PubHealth 则从 73.5 到 73.0。它支持稀有实体知识对外部资料更敏感。ASQA 中,无 critic 的训练配置从完整模型 32.1 降为 18.1;但该配置同时改变了数据组织,不能解释为某一个特殊 token 的孤立因果效果。 图3的三个面板分别是组件消融、引用精度与流畅度权衡、检索频率与归一化准确率;选择支持度权重时不能只盯住引用精度。

Self-RAG组件消融、引用支持度权重以及检索阈值的效果
原实验图摘引:Akari Asai 等,2023,图3,PDF第9页;核对原文。原版权保留。

证据四|图3(b)(c) 与图4(d):控制是真实的,保证不是。 增大支持度权重时引用精度上升、MAUVE 下降;提高检索阈值后检索频率降低,PopQA 比 PubHealth 更容易掉分。小规模人工检查的 S&P 为 PopQA 92.5、传记 70.0,但评估排除了模型自己判为无关或无支持的实例,不能当作所有输出的无条件可靠率。

Self-RAG三个任务的训练规模曲线及引用支持度人工评价
原文图形摘引:Akari Asai 等,2023,图4,PDF第10页;核对原文。

这几组证据共同支持把 RAG 拆成检索、利用、归因和效用来研究。它们没有证明自评 token 是诚实而完备的内部信念,也没有保证带引用回答就不再产生幻觉。

五、自评与教师误差仍会被评分权重放大

它与 RLAIF 一样利用教师评价,但不必执行在线强化学习;它与普通检索重排也不同,因为还检查生成后的论断是否被证据支持。

成本包括 GPT-4 标签、critic 训练与离线数据加工、检索索引以及多个候选片段。减少检索次数并不等于总延迟一定下降,片段分支和搜索还会耗费计算。模型自评错误、文档过时和教师标签偏差可能沿着整条流程传播。

六、把逐句支持性与全局资料覆盖联合检查

逐句支持与全库覆盖仍是两种条件。GraphRAG组织社区主题,DeepVerifier在完成后查证轨迹疑点;组合时要继续核算检索、候选和核查成本。

自测:能否拆开三个“可信”

1. 为什么“文档相关”不足以支持回答?

答案:相关只说明文档谈到所问主题,支持则要求其中的信息足以推出具体陈述。人物传记可能相关却没有目标日期;模型填入自己猜的日期仍属无支持。即使来源支持,来源自身也可能错误,所以支持度不等于世界真实性。

2. Self-RAG 的 critic 与 RL 的价值 critic 是否相同?

答案:不同。这里的 critic 学习预测反思标签并离线标注训练数据;最终生成器以监督目标学习回答和标签。它不通过 Bellman 回报估计指导策略梯度。推理时生成器可自己输出这些标签,但仍要调用检索系统。

3. 如果提高支持度权重后引用精度上升,能否宣称系统更好?

答案:需要同时看正确性、信息覆盖、引用召回、可读性和成本。系统可能通过少说或避免困难陈述提高精度。论文展示了与 MAUVE 的取舍,所以权重选择应依据任务需求,并用多指标或人工任务完成评价确认,而不能只优化一个引用数字。