跳到主要内容

RAG 的阴暗秘密:你的检索成功了,但答案依然错误

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数构建 RAG 系统的团队认为他们只有两种失败模式:检索未能找到相关文档,或者 LLM 在拥有文档的情况下产生了幻觉。第一种模式被强迫症般地衡量着 —— Recall@K、MRR、NDCG。第二种模式则被视为模型本身的问题。然而,这两种定义都不完整。

存在第三种介于两者之间的失败模式:检索成功(相关文档排在 Top-K 中),但检索到的上下文实际上并不包含足以正确回答问题的足够信息。模型变得非常自信,生成一个看似合理的答案,但结果却是错误的。对包括 GPT-4o、Gemini 1.5 Pro 和 Claude 3.5 在内的前沿模型的研究表明,这种情况在多步查询中的发生率超过 50% —— 而大多数生产系统都没有任何监测手段来检测它。

相关性不等于可回答性

这种区别在理论上听起来显而易见。但在实践中,检索系统几乎普遍针对主题相关性进行优化:该数据块是否提到了与查询相关的概念?但是,一个文档可能具有高度相关性 —— 讨论了完全正确的主题,在你的索引中排名第一 —— 但仍然没有包含回答问题所需的特定事实。

考虑这样一个查询:“第 36 个月后的贷款提前还款违约金是多少?” 一篇关于提前还款违约金的检索文档在主题上是相关的。它甚至可能在语义相似度上得分很高。但如果它只涵盖了前 12 个月,完全忽略了第 36 个月的计划表,那么它在上下文上就是不足的。模型现在有两个选择:承认无法回答,或者生成一个听起来很自信的推断。

大多数模型在大多数时间都会选择第二个选项。

来自 Google 和加州大学圣地亚哥分校的 ICLR 2025 论文《Sufficient Context: A New Lens on RAG Systems》为这种区别引入了严谨的定义和衡量框架。他们的关键发现是:在 HotPotQA 和 MuSiQue 等基准数据集上,很大一部分检索到的上下文对于正确生成答案来说是绝对不足的 —— 即使扩大上下文窗口(6,000+ token)所带来的准确率提升也微乎其微,因为将更多检索结果塞进提示词并不能修复从一开始就不充分的上下文。

上下文不足不会导致沉默 —— 而是会导致自信的错误

这里有一个反直觉的部分。你可能会期望当模型收到不充分的上下文时,它会采取模棱两可的态度或拒绝回答。数据表明情况恰恰相反。

Gemma 模型在完全没有上下文时,错误答案率为 10.2%;而在上下文不足的情况下,错误答案率上升到 66.1% —— 错误率增加了 56 个百分点。不充分上下文的存在主动让情况变得比“冷启动”更糟。RAG 给模型提供了一个锚点,它们自信地锚定在这个点上,而这个锚点是错误的。

这种模式出现在各种模型系列中。发表于 NeurIPS 2025 的 RefusalBench 测试了前沿模型识别检索上下文不足并拒绝回答的能力。在单文档任务中,Claude 3.5 Sonnet 达到了 73% 的拒绝准确率。在多文档任务中 —— 即答案需要跨多个检索块进行综合,且任何单个块都不足以回答问题时 —— 准确率降至 36.1%。在多文档任务中表现最好的模型(DeepSeek-R1)仅达到了 47.4%。结论是:目前没有任何模型能可靠地知道何时该停止回答。

一个银行业的案例研究捕捉到了这种失败在生产环境中的代价。一个用于客户服务的初始 RAG 系统显示出 99% 的假阳性率 —— 只要检索到的块中没有完全包含正确答案,它几乎每次都会提供自信的错误答案。其中一个记录的失败案例是:一位客户说“我不想要这个商业账户”,模型以 84.9% 的置信度触发了自动付款取消指令,而正确的响应应该是账户关闭程序。“取消付款”和“关闭账户”之间的语义距离不足以让检索系统进行区分,但完全足以导致严重的面向客户的错误。

在没有基准真相的情况下衡量上下文充分性

大多数团队不衡量上下文充分性的原因是,正确实施它的成本看起来很高:你需要人工标注员来评估每个“查询-上下文”对是否包含足够的正确回答信息。在生产环境的查询量级下,这是不可行的。

上下文充分性自动评估(Sufficient-context autorater)方法解决了这个问题。你不需要基准答案(ground-truth),而是使用提示词驱动的 LLM 直接评估“查询-上下文”对,并给出二进制输出:充分或不充分。这种框架迫使评估者评估上下文是否包含必要信息,这与生成的答案碰巧是否正确是分开的。

当使用仅一个标注示例(1-shot Chain-of-Thought)进行校准时,Gemini 1.5 Pro 作为自动评估器在预测上下文充分性方面达到了 93% 的准确率和 0.94 的 F1 分数。它的表现优于传统方法,如 TRUE-NLI(评估忠实度而非充分性)、FLAMe,以及检查答案字符串是否字面上出现在上下文中的原始启发式方法。

