当上下文反噬:基于文档级注意力坍缩的RAG投毒攻击检测 When Context Bites: Detecting RAG Poisoning via Document-Level Attention Collapse
发现RAG投毒会劫持注意力形成坍缩信号,据此提出轻量可解释的检测框架D-SCAN
前置知识
RAG(检索增强生成)
RAG 先用检索器(如稠密向量检索)从外部知识库召回若干相关文档,把它们拼进提示词作为上下文,再让大语言模型基于这些证据生成答案,用来弥补模型参数内知识的过时与缺失。
本文的安全问题正是发生在检索回来的那几篇文档上:攻击者向知识库注入对抗文档,就能操纵生成器的最终输出,这是全文要检测的对象。
RAG 投毒攻击
攻击者构造语义上与问题高度相关、但内嵌错误事实或触发短语的对抗文档,使其被检索器召回;模型读取后会把攻击者指定的错误答案当作可信证据输出,典型代表是 PoisonedRAG,它联合优化检索触发与生成触发。
论文的实验全部基于 PoisonedRAG 构造投毒样本,理解攻击如何同时骗过检索器和生成器,才能理解为什么需要新的检测信号。
自注意力权重
Transformer 生成每个 token 时计算注意力分布 $\alpha_{t,j}$,表示生成第 $t$ 个 token 时对上下文中第 $j$ 个位置的关注程度。注意力矩阵可以直接从模型前向传播中抽取,反映模型内部的信息聚合行为。
本文的全部检测特征都来自注意力权重:把 token 级注意力按文档聚合、归一化后统计其熵和方差,是 D-SCAN 的核心原料。
注意力熵与文档级注意力熵
信息熵 $H=-\sum_k p_k\log p_k$ 度量分布的分散程度。本文把各文档的注意力密度归一化为 $\hat{w}_k$ 后计算文档级注意力熵 $H_{doc}$:熵低说明注意力集中在一两篇文档上,熵高说明注意力均匀摊开。
论文的核心发现是投毒样本的文档级注意力熵显著下降,即注意力坍缩,这个统计量正是线性分类器最重要的判别特征。
困惑度与生成置信度
生成置信度指输出 token 平均概率 $P_{mean}=\frac{1}{T}\sum_{t=1}^{T}P(y_t|y_{<t},X)$,困惑度是其倒数形式的换算,二者都衡量模型对输出的自信程度。传统假设是模型遇到矛盾证据时会困惑、置信度下降。
论文用数据推翻了这一假设:投毒样本置信度反而更高(作者称之盲信),这解释了为什么基于不确定性的旧检测方法会失效。
AUC 与 F1
AUC 是 ROC 曲线下面积,衡量分类器对正负样本的排序能力,0.5 等于随机猜测;F1 是精确率与召回率的调和平均,对类别不平衡更敏感。检测任务常同时报告两者。
论文所有实验表格(Table 1-3)都以 AUC 和 F1 为指标,需要理解这些数值才能判断 D-SCAN 相对基线的提升幅度。
研究动机
检索增强生成(RAG)通过外部知识库弥补大模型的知识盲区,但攻击者可以向检索库注入对抗文档,操纵生成器输出攻击者指定的有害答案,这在医疗、法律等高风险问答系统中构成不可接受的风险。现有检测手段大多停留在输出侧:要么用困惑度、不确定性、多次采样一致性等指标判断答案是否可信,要么训练黑盒分类器检测异常输出。本文作者用 Llama-3.1-8B-Instruct 在 2Wiki 训练集上做统计分析时发现一个反直觉现象——「盲信」:投毒文档是针对最大化目标答案生成概率而优化的,因此中毒样本的平均生成置信度反而比干净样本更高、标准差更低,十次采样的余弦相似度更高而散度更低。也就是说被攻击的模型输出显得异常自信,「冲突信息会推高困惑度」的传统假设完全失效,基于不确定性的检测(如 HaloScope、INSIDE 一类方法)被釜底抽薪;同时黑盒检测器只给二值判断,既不解释攻击机理,也无法定位污染源。
本文的目标是论文的目标是绕开不可靠的输出侧信号,直接深入生成器的内部动力学,回答两个递进的问题:投毒攻击在大模型内部到底留下了什么可观测、且不依赖攻击是否成功的指纹?能否据此构建一个低开销、可解释、能嵌入实时推理流程的检测框架?作者希望找到机制层面的安全指示器——即使攻击最终未能改变答案(失败攻击),也能在表面输出完全正常时提前暴露攻击意图;同时检测器要在标准推理时顺手完成,不需要重型网络或昂贵的多次采样,并具备定位到具体是哪一篇检索文档引发异常的能力,把检测从「事后看输出」推进到「过程中看机制」。
与已有工作不同的是,已有工作要么面向幻觉而非投毒——HaloScope、ReDeep 等假设模型幻觉时置信度更低,这与投毒场景的「盲信」恰好相反;要么像 RevPRAG 那样监控神经元激活,但未显式建模检索上下文的结构先验。本文的独特切入点是承认 RAG 上下文由多个稀疏分布的离散文档组成这一事实,在文档粒度上量化注意力分配:定义按文档长度归一化的文档注意力密度 $Attn(D_k)$,再计算文档级注意力熵。实证发现中毒样本的文档级注意力熵急剧下降、注意力向投毒文档坍缩,作者称之为注意力坍缩。相比输出语义或 token 级激活,这种跨文档的注意力劫持是攻击成功的因而非果,对攻击成败不敏感,是更本质、更鲁棒的机制级指纹。
核心方法
D-SCAN(Document-level Signal Collapse Analysis)的直觉是:正常回答多跳问题时,模型会把注意力相对均匀地分摊给多篇相关证据文档;而投毒文档通过语义主导劫持了自注意力机制,使注意力异常集中到恶意来源并压制真实证据。技术路线先实证、后检测:作者在 Llama-3.1-8B-Instruct 与 2Wiki 训练集上考察生成置信度 $P_{mean}=\frac{1}{T}\sum_{t=1}^{T}P(y_t|y_{<t},X)$、采样一致性,以及新提出的文档注意力密度 $Attn(D_k)=\frac{1}{L_k}\sum_{t=1}^{T}\sum_{j\in D_k}\alpha_{t,j}$($L_k$ 为文档长度,$\alpha_{t,j}$ 为生成 token 对上下文 token 的注意力权重),归一化为 $\hat{w}_k=Attn(D_k)/\sum_{i=1}^{K}Attn(D_i)$ 后计算文档级注意力熵 $H_{doc}=-\sum_{k=1}^{K}\hat{w}_k\log\hat{w}_k$。确认坍缩主要发生在文档级之后,把 token 级与文档级的熵、方差、密度特征输入线性分类器,即可随推理实时判别中毒样本。
核心创新是把检测范式从「检查输出语义」转变为「检查生成内部动力学」,并锁定文档级注意力坍缩这一神经签名。与不确定性类方法存在本质差异:投毒诱发的不是困惑而是盲目自信,中毒样本的困惑度低于干净样本,因此任何建立在「异常输出等于高不确定性」假设上的方法都会被针对似然优化的自适应攻击欺骗;而注意力坍缩是攻击得以成功的原因本身——投毒文档劫持了模型的信息聚合机制——所以它与最终输出是否被篡改无关,失败攻击同样会留下信号。另一个关键设计是注意力密度按文档长度 $L_k$ 归一化,消除长文档天然累积更多注意力权重的偏置,使跨文档、跨样本的比较公平,保证熵与方差特征反映的是真实的分配倾斜而非文档长度差异。
方法步骤详情
完整流程分四步。第一步构造检测场景:用 E5-base-v2 从 2018 年英文 Wikipedia 检索 top-5 文档,干净样本保留 5 篇正常文档;投毒样本用 PoisonedRAG 生成的对抗文档替换其中 2 篇,测试问题来自 2Wiki、HotpotQA、Musique 的标准划分。第二步生成并采集内部状态:把检索上下文输入 Llama-3.1-8B-Instruct,对每个问题独立采样 10 次以覆盖生成随机性,抽取生成 token 对所有上下文 token 的注意力权重 $\alpha_{t,j}$。第三步计算特征:token 级统计量(注意力熵、方差、密度)与文档级统计量——先把注意力按文档聚合、除以长度得到 $Attn(D_k)$,再归一化为分布 $\hat{w}_k$ 并计算熵 $H_{doc}$、标准差等,全部特征定义见开源代码。第四步训练与推断:用这些特征训练一个线性分类器区分干净与中毒样本;推理时特征计算随一次前向传播完成,开销极低。由于熵的下降意味着注意力集中在个别文档,检测器还能顺带定位出引发坍缩的具体投毒文档,提供内在可解释性。
技术新颖性
技术新颖性体现在三点。其一,文档注意力密度是新度量:此前的可解释性工作如 ReDeep 用激活分离事实回忆与强迫幻觉、RevPRAG 用激活分析检测投毒,都在 token 或神经元粒度操作,没有显式利用「检索上下文由多篇离散文档构成」这一 RAG 特有结构,本文首次在文档粒度上做长度归一化的注意力聚合。其二,发现零样本检测器的逆缩放现象:Qwen2.5-7B 在 2Wiki 上 AUC 达 0.8536,反而显著超过 Qwen2.5-14B 的 0.7327 与 Qwen3-30B 的 0.5695,说明识别投毒的能力并非模型规模的红利,过度的指令对齐反而可能加剧模型对检索内容的信任。其三,线性分类器加轻量特征使方法天然可解释且可实时部署,消融实验证明文档级特征是主导信号:去掉后 2Wiki AUC 从 0.9337 跌至 0.8098,降幅大于去掉 token 级特征的 0.8618,证明跨文档注意力劫持比 token 级细粒度异常更稳健。
实验结果
主实验在 2Wiki、HotpotQA、Musique 三个多跳问答基准上进行(E5-base-v2 检索 top-5,PoisonedRAG 构造投毒,每题 10 次采样)。表 1 显示 D-SCAN 全面领先:2Wiki AUC 0.9337/F1 0.8578,HotpotQA 0.8330/0.7783,Musique 0.9060/0.8358;最强基线 ReDeep 在 2Wiki 只有 0.8403 且在 Musique 掉到 0.7666,RevPRAG 均在 0.71-0.75 区间,HaloScope 最弱(2Wiki 仅 0.6563)。零样本检测呈逆缩放:Qwen2.5-7B 达 0.8536,反而超过 Qwen2.5-14B(0.7327)与 Qwen3-30B(0.5695),Llama-3.1-8B 约 0.5363 接近随机。表 2 表明单次采样即可用:N=1 时 AUC 为 0.8744/0.8012/0.8813,N=10 提升到 0.9337/0.8330/0.9060。表 3 消融显示去掉文档级特征的损失(2Wiki 0.8098)大于去掉 token 级(0.8618),证实跨文档注意力劫持是主导信号。图 4 显示即使攻击未能改变最终答案,D-SCAN 仍保持高检测保真度,且对成功攻击样本检测更强,印证坍缩与攻击行为本身绑定而非与输出错误绑定。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| RAG 投毒检测(2Wiki) | AUC / F1 | 0.9337 / 0.8578 | ReDeep 0.8403 / 0.7470;RevPRAG 0.7534 / 0.7896 | AUC 较最强基线提升 0.0934(约 +11%) |
| RAG 投毒检测(HotpotQA) | AUC / F1 | 0.8330 / 0.7783 | ReDeep 0.7945 / 0.7092;RevPRAG 0.7134 / 0.7562 | AUC 较最强基线提升 0.0385,F1 提升 0.0221 |
| RAG 投毒检测(Musique) | AUC / F1 | 0.9060 / 0.8358 | ReDeep 0.7666 / 0.7165;RevPRAG 0.7414 / 0.7770 | AUC 较最强基线提升 0.1394,鲁棒性优势最明显 |
| 单次采样检测(N=1,2Wiki/HotpotQA/Musique) | AUC | 0.8744 / 0.8012 / 0.8813 | 自身 N=10 上限 0.9337 / 0.8330 / 0.9060 | 仅损失 2-6 个点即可免多次采样,支持实时检测 |
局限与改进
作者在结论中较为克制,未系统列出局限,但可从文本提取几点。第一,D-SCAN 是需要训练的检测器,线性分类器依赖带标签的中毒/干净样本,冷启动场景下如何获取训练分布未讨论;第二,实验仅覆盖 PoisonedRAG 一种攻击族与 top-5 检索设置,对 NeuroGenPoisoning、AuthChain 等伪造权威证据链的攻击以及 top-10/20 长上下文的泛化未验证;第三,生成器只有 Llama-3.1-8B-Instruct 一款,特征是否跨模型迁移未知,而零样本实验中 Qwen3-30B 的 AUC 仅 0.55-0.57 恰恰暗示注意力坍缩信号在不同架构上的强度并不一致;第四,正文称完整特征定义见开源代码,论文本身未说明使用了哪些层的注意力,削弱了自包含性。我个人的观察是:线性探针面对刻意模仿正常注意力分布的自适应攻击可能脆弱,且论文未报告检测带来的额外推理延迟和定位投毒文档的定量精度。
独立分析的弱点
第一,监督依赖:线性分类器需要带标签的中毒样本训练,若攻击者更换算法(例如在优化生成概率的同时惩罚注意力集中度,主动模仿均匀注意力),特征分布会漂移,改进方向是引入无监督参考分布检验或对多个攻击族做对抗训练。第二,采样开销与最优性能存在张力:N=10 才达到最佳 AUC,N=1 有 2-6 个点回落,严格的流式场景只能接受 N=1,可研究单次生成内的注意力波动是否可替代多样本平滑。第三,文档定位能力缺乏定量评估:论文声称能定位投毒文档,但未报告定位的精确率/召回率,建议补充。第四,熵类特征对文档数 K 敏感,top-5 的结论未必延伸到 RAG 系统常见的数十篇召回。第五,注意力可解释性本身有争议:高注意力不必然等于因果依赖,可补充因果干预实验(遮蔽高注意力文档观察输出变化)来加固「注意力坍缩=攻击指纹」的论证。
未来方向
作者明确希望这项发现能启发「机制感知防御」(mechanism-aware defenses)研究:不止于检测,还可以在推理时对注意力进行干预,例如对坍缩文档做注意力重加权、上下文重排或证据剔除来抵消劫持。基于本文成果可延伸的方向包括:把文档级注意力特征迁移到 Agent 记忆投毒检测(如 Agent-Poison 场景的长期记忆污染)与长上下文攻击;研究注意力坍缩信号的跨模型共享结构,训练模型无关的通用检测头,解决逆缩放暴露的架构差异问题;设计不依赖标签、基于干净参考分布的统计检验版本以消除冷启动依赖;以及把 D-SCAN 与一致性验证、语义一致性过滤、认证鲁棒 RAG 等防御栈组合成纵深防御体系,并评估自适应攻击者的绕过成本。
复现评估
复现条件相当友好。代码已在 GitHub 开源(https://github.com/yingtaoren/D-Scan.git),全部组件都是公开资产:数据集用 2Wiki、HotpotQA、Musique 的标准 train/test 划分,检索器为 E5-base-v2,检索语料是 2018 年英文 Wikipedia,攻击构造直接复用 PoisonedRAG,生成器为 Llama-3.1-8B-Instruct,单张 24GB 级别的消费级显卡即可完成推理。检测器本身只是线性分类器,训练开销可以忽略;最重的部分是抽取注意力权重,且 N=1 就能获得全基准 AUC 0.8 以上的结果,不必跑 10 次采样。主要不确定性在于:论文正文未写明使用了哪些层、哪些头的注意力以及特征全集,需对照开源代码确认实现细节;另外复现图 4 的成败分组需要按攻击是否改变最终答案重新标注样本,有一定工程量。
论文图表
并排对比干净生成与投毒生成的内部动力学:上方展示生成置信度分布,中毒样本的平均 token 概率更高、标准差更低(盲信现象);下方展示注意力分布,中毒样本的注意力向投毒文档集中、文档级注意力熵显著下降(注意力坍缩),且坍缩在文档粒度比 token 粒度更明显。
这是全文两个核心经验发现(盲信与注意力坍缩)的直观证据,解释了为什么输出侧检测失效、为什么要在文档级看注意力,是理解论文动机的起点。
对比干净与被攻击生成在 top-5 检索文档上的注意力权重分配柱状图:干净样本的注意力在各文档间相对均匀分布,反映对多证据的推理;被攻击样本的注意力不成比例地涌向投毒文档,同时压制真实事实文档。
它把抽象的注意力坍缩落实到具体文档的权重数值上,直观支撑「语义主导引发注意固定」的病理判断,是文档级特征合理性的直接证据。