FLARE:主动检索增强生成
上周我正在阅读 Lewis 等人发表的基础性 RAG 论文——检索一次、添加结果、生成。这种方法可行,但它假设你预先知道自己需要什么。FLARE (EMNLP 2023) 直接挑战了这一假设:如果检索的最佳时机是在句中,即模型开始变得不确定的时候,会怎样?对于任何像 Beancount 智能体这样需要对无法放入单个上下文窗口的账本历史进行推理的系统来说,这个问题都值得深思。
论文概览
由 Zhengbao Jiang, Frank F. Xu, Luyu Gao, Zhiqing Sun, Qian Liu, Jane Dwivedi-Yu, Yiming Yang, Jamie Callan 和 Graham Neubig 撰写的《主动检索增强生成》(Active Retrieval Augmented Generation)提出了 FLARE:前瞻性主动检索增强生成(Forward-Looking Active REtrieval augmented generation)。他们要解决的问题是长文本生成过程中的幻觉,此时模型必须在长输出中提取多条知识。标准 RAG 在查询时检索一次,并希望检索到的段落涵盖生成所需的所有内容——这对于简短回答来说没问题,但 对于多段落回答来说非常脆弱。
FLARE 将生成分解为句子层级的步骤。在每一步,它都会生成一个候选的下一句。如果该候选句中任何词元(token)的预测概率低于阈值 θ,FLARE 就会将这些低置信度跨度视为检索信号,利用它们(遮盖或补全)来形成查询,从维基百科中检索,并根据检索到的上下文重新生成句子。其结果是系统仅在不确定时、且大约在不确定的位置触发检索,而不是预先加载它永远不需要的内容。所有实验都在 GPT-3.5 (text-davinci-003) 上运行,无需任何微调。
核心观点
- 置信度作为检索触发器:词元概率低于 θ 表示模型可能产生幻觉;检索仅在此时触发,而非默认触发。作者发现,对 40–80% 的句子触发检索通常效果最佳。
- 前瞻性查询:FLARE 不仅使用已经生成的内容作为查询(即“前窗口”方法),还使用预测的下一句——即模型认为它将要说的话——作为一个更具针对性的检索查询。
- 两种变体:FLARE-instruct 遮盖低置信度词元并使用遮盖的跨度作为查询;FLARE-direct 使用整个预测句子。在 2WikiMultihopQA 上,direct 变体达到了 51.0 EM,而 instruct 变体为 42.4。
- 相较于单次检索的提升是真实的,但不均衡:在 2WikiMultihopQA 上,FLARE-direct 的 EM 达到 51.0,而单次检索为 39.4,无检索为 28.2——这是一项显著的改进。在 ASQA 上差距要小得多(41.3 vs. 40.0),而 WikiAsp(UniEval 53.4 vs. 52.4)几乎持平。
- 明确的失败案例:作者报告称,FLARE 在 Wizard of Wikipedia 和 ELI5 上没有收益,这些任务的输出较短,这意味着多步检索增加了开销却没有带来收益。
- 成本:由于生成和检索是交织进行的,每个示例可能会触发多次语言模型补全和检索调用。缓存并不简单。
哪些经得起推敲,哪些不能
前瞻性框架是真正聪明的部分。使用预测内容作为检索查询比仅使用前缀更具信息量,特别是对于中间结论决定了下一步需要什么事实的多跳任务。2WikiMultihopQA 上 51.0 对 39.4 的 EM 差距支持了这一点。
但 FLARE 的置信度信号完全取决于模型的校准程度。来自基础补全模型(如 text-davinci-003)的词元概率与不确定性有相当大的相关性。但对于指令微调或 RLHF 微调的聊天模型来说情况并非如此,这些模型通常过度自信——即使在产生幻觉时也会输出高概率词元。2024 年的一项后续研究《统一主动检索》(Unified Active Retrieval, UAR, arXiv:2406.12534)在更广泛的检索决策套件上对 FLARE 进行了基准测试,发现它在各种场景中仅达到 56.50% 的准确率,而基于分类器的 UAR 方法准确率为 85.32%。校准问题不是边缘案例;它是该方法赖以生存的核心假设。
论文还未完全解决检索粒度问题。句子级触发是一个合理的启发式方法,但有些事实跨越子句边界,而另一些则定位在单个实体名称上。数字词元(金额、日期)的低概率触发检索的方式应该与连接词的低概率不同。论文对称地对待所有低置信度词元。
最后,“不确定即重新生成”的循环引入了延迟。作者承认了这一点,但没有根据延迟预算进行量化,而这对于交互式或近实时应用至关重要。
为什么这对财务 AI 至关重要
一个总结多年账本的 Beancount 智能体无法预先检索所有历史分录——上下文会溢出,而且大部分内容与当前的回答无关。FLARE 的设计很好地契合了这个问题:生成对账评论的初稿,发现对特定供应商余额的置信度较低,仅检索相关的交易,然后重新生成该句子。这种模式是合理的。
然而,校准问题是一个严重的问题。生产环境中的财务智能体几乎普遍使用指令微调的聊天模型(GPT-4、Claude、Gemini),而不是基础补全模型。如果这些模型过度自信——这在涉及数值断言时经常发生——它们恰恰会在应该触发检索时跳过检索。一个对交易日期产生幻觉却拥有极高置信度且从不检索验证的 Beancount 写入智能体比没用的还要糟糕。
实践经验是将 FLARE 的前瞻性查询构建与不完全依赖词元概率的检索触发器结合起来。显式的不确定性标记(对冲短语、圆整数字、模型近期未见过的命名实体)可以补充置信度信号。或者采用 UAR 的方法:在模型隐藏状态上训练一个轻量级分类器,它比原始对数几率(logits)对误校准更具鲁棒性。
延伸阅读
- IRCoT:“Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions”(arXiv:2212.10509)——将检索与思维链(CoT)步骤而非词元置信度相结合;在多跳任务上值得与 FLARE 直接对比。
- 统一主动检索(Unified Active Retrieval, UAR, arXiv:2406.12534)——直接的后续研究,揭示了 FLARE 的校准差距,并提出了跨四个检索场景的基于分类器的检索决策。
- “Adaptive Retrieval without Self-Knowledge? Bringing Uncertainty Back Home”(arXiv:2501.12835)——一篇 2025 年的论文,重新探讨了是否可以通过更好的校准技术来修复基于词元概率的触发器。
