Paper

过时文档投毒:RAG 检索到旧证据时,模型反而答错——arXiv 2609.31342 精读

5 min read ·

一句话问题:检索增强为什么会让对的变错

RAG 的存在理由几乎不言自明:模型的知识有截止日期,检索外部证据来补齐。但 arXiv 2609.31342(2026 年 9 月 25 日提交,Md Shamim Ahmed、Lukas Galke Poech 与 Richard Röttger 三位作者)指出这个直觉里藏着一个反直觉的失败模式:检索到的证据只在它仍然有效时才有帮助。当证据过时——曾经正确、后来被修订的事实——模型不仅得不到帮助,反而会放弃自己本来答对的答案,转而复述检索到的旧结论。作者把这种现象命名为 stale-document poisoning(过时文档投毒)。

要强调的是,这里没有攻击者。不是有人往知识库里塞了假文档,而是知识库的生命周期管理没跟上事实的变化:医学指南修订了、法律条文废除了、API 弃用了、平台政策更新了,旧文档还躺在索引里等着被召回。这是一个纯粹的工程性时间对齐失败,也因此值得每个维护 RAG 系统的人认真对待。

基准构造:317 个可验证的知识反转

论文的第一个贡献是基准本身。作者构造了 317 个经过验证的知识反转(knowledge reversals),覆盖医学、法律、软件和平台政策四个领域。所谓知识反转,是指某个事实陈述在时间 T1 为真、在时间 T2 为假且被官方来源明确修订的情形——例如某诊疗指南曾推荐某药物后将其撤下。每个案例都锚定在带日期的官方来源上,保证「旧答案曾经正确」不是研究者的主观判断,而是可查证的历史事实。

这个构造的巧妙之处在于隔离了变量。常规 RAG 评测里,模型答错可能是因为知识本来就欠缺;而在反转场景下,作者可以分别测「无检索时模型答什么」和「检索到过时证据时模型答什么」,两者的差值就是过时证据造成的净伤害。跨 12 个模型还观察到一个次级规律:近期的医学反转比年代久远的更难抵抗——模型对刚被修订的知识几乎没有残留的更新意识,参数化记忆与最新的官方口径完全一致地停留在旧世界上。

核心数字:翻盘率比你想的严重

实验结果按严重程度递进排列。第一层,无任何信任指令时,仅仅把过时证据放进上下文,Llama 系列有 30%、Qwen 系列有 37% 的本来正确的回答被翻转。注意这是最保守的设定——模型没有被要求听从文档,证据只是「恰好出现」。

第二层,现实更糟。生产系统的提示词几乎总会写「请根据以下检索内容回答」,而一旦显式要求遵循文档,Llama 的翻盘率升到 66%,Qwen 升到 75%。我们为了压制幻觉而设计的忠实性指令,在证据过时的场景下成了放大伤害的开关。

第三层是全谱系观察:四个开源模型在四个领域上的投毒率从 17% 到 91% 不等;而作为对照,时效匹配的最新证据被遵循的比例是 97% 到 100%。这个对照说明模型并不缺乏「跟着证据走」的能力,缺的是判断证据是否仍然适用的能力。

机制发现:失效时点的显式说明几乎是特效药

论文最有工程价值的部分是关于「模型能不能学会看日期」的实验设计。作者固定 50 个反转的历史证据完全不变,只改变评测日期,观察模型的行为差异。结论分两段:只给日期,模型只有有限的适应;但当提示词明确告知「旧证据在何时停止适用」时,较大的模型几乎完美地切换到了正确答案。因果干预实验进一步确认,这条有效性信息直接塑造了模型的最终决策,且支撑时间适用性判断的内部组件同时服务于一般性比较任务——也就是说,模型并不缺推理机制,缺的只是那条没被传进去的失效说明。

这对 RAG 工程的启示很直接:与其指望模型自己从文档日期推断适用性,不如在检索管线里就把「本文档自某日起被某某取代」这类元信息显式注入上下文。很多团队的文档系统里这些信息本来就存在(替换关系、状态字段),只是从来没被送进提示词。

缓解方案:recency-aware 混合重排器

除了提示层,作者还给出检索层的方案:一个固定的、具备时间感知的混合重排器,在相关性排序的基础上结合文档时效信号。实测在日期准确的前提下,投毒率降低 4.6 到 10.0 个百分点。注意两个限定条件:收益依赖时间元数据的可靠性——如果文档日期本身就是错的或缺失的,重排器无从发力;同时它是「降低」而非「消除」,选择性信任问题没有一劳永逸的解。

工程行动清单

落到实践,这篇论文值得每个 RAG 维护者对照自查四件事。第一,盘点知识源的失效管理:文档有没有状态字段、被谁取代、何时失效?没有的话这是第一优先级。第二,检查提示词里的忠实性指令是否无条件——「遵循检索内容」应该加上「除非内容已过时」的时间限定,并显式注入失效时点。第三,在重排层引入时效信号,尤其是医学、法律、合规这类反转高发领域。第四,用知识反转案例构建自己的回归评测集:过时证据翻盘是一个可测、可回归的指标,不该等到线上事故才发现。RAG 的下一个竞赛维度不是召回率,而是选择性信任:模型不仅要判断证据说了什么,还要判断它是否仍然适用。

Frequently asked questions

什么是过时文档投毒?
指 RAG 系统检索到的外部证据曾经正确、但已被新事实取代时,模型反而抛弃自己本来正确的参数化答案、转而复述过时证据的现象。它不是恶意攻击,而是检索增强的时间对齐失败:证据在「当时」是对的,但已经不再适用。
这个基准是怎么构建的?
作者构建了 317 个经过验证的知识反转案例,横跨医学、法律、软件和平台政策四个领域,每个案例都以带日期的官方来源为依据,例如某医学指南先推荐后被撤回某疗法。这种构造保证了「旧答案曾经正确」这一点可被严格验证。
哪些模型被翻盘得最严重?
在无任何信任指令的条件下,Llama 系列约 30%、Qwen 系列约 37% 的正确回答被过时证据翻转;一旦提示词里明确要求遵循检索文档,翻盘率分别升至 66% 和 75%。四个开源模型在四个领域上的投毒率区间为 17% 到 91%,差异非常大。
工程上最有效的缓解手段是什么?
三个层次:第一,给文档维护可靠的时间元数据并在检索时过滤或降权已失效内容;第二,提示词中明确告知旧证据的失效时点,实验显示大模型据此几乎能完美切换到新答案;第三,部署 recency-aware 的混合重排器,实测可将投毒率降低 4.6 到 10 个百分点,但前提是日期准确。
为什么说日期提示本身不够?
实验固定历史证据、仅改变评测日期后发现,仅提供日期只能带来有限的适应;模型的参数化知识需要一条显式的「旧证据何时失效」说明才能触发切换。这说明时间适用性判断不是模型自发完成的,需要系统在设计时主动把失效信息传给模型。
// next.txt ›

Some outbound links in this post are affiliate links — see disclosure.