关键的设计原则是“查询-上下文”对的评估:你不在完整的 RAG 流水线或生成的输出上运行自动评估器。你在生成之前,针对查询加上检索到的块运行它。这将诊断与生成解耦,这意味着你可以将其用作过滤器,而不是事后审计工具。

HALT-RAG 系统利用 NLI 集成和轻量级分类器应用了类似的想法,根据任务类型不同,实现了 0.78–0.98 的 F1 分数,并具有经过良好校准的概率,从而实现了基于原则的弃权阈值设置。RAGAS 框架的 Context Recall 指标则从另一个角度切入:它将参考答案分解为原子主张,并检查每个主张是否可归因于检索到的上下文,从而间接地近似评估充分性。

当“不知道”是正确的工程决策时

如果你能检测到上下文不足,选择性放弃(selective abstention)在操作上就变得可行了。问题在于,这样做能带来多少准确率的提升。

Google 关于选择性生成的研究发现,在生成的回答中,正确答案的比例提升了 2–10%。在你考虑到这不需要模型重新训练,也不需要额外的检索基础设施——只需在检索和生成之间增加一个关口(gate)时,这个数字听起来就很有分量了。在一个每天生成 100,000 个答案的系统中,5% 的正确率提升意味着减少了 5,000 个错误答案。

GRACE 框架展示了通过训练端方法可以实现的目标,它使用强化学习来训练模型,使其能更好地校准自己的放弃决策。在 QASPER 数据集上,不可回答问题的准确率从 42.23% 提高到了 74.90%——提升了 32 个百分点。在 HotpotQA 上,平衡准确率达到了 78.87%,以 10% 的标注成本超越了更大规模的基线模型。这代表了一条根本不同的路径:与其在推理时检测不足,不如训练模型为其自身的置信度边界开发更好的内部信号。

对于无法进行微调的团队来说,利用激活信号进行基于置信度的放弃是一个可行的生产就绪替代方案。针对 Transformer 中间层(约 32 层中的第 16 层)FFN 激活模式的研究表明,这些信号优于基于 logit 的不确定性估计——其 AUROC 达到 0.772,而基于 logit 的基线仅为 0.590——同时与完整推理相比,仅增加了 42.5% 的额外延迟。在生产部署中,这意味着屏蔽了 29.9% 的响应(那些低于置信度阈值的响应),同时对通过的响应保持了 0.95 的精确率。

真正有帮助的架构变革

没有单个组件能解决上下文充分性问题,但分层架构可以很好地处理它。

将相关性检索与充分性检查分离。 你的检索步骤仍应优化相关性——这是向量索引所擅长的。但在将上下文交给生成模型之前,增加一个充分性检查作为第二道工序。这个检查可以是在历史“查询-上下文-回答”三元组上训练的轻量级分类器,也可以是在高风险查询子集上的 LLM 自动评分器,或者基于 NLI 的方法。关键在于这些是不同的信号,将它们混淆成一个检索分数会掩盖系统需要区分的特征。

将放弃设计为一等响应类型。 大多数 RAG 系统将“未找到答案”视为应尽量减少的失败案例。反转这个思路:定义一个阈值,低于该阈值时系统返回明确的“信息不足”响应,并展示检索到了什么以及为什么不足。这在操作上比总是生成答案要难,但它将失败模式从“自信的错误答案”转变为“诚实的未知”,用户和下游系统可以更好地处理后者。

衡量差距,而不只是检索指标。 Recall@K 告诉你相关文档是否排在前 K 位。它完全没有告诉你这些文档是否包含答案。在你的监控技术栈中加入一个单独的充分性信号——即使是一个粗略的信号,比如检查生成的答案是否可以回溯到检索上下文中的特定段落。仅跟踪检索指标的团队会持续低估其真实的错误率。

不要以上下文数量替代上下文质量。 增加块大小、重叠块或在提示词中加入更多文档是应对“RAG 不起作用”的标准反应。关于充分上下文的研究表明,当根本问题是检索到的文档中没有一个包含所需信息时,这些干预措施的收益微乎其微。来自不足语料库的更多上下文仍然是不足的上下文,只是速度更慢了。

生产现实

那个最初有 99% 假阳性率的银行案例研究,在应用了多层方法(查询预处理、微调检索器、多向量架构、交叉编码器重排序和基于规则的验证)后,假阳性率降至 3.8%。没有单一的干预措施能达到这一目标。这 96% 的假阳性率改善来自于将上下文充分性视为系统级属性,而非模型级能力。

这是研究中传达出的可靠信号:模型无法可靠地自我评估上下文不足,即使是前沿模型在多文档充分性检测上的失败率也超过 50%,解决方案需要对流水线进行结构性变革,而不只是更好的提示词。

构建一个知道何时停止的 RAG 系统比构建一个总是生成的系统更难。但是,那些总是生成的系统正在以你的检索指标永远无法捕捉到的速率产生自信的错误答案。这个差距正是实现真正可靠性的工作所在。


本文描述的上下文充分性评估和选择性放弃设计模式是活跃的研究领域——截至 2026 年初,“Sufficient Context”论文、RefusalBench 和 GRACE 代表了当前的技术水平。

References:Let's stay in touch and Follow me for more thoughts and updates