1. RAG系统对抗攻击的隐蔽性分析
检索增强生成(RAG)系统通过将外部知识检索与大型语言模型(LLM)相结合,显著提升了生成内容的准确性和时效性。然而,这种架构也引入了新的安全风险——攻击者可能通过向知识库中注入有毒文本来操纵系统输出。论文《Through the Stealth Lens: Rethinking Attacks and Defenses in RAG》深入探讨了这一威胁,并提出了一种基于注意力机制的创新防御方案。
1.1 威胁模型与攻击场景
在典型的RAG攻击场景中,我们假设攻击者具备以下能力:
- 完全了解RAG系统架构和知识库结构
- 可以向知识库中注入最多⌊ϵ·k⌋个中毒段落(ϵ为污染比例,k为检索结果数量)
- 无法修改或删除现有知识库内容
攻击者的核心目标是:通过精心设计的有毒段落,使系统在特定查询下生成预定的错误回答。这种攻击的隐蔽性体现在,攻击者无需直接修改模型参数或检索算法,而是通过污染知识源间接影响系统行为。
值得注意的是,当污染比例ϵ≥0.5(即有毒段落占检索结果多数)时,防御将变得极为困难。因此论文主要关注更现实的ϵ<0.5场景,这对应于攻击者只能影响少量检索结果的情况。
1.2 隐蔽攻击的特征分析
隐蔽攻击之所以难以检测,源于以下几个关键特征:
- 语义合理性:有毒段落通常包含看似合理但与查询意图不符的内容
- 注意力劫持:攻击段落会刻意包含能吸引模型注意力的关键词(heavy hitters)
- 分布一致性:单个攻击段落可能混在多个正常段落中,不易通过简单规则识别
这些特征使得传统基于内容匹配或规则过滤的防御方法效果有限。论文通过大量实验发现,中毒段落会在模型的注意力分布上留下独特"指纹",这为新型防御机制提供了突破口。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基于注意力机制的防御原理
2.1 注意力异常的核心发现
作者通过分析Llama 2等模型在生成过程中的注意力模式,发现了一个关键现象:当响应被恶意段落操控时,这些段落在decoder attention中会获得异常高的权重。具体表现为:
- 注意力集中:与目标回答相关的关键词(如特定实体、数字等)会吸引绝大部分注意力
- 分布偏斜:良性检索集的注意力分布相对均匀,而被污染时会出现明显尖峰
- 位置无关性:无论有毒段落处于检索结果的什么位置,这种异常模式都持续存在

图:良性与中毒段落的注意力模式对比。中毒段落中的关键token(如数字3、of和6)获得了不成比例的高注意力。
2.2 归一化段落注意力分数(NPAS)
为了量化上述现象,作者定义了归一化段落注意力分数(Normalized Passage Attention Score):
-
注意力矩阵构建:计算模型生成每个输出token时对所有输入token的multi-head注意力权重,取各层各头的平均值得到统一矩阵A,其中A[i,j]表示第i个输出token对第j个输入token的注意力
-
段落得分计算:
- 对每个段落,提取其内部被关注度最高的α个token的注意力权重
- 将这些权重求和得到原始段落得分
- 用该得分除以所有k个段落的总得分,得到归一化百分比
数学表达式为:
code复制NPAS(p_i) = (Σ_{t∈Topα(p_i)} A[t]) / (Σ_{j=1}^k Σ_{t∈p_j} A[t]) × 100%
选择前α个token而非全部,是为了:
- 突出最具影响力的关键token
- 减少低频token的噪声干扰
- 消除段落长度对得分的影响
2.3 注意力方差检测机制
基于NPAS,作者提出了注意力方差检测法:
- 计算方差:对检索集中所有段落的NPAS计算统计方差
- 异常判定:干净检索集的NPAS方差通常较低;存在中毒段落时方差会显著增大
- 阈值设定:通过实验确定不同场景下的合理方差阈值δ

