搜索增强大模型有一个让人哭笑不得的失败模式:检索器明明把正确的证据摆在了上下文里,模型的回答却还是来自它的旧记忆。用户看到的是「带引用的过时答案」,引用本身甚至可能是编的。10 月 15 日提交的 arXiv 2610.21731(Retrieved but Not Read: Understanding Why Search-Augmented LLMs Fail to Use Available Evidence,Owen Walters、Lihu Chen、Francesca Toni)把这个问题做了一次罕见的系统解剖:不仅量化了失败率,还用逐层可解释性方法定位了失败发生的深度。这篇是本周 paper 栏目里工程含金量最高的一篇,值得精读。
实验设计:用时间做天然的对照组
核心巧妙之处在实验材料。作者构造了一组时序事实——在模型训练截止之后值发生了变化的事实,典型如足球转会、职位变动。这类事实有一个理想性质:闭卷回答必然过时。因此只要答案对了,就一定是用了检索证据;答案错了,就说明证据没有被有效使用。这比在普通问答集上加噪声干净得多。
评估覆盖两条口径:一个是部署状态下的专有模型 Luna(带原生网页搜索),另一个是六个开源权重配置在受控检索下的表现——检索结果由实验者固定,排除搜索质量这个混杂变量。任务包括开放问答、claim 校验和 fact-sheet 检查三类,代码与数据全部开源。
发现一:只读摘要、不打开页面,是系统性行为
第一个数字就很扎眼:各模型 2.6% 到 76% 的搜索回合只读了搜索结果摘要,一个页面都没打开就直接作答。部署中的 Luna 是 53.6%;受控检索下分化剧烈——qwen3-8b 高达 76%,gemma-4-31b 达 64.6%,而 gpt-oss-120b 只有 2.6%。同样拿到 23 条搜索结果(Luna 的平均值),不同模型的行为像不同的用户:有的条条点开,有的只扫一眼标题。
这个行为直接关联答案质量。按阅读深度合并七个配置的数据:
| 阅读深度 | 过时答案率 | 不忠实引用率 |
|---|---|---|
| 仅看摘要 | 6.4% | 6.4% |
| 打开页面但未引用 | 1.7% | 1.6% |
| 打开并引用页面 | 1.3% | 2.3% |
体育领域把差距拉到最大:开源模型仅看摘要时过时率 20.2%,打开并引用后只有 2.1%——十倍的差距。更危险的关联是:在带引用的开放问题上,答案过时时 81.8% 的引用是不忠实的;答案正确时这个比例只有 0.9%。也就是说,过时与编造引用倾向于一起出现——「带引用」根本不等于「有据可查」,仅看摘要的回答,引用大概率是模型对摘要内容的再加工甚至幻觉。
发现二:证据影响了内部预测,但没有赢下最后一层
真正把这篇论文抬到一个新高度的是第四节的机制分析。作者用 logit lens 与 J-lens 逐层读三个开源模型的内部表示,观察「球员现在效力哪家俱乐部」这个预测在 35 层网络中的演化。
在失败案例中观察到一个清晰的**「交叉超越」**现象:检索到的正确俱乐部(新值)在模型上层率先取得预测优势,但在最后几层被过时俱乐部(旧值)反超,最终输出旧答案。量化看,在上层三分之一的层里,页面证据对新值仍然是正向促进的(Δnew 大于零,p 值不超过 0.04),但对旧值的抑制严重不足——gemma-4-31b 甚至完全没有表现出对旧值的抑制。成功案例则相反:比如 qwen3-8b 在第 35 层附近,新值得到 +15.59 的提升、旧值被压下 −5.96,净差距拉开 21.55。
这个发现改写了问题定义。此前业界默认的假设是「证据没进上下文深处」或「注意力没分配到证据上」,所以补丁方向是重排序、上下文位置优化。而论文的证据链指向另一个结论:证据被读到了,也在内部表示里占了先手,但在生成前的最后阶段输给了参数记忆里的旧知识。这是「抑制失败」而不是「读取失败」。
发现三:失败模式跨模型共享
论文还回答了一个实用问题:一个模型上发现的失败,会出现在另一个模型上吗?把 Luna 部署中观察到的九种失败类型放到受控检索下复测,其中七种显著相关,odds ratio 从 1.84 到 6.46——比如 fact-sheet 直接盖章通过(OR 为 6.46)、不忠实引用(5.23)、漏掉过时信息行(4.85)。阴性对照的 OR 是 1.05,证明这不是普遍相关的假象。
工程含义很直接:你在一个模型上做的 RAG 失败分析,大概率可以迁移到别的模型。为某个模型写的红队用例、监控规则,换成开源模型继续有效。这对做评估基础设施的团队是个好消息——失败模式是模型家族的共性,不是个体的怪癖。
三个可以立刻落地的干预
论文最后给了几个干预实验,其中最实用的是附录 H 与 K:
-
把页面正文直接放进 prompt,别只给摘要。在 50 个体育事实的对照里,需要模型自己在搜索菜单里找页面时,gemma-4-31b 失败 14 次;把页面内容直接放进 prompt 后失败归零。gpt-oss-20b 从 11 次降到 1 次。qwen3-8b 只从 16 降到 8,说明干预效果也有模型差异,但方向一致。
-
打开页面后让模型重述完整任务再作答。这个几乎零成本的技巧在 fact-sheet 任务上挽回了 157 个失败中的 41 个(26.1%),部分配置上挽回率高达 57.1%。原理大概是对齐了「任务目标」与「当前证据」的注意力,防止模型在长上下文里忘了自己在验证什么。
-
把「打开过页面」当引用质检条件。仅看摘要的回答,引用不忠实风险是打开引用回答的三到五倍。在 agent 的管道里加一条规则:引用的 URL 必须出现在实际打开过的页面列表里,否则触发重新检索或降级提示。
局限与边界
作者自己列的局限很诚实:专有模型只测了 Luna 一个;失败率数据被体育领域主导(这也是时序事实最容易构造的领域);分层分析是相关性观察而非因果验证,没有做 activation patching;受控检索无法完全还原真实搜索引擎的噪声分布。另外要注意,2.6% 到 76% 的巨大方差意味着「你的模型会不会犯这个错」高度依赖具体模型——评估要用自己的模型跑,别照搬论文数字。
一句话总结这篇论文的价值:它把 RAG 失败从「检索质量问题」重新定义为「知识与证据的竞争问题」,并给出了第一个关于竞争发生在哪一层的直接观测。对所有做搜索增强产品的人,这是本月必读。