一篇过时文档就能让 GPT-5.5 放弃正确答案:RAG 系统的陈旧文档中毒现象
一篇过时文档就能让 GPT-5.5 放弃正确答案:RAG 系统的"陈旧文档中毒"现象
一篇过时文档就能让 GPT-5.5 放弃正确答案:RAG 系统的"陈旧文档中毒"现象
一个让所有 RAG 系统都该失眠的实验
假设你问 GPT-5.5 一个医学问题:"高血压患者应该避免服用哪种非处方止痛药?"模型准确回答:"NSAIDs 类药物如布洛芬,因为可能升高血压、减弱降压药效果。"答得很好。
现在你给它一份 2010 年的医学综述,里面写着"高血压患者可考虑使用布洛芬缓解轻度疼痛,监测血压即可"——这在当时是合理的临床建议,但已被 2020 年的新指南推翻。你把这份旧文档塞进 RAG 检索结果里,再问同样的问题。
GPT-5.5 在 74/83 个类似医学问题上放弃了原本正确的答案,转而遵循过时文档的建议。
这是 2026 年 9 月由 University of Cambridge 的 Hieu Vo、James Hamilton、Nikola Jovanović、Mateja Vukelić、Lewis D. Griffin 团队发表的研究。他们构建了 317 个经过源核实的"知识反转"案例——涵盖医学、法律、软件、政策四个领域——系统性地测试了 12 个主流大模型在"过时文档污染"下的行为。
结果令人不安:一个高准确率的模型,不代表是一个抗污染的模型。
三层发现
发现一:一篇过时文档就能翻转 30-37% 的正确答案
在"中性条件"下——只是把过时文档放进检索结果,不附加任何"请遵循文档"的指令——12 个模型的答案被翻转的比例:
- 医学领域:最高 91%(Llama-70B)、85%(Qwen-72B)
- 法律领域:相当可观
- 政策领域:相当可观
- 软件领域:相对抗性强一些,17%-35%
发现二:指令压力让污染率翻倍
当 prompt 里加一句"请遵循检索到的文档"时,污染率从 30-37% 跳到 66-75%。Qwen-72B 从 37% 升到 75%(OR=4.92),Llama-70B 从 30% 升到 66%(OR=4.50)。
更让人担心的是:51 个问题中有 19 个从中对变错,0 个从错变对(McNemar p=3.8×10⁻⁶)。指令压力是单向的——它只让答案变差,不让答案变好。
这揭示了一个反直觉的事实:"请遵循文档"这个看似合理的 RAG 指令,是一个系统性风险。在生产系统中,这种指令被广泛使用,目的是让模型"信任"检索结果而不是依赖过时的训练数据。但当检索结果本身过时时,这个指令反而成了"强制中毒"开关。
发现三:模型"知道"文档过时,但仍然遵循
研究者做了一个单独的实验:让模型先判断文档是否过时,再回答问题。结果显示:模型有时能正确识别文档已过时,但仍然在最终答案中遵循它。
这是最让人不安的发现。这不是"模型不知道文档过时",而是"模型知道但仍然遵循"。这和人类专家的行为模式完全不同——一个医生看到 2010 年的过时指南,会立刻警觉:"这是旧指南,我应该查最新的。"模型不会。
为什么日期信息救不了你
你可能会想:在文档里加上日期,模型不就知道哪些是过时的了吗?
研究者测了。他们设计了 50 个有明确"有效期边界"的案例——同一份证据,在边界日期之前是有效的,在边界之后被推翻。他们让模型在两个日期下看同一份证据,只改日期。
只给日期信息,模型几乎不改变行为。日期信息对模型来说,就像贴在文档上的便利贴——看到了,但不影响决策。
但如果把有效期边界明确地写出来——"这份指南在 2020 年 6 月之前有效,之后被新指南取代"——情况就完全不同了:
- Qwen-72B:50/50 个案例正确地从旧答案切换到新答案
- Llama-70B:47/50(散文形式)或 50/50(表格形式)正确切换
- 小模型改善有限
因果追踪:注意力头是入口
研究者做了更深的探查:他们用"激活修补"(activation patching)技术,把"有效日期"和"过期日期"的内部状态在模型中间层互换,看答案如何变化。
效果巨大且高度特异:把"有效日期"的内部状态塞进"过期"prompt,答案偏好转移了 23.08 logits(Qwen-72B)和 7.82 logits(Llama-70B)。反向修补则反向转移。而对照位置(不变的源日期位置)只转移 0.04 和 0.03 logits。
这个效果是由注意力头承载的。在最早出现效果的层,注意力贡献 0.91 logits(Llama-70B)和 2.34 logits(Qwen-72B),而 MLP 贡献接近零。研究者用 10 个发现项识别候选注意力头,在 10 个独立确认项上测试——Qwen 的 10 个头中 8 个、Llama 的 15 个头中 7 个通过 Holm 校正。
这些头不是"专门处理时间"的——它们也参与普通的日期比较和非时间的阈值决策。它们是一个通用的比较机制,碰巧也被用于时间适用性判断。
检索侧的缓解:元数据质量决定效果
如果模型侧防不住,那在检索侧过滤呢?研究者测试了一个混合重排序器(hybrid re-ranker),结合语义相关性和文档时效性,每个检索集包含 1 篇最新文档 + 2 篇过时文档。
当文档日期准确时,重排序能减少 4.6-10.0 个百分点的下游污染(Qwen-7B 和 GPT-4o 在医学和法律领域)。但当日期缺失时,效果微弱;当日期错误时,反而可能帮倒忙——把过时文档排到前面。
元数据质量是检索侧防御的基础。没有可靠的日期元数据,重排序器无能为力。
这对 RAG 系统设计意味着什么
这篇论文对 RAG 系统设计有几个直接启示:
1. "请遵循文档"指令是双刃剑。它能让模型克服训练数据过时的问题,但也能让模型被过时文档毒化。在生产系统中,应该用更精细的指令——"遵循文档中明确标注为当前有效的部分",而不是笼统的"遵循文档"。
2. 日期元数据是基础设施。不是"有就行",要准确、要可信、要和文档内容对齐。错误的日期比没有日期更危险。
3. 显式有效期边界比隐式日期更有效。在文档预处理时,把"这份指南在 X 日期之前有效"这种信息提取出来,比单纯保留日期字段更有用。大模型能遵循规则,但不能从原始数据中推断规则。
4. 高准确率不等于抗污染。GPT-5.5 在无检索条件下答对 92-100% 的问题,但一篇过时文档就能让它放弃 74/83 个正确答案。评估模型时,"准确率"和"抗污染能力"是两个独立的维度。
一个更深的洞察:模型"知道"和"使用"是两回事
这篇论文最深的发现不是"过时文档能污染 RAG"——这个直觉上大家都知道。最深的发现是:模型可以"知道"文档过时,但仍然"使用"它。
这和人类认知的"双系统"理论遥相呼应。Kahneman 的系统 1(快速直觉)和系统 2(慢速推理)——人类也有"知道但做不到"的时刻(知道不该吃宵夜但还是吃了)。但人类的这种失败是偶尔的、有意识的;模型的这种失败是系统性的、无意识的。
研究者观察到:模型在"判断文档是否过时"和"回答问题"两个步骤之间,存在一个"断裂"。判断步骤能正确识别"这份文档已过时",但这个判断不会传递到回答步骤。模型在回答时,仍然把过时文档当作有效证据使用。
这不是知识问题,是知识使用问题。模型有知识,但不会用知识。这是对齐研究里一个被低估的方向——我们花了大量精力让模型"知道"正确的事,但很少研究让模型"使用"它知道的事。
跨域类比:医学指南的更新机制
医学界有一套成熟的"指南更新"机制:当新证据出现时,专业学会发布新指南,旧指南被明确标注为"已取代"。医生在查阅指南时,会看到"本指南已被 XXXX 年新指南取代"的明确标注。
这套机制的本质是:不删除旧文档,但明确标注其状态。旧文档仍然有历史价值(研究某个时代医学认知的窗口),但在临床决策中不再有效。
RAG 系统应该学习这套机制。不是"删除过时文档"——这会丢失历史信息——而是"明确标注状态"。论文的实验证明:当文档有明确的有效期边界时,大模型能正确地遵循规则。
结语
"过时文档中毒"不是某个模型的 bug,是 RAG 架构的系统性缺陷。在追求"更大、更准、更快"的 LLM 竞赛中,我们忽略了一个基本问题:模型如何处理"曾经正确但现在错误"的信息?
人类专家有一套成熟的认知策略:看到旧指南会警觉、会查最新版本、会权衡证据时效性。模型没有这套策略。它把所有检索到的文档当作"当前有效的证据",除非你明确告诉它哪些是过时的。
这篇论文给我们的启示是:RAG 系统的可靠性,不只取决于检索质量,更取决于"时间维度的元数据质量"。一个能检索到 1000 篇相关文档的系统,如果无法判断哪些文档仍然有效,可能比一个只能检索到 10 篇但全部有效的系统更危险。
在信息爆炸的时代,"知道"不难,"知道什么仍然有效"才难。
论文:Stale-Document Poisoning: When Outdated Retrieval Overrides Correct Model Answers, arXiv:2609.31342, 2026-09-25 作者:Hieu Vo, James Hamilton, Nikola Jovanović, Mateja Vukelić, Lewis D. Griffin (University of Cambridge) 数据集:317 个经过源核实的知识反转案例,涵盖医学、法律、软件、政策四个领域