Self-RAG: 大语言模型的自适应检索与自我评判
标准 RAG 无论检索是否有助于生成,都会在每次运行时执行检索。Asai 等人发表于 ICLR 2024 Oral 的 Self-RAG 提出了一个不同的问题:如果模型自己决定何时查找信息,并随后对结果进行评分会怎样?事实证明这非常重要,而且其机制足够清晰,值得仔细研究。
论文解读
传统检索增强生成 (Vanilla RAG) 的核心痛点在于它是无差别的:对每个输入检索固定数量的段落,将其拼接到前置上下文,然后生成。当检索确实有帮助时,这种方法效果尚可;但当检索到的段落不相关,或者模型权重中已经包含了答案时,这种做法反而会起到反作用。这篇由 Akari Asai、Zeqiu Wu、Yizhong Wang、Avirup Sil 和 Hannaneh Hajishirzi(华盛顿大学和 IBM 研究院)撰写的论文引入了自反思检索增强生成 (Self-RAG)。
其核心机制是在训练时将一组四个特殊的反思令牌 (reflection tokens) 嵌入模型的词表。Retrieve (检索) 决定是否调用检索器。IsRel (相关性) 评估检索到的段落是否真的包含针对查询的有用信息。IsSup (支持度) 检查生成的声明是完全、部分还是未得到段落的支持。IsUse (效用) 对整体回答质量进行 1 到 5 分的评分。模型学习在正常输出中内联发射这些令牌,从而在一次前向传递中完成对其自身检索和生成的评判。
训练分为两个阶段:首先,训练一个评判模型(基于 LLaMA 2 7B 微调),针对每种令牌类型使用大约 4,000–20,000 个标注示例进行训练,使其与 GPT-4 预测的一致性达到 90% 以上。然后,该评判模型离线标注一个包含 150,000 个示例的指令-输出语料库,生成器在该标注数据上进行训练,并将反思令牌视为普通词汇。这一过程不需要强化学习。
核心观点
- 四个反思令牌(Retrieve、IsRel、IsSup、IsUse)使模型拥有了结构化的内部对话,以判断证据是否值得信任,而不仅仅是一个简单的检索/不检索的二元决策。
- Self-RAG 13B 在 PopQA 上达到 55.8%,TriviaQA 达到 69.3%,PubHealth 达到 74.5%,ARC-Challenge 达到 73.1%,传记 FactScore 达到 80.2——在这些基准测试中均优于 ChatGPT 和检索增强版的 Llama2-chat。
- PopQA 的消融实验显示,在测试时移除检索会导致性能下降 20.8 个百分点,而仅移除评判模型只下降 2.9 个百分点——检索器是核心支撑,而评判在此基础上增加了校准能力。
- 在推理阶段,可以通过调整评判令牌的权重,在不进行任何重新训练 的情况下权衡引用精确度与流畅度。这使得模型的行为针对不同的下游应用是可配置的。
- ICLR 2024 程序委员会授予 Self-RAG Oral 论文身份(前 1%),反映了同行对其技术贡献的广泛认可。
哪些观点站得住脚,哪些存疑
消融实验的结果令人信服。“始终检索”与“从不检索”之间的差距巨大(20.8 个百分点);模型显然学会了区分有用检索与噪声。IsRel 和 IsSup 令牌在单纯的自适应检索之上增加了可衡量的价值。这是一个有意义的结果,而不仅仅是换汤不换药。
我对泛化能力的断言不太确定。所有五个评估任务(PopQA、TriviaQA、PubHealth、ARC-Challenge、ASQA)都是短文本或多选题问答——这正是单个检索片段能提供决定性信号的场景。而在多文档上下文的长文本生成(这正是金融任务所在的领域)方面,该模型受到的审视较少。传记 FactScore (80.2) 是最接近的代理指标,但与庞杂且跨度数年的费用支出账本相比,传记的结构相对简单。
此外还有一个可复现性的问题:评判模型的训练标签来自 GPT-4。这使得标签质量依赖于专有系统,并引入了未报告的 API 成本。后来的 CRAG (arXiv:2401.15884) 表明,一个 0.77B 的检索评估器(比 Self-RAG 的 7B 评判模型轻得多)就能修正检索质量,并在 PopQA 上比标准 RAG 提升 19.0 个百分点,这表明笨重的微调评判模型可能并非必要。即便关于选择性检索的核心见解成立,这仍是对该设计的一个有意义的挑战。
最后,对比基准也很重要。击败 ChatGPT(很可能是 2023 年底的 GPT-3.5-turbo)和 Llama2-chat 对于一个开源 13B 模型来说是一个合理的标准,但自那以后前沿模型已经有了长足的进步。在这些相同的基准测试上,Self-RAG 的自适应检索是否能击败采用简单“始终检索”设置且提示词优化良好的 GPT-4o,目前尚未得到解决。
为什么这对金融 AI 很重要
基于 Beancount 账本的金融智能体面临的正是 Self-RAG 所解决的检索区分问题。当用户询问“我本月的净收入是多少?”时,智能体可以从已加载的上下文中进行计算——此时检索可能只会引入噪声。当同一位用户询问“我记录了第三季度的承包商发票吗?”时,智能体需要扫描可能跨越数年的分录。始终检索会浪费上下文窗口并面临注入无关旧交易的风险;而从不检索则会错过查找。
IsRel 和 IsSup 令牌可以清晰地映射到账本验证逻辑。IsRel:检索到的交易条目是否真的与查询相关?IsSup:检索到的上下文是否真的支持生成的余额数值,还是该数字属于幻觉?效用评分 (1–5) 可以为回写置信度提供参考:只有当模型对其自身推理给出 4 或 5 分时,才提交建议的日记账分录,其余的则标记出来供人工审核。
可复现性的担忧在这里同样重要。对于生产环境中的会计智能体,依赖 GPT-4 生成训练标签是一个操作限制。如果更轻量的评估器(如 CRAG)能实现相当的选择性检索,那将是更具部署可行性的路径。即使具体的令牌训练配方被替换,Self-RAG 的设计原则——检索前决定,检索后评判——仍然极具价值。
延伸阅读
- CRAG: Corrective Retrieval Augmented Generation (arXiv:2401.15884) —— 在 Self-RAG 自适应检索思想的基础上,引入了更轻量的评估器,并在本地检索失败时提供网页搜索回退;值得在重叠的基准测试上与 Self-RAG 直接对比。
- RQ-RAG: Learning to Refine Queries for Retrieval Augmented Generation (arXiv:2404.00610) —— 专门关注复杂多跳问答的查询分解,这是 Self-RAG 处理得最不理想的场景。
- FRAMES: Retrieval and Augmentation for Multi-Hop Evaluation (arXiv:2409.12941) —— Google DeepMind 推出的多文档 RAG 基准测试,要求链接多个检索到的事实;对于 Self-RAG 风格的模型来说,这是一个更自然的硬性测试。
