系统:运行中
← 返回所有攻击
ADVERSARIAL MEDIUM NEW

CRCP:能在分块与重排序后存活的 RAG 语料投毒

2026 年 6 月 9 日的一篇 arXiv 论文表明,许多语料投毒攻击在重排序之后会悄然失效,并提出了 CRCP——一种为适应真实 RAG 流水线而设计的“分块感知”变体。其启示在于如何评估,而不仅是如何防御。

2026-06-15 // 6 min affects: rag-pipelines, dense-retrievers, cross-encoder-rerankers, vector-databases

这是什么?

2026 年 6 月 9 日,Xi Nie、Hongwei Li、Shenghao Wu、Mingxuan Li、Jiachen Li 与 Wenbo Jiang 发表了 《When Poison Fails After Retrieval: Revisiting Corpus Poisoning under Chunking and Reranking Pipelines》(arXiv:2606.11265,cs.CR)。论文提出了一个看似简单的观点:许多已发表的 RAG 语料投毒攻击在实验室里看起来很强,但一旦进入真实流水线就会崩溃

语料投毒指的是这样一类攻击:攻击者将精心构造的文档注入检索增强生成(RAG)系统所依赖的知识库,使这些文档被检索到并引导模型的回答。先前的工作——例如针对稠密检索器的 GASLITE 攻击(CCS ‘25)——已证明即便投毒比例极低也可行。这篇新论文提出了几乎所有人都跳过的后续问题:当文档经过分块(chunking)、稠密检索、重排序(reranking)与基于证据的生成——也就是生产系统真正的运行方式——之后,它是否仍然有效?

工作原理

作者的发现是:许多现有攻击在重排序之后会大幅退化,即使被投毒的段落在稠密检索阶段获得了很高的相关性。他们将原因命名为检索粒度失配(retrieval granularity mismatch)。

有两点打破了攻击者的假设:

流水线阶段     作用                        对“文档级”载荷的影响
-----------  --------------------------  ----------------------------
分块          将文档切分为段落             对抗信号被碎片化
稠密检索       编码并对分块排序             被投毒分块或仍排名靠前
重排序         对候选项重新打分             偏好局部连贯、像答案的段落
生成          基于幸存项作答               载荷往往无法通过筛选

大多数先前的攻击会优化整篇文档,使其在嵌入空间中靠近某个查询。但流水线从不会看到那篇完整文档:它看到的是分块后留下的片段,以及一个交叉编码器式重排序器——后者更偏好局部读起来像答案的段落,而非仅有较高全局相似度的段落。分散在原始文档中的对抗信号被切碎并被丢弃。

论文的贡献 CRCP(Chunk-aware and Rerank-Consistent Poisoning,分块感知且与重排序一致的投毒) 是一种直面这一现实进行优化、而非绕开它的方法。CRCP 同时针对检索相关性、对重排序器的一致性以及分块边界鲁棒性进行优化,并在优化过程中显式建模分块变换,使生成的段落局部自洽——无论边界落在何处,每个幸存的分块都仍携带对抗意图。在使用多种检索器与重排序器的标准 RAG 基准上,现有方法对分块大小与重排序策略高度敏感,而 CRCP 的稳健性要好得多。(此处不复现任何载荷或优化代码;这是对一种已发表方法的概述。)

为什么重要

这里有两点不同的启示,而第二点更为重要。

狭义启示:重排序器并非抵御语料投毒的可靠防御。它确实提高了针对幼稚的文档级攻击的门槛——这是真正有用的——但可以构造出跨过该门槛的“分块感知”攻击者。

广义启示是方法论层面的,且双向适用。如果你在简化的检索设定下评估一种攻击,你会高估它。如果你以同样方式评估一种防御,你会低估威胁,并部署一个仅因为只在忽略你流水线的攻击下被测试过、才显得有效的控制措施。这正是提示注入领域曾因静态攻击串而落入的陷阱:能抵御昨日攻击的防御几乎说明不了什么。作者将 RAG 投毒界定为一个多阶段检索一致性问题,而非仅仅检索阶段的问题——也就是说,真正相关的攻击面是从分块到检索、重排序再到生成的整条链路。

这是基于基准的研究,而非真实环境中观察到的事件;而且攻击者必须首先设法把内容塞进你的语料库——这是一切投毒攻击的前提条件。

防御

  1. 控制谁能向语料库写入。 投毒需要注入途径:开放网络爬取、用户上传的文档、被抓取的 wiki、共享盘。应将数据摄取视为不可信边界——进行来源溯源、维护来源白名单,并对模型将当作事实依据的任何语料进行审查。

  2. 不要把重排序当作安全控制。 将其用于质量提升,但要假设有决心的攻击者能构造出可在其下存活的分块级段落。应叠加多层防御,而非依赖单一阶段。

  3. 在分块粒度上进行过滤。 既然攻击存在于分块之中,检测也应如此。分块级的困惑度与异常过滤——如 RAGuard 防御(arXiv:2510.25025)——能在生成之前捕获统计上异常的段落。可与源文档的来源评分配合使用。

  4. 结合稀疏检索与稠密检索。 BM25 + 向量的混合检索能破解仅针对嵌入空间调优的攻击,因为为嵌入邻近度优化的段落很少在词法匹配上同时取胜。这并非完整的解决方案,但能消除整整一类纯稠密优化。

  5. 针对你的真实流水线进行评估。 这是论文核心启示在防御上的应用:用自适应攻击者,通过你真实的分块大小、检索器与重排序器对投毒进行红队测试,而非单阶段的玩具设置。仅在简化设定中验证过的控制措施,在生产中仍未经证明。

  6. 审查被检索到的内容。 记录为每次回答提供依据的段落与源文档。当输出看起来被操纵时,检索层面的溯源正是让你找到被投毒记录的关键。

状态

项目参考日期备注
CRCP 论文arXiv:2606.112652026-06-09分块感知、对重排序一致的语料投毒
稠密检索投毒GASLITE, arXiv:2412.20953CCS ‘25在 ≤0.0001% 投毒比例下即可行
防御参考RAGuard, arXiv:2510.250252025-10分块级困惑度过滤
真实状态基准研究;未见生产环境事件报告

要点不是“重排序器毫无用处”,而是 RAG 安全必须端到端度量——分块、检索、重排序、生成——因为针对你真实流水线进行优化的攻击者,会找到你的单阶段评估从未测试过的那些环节。

Sources