图:正常与污染检索集的注意力分数方差分布对比。中毒段落的存在会使方差分布明显右移。
3. 注意力方差过滤器(AV Filter)实现
3.1 算法流程
AV Filter的具体工作流程如下:
- 输入:检索得到的k个候选段落,预设方差阈值δ,最小保留段落数m
- 迭代过滤:
a. 计算当前段落集的NPAS及其方差
b. 如果方差≤δ或剩余段落数≤m,终止流程
c. 移除NPAS最高的段落
d. 重复a-c步骤 - 输出:过滤后的安全段落集
关键细节:在实际实现中,δ值需要通过干净数据集上的实验校准。论文建议采用百分位数法,例如将δ设为干净数据方差的95%分位数。
3.2 参数选择与优化
算法效果受几个关键参数影响:
| 参数 | 影响 | 优化建议 |
|---|---|---|
| α | 控制每个段落考虑的token数量 | 通常取5-10,需平衡信号强度与噪声 |
| δ | 方差阈值决定过滤严格度 | 通过验证集调整,避免过度过滤 |
| m | 最小保留段落数 | 根据查询复杂度设置,简单查询可设m=3 |
实验表明,当ϵ<0.3时,AV Filter能去除90%以上的中毒段落,同时保留95%以上的良性内容。
3.3 计算效率优化
考虑到实时性要求,作者提出了以下加速策略:
- 注意力采样:不必计算所有输出token的注意力,只需采样关键位置
- 并行计算:利用GPU并行处理多个段落的NPAS计算
- 早期终止:当连续多次迭代方差下降不明显时提前终止
这些优化使AV Filter的额外延迟控制在原始生成时间的15%以内。
4. 实验评估与结果分析
4.1 实验设置
作者在多个标准数据集上评估了AV Filter的有效性:
| 数据集 | 知识源 | 查询类型 | 查询数量 |
|---|---|---|---|
| RealtimeQA | Google搜索 | 简答 | 100 |
| NQ | Wikipedia | 简答 | 100 |
| HotpotQA | Wikipedia | 多跳问答 | 100 |
| RQA-MC | Google搜索 | 选择题 | 100 |
对比基线包括:
- 无防御的原始RAG
- 基于关键词过滤的传统方法
- 基于相似度得分的过滤方法
4.2 主要实验结果
在ϵ=0.1的中等攻击强度下,AV Filter展现出显著优势:
| 防御方法 | 准确率提升 | 良性内容保留率 | 计算开销 |
|---|---|---|---|
| 无防御 | 0% | 100% | 0% |
| 关键词过滤 | +22% | 85% | +5% |
| 相似度过滤 | +35% | 78% | +12% |
| AV Filter | +48% | 92% | +15% |
特别值得注意的是,在更具挑战性的多跳问答(HotpotQA)场景中,AV Filter仍能保持40%以上的准确率提升,而其他方法不足25%。
4.3 失败案例分析
AV Filter在以下情况可能失效:
- 多数攻击:当ϵ≥0.5时,良性段落可能被误判为异常
- 分散注意:攻击者故意将关键词分散到多个段落
- 弱信号:某些语义攻击不依赖明显的注意力劫持
针对这些局限,作者建议:
- 结合其他信号(如段落一致性检查)
- 采用分层过滤策略
- 对高风险查询启用人工审核
5. 实际部署建议
5.1 系统集成方案
将AV Filter部署到生产环境时,建议采用以下架构:
code复制[检索模块] → [候选段落] → [AV Filter] → [净化段落] → [LLM生成]
↑
[注意力监控模块]
关键组件说明:
- 注意力监控:轻量级模块,实时提取并分析注意力信号
- 过滤决策:支持动态调整δ阈值以适应不同查询类型
- 日志记录:保存异常检测结果用于后续分析优化
5.2 参数调优指南
根据实际场景调整参数时,建议遵循以下步骤:
- 收集基线数据:记录干净查询的注意力方差分布
- 压力测试:注入不同比例的有毒段落,观察方差变化
- 确定阈值:选择能在95%干净查询上保持通过的δ值
- 持续监控:定期评估过滤效果,动态调整参数
5.3 扩展应用场景
除防御攻击外,AV Filter的技术思路还可应用于:
- 检索质量评估:识别低质量或无关检索结果
- 生成解释:通过注意力分析说明模型为何偏好某些段落
- 主动学习:基于注意力信号选择最有价值的训练样本
我在实际部署中发现,将AV Filter与基于熵的检测方法结合,能进一步提升对新型攻击的鲁棒性。例如,可以同时监控注意力分布的方差和熵值,当两者都出现异常时触发更严格的过滤。
