1. 项目概述:当RAG遇上对抗攻击
去年部署RAG系统时,我曾遇到一个诡异案例:用户查询"苹果公司市值",系统却返回了"苹果种植技术"。排查发现攻击者在文档中插入大量"公司 市值"等关键词组合,导致排序模型误判。这正是神经排序模型(NRM)的致命伤——它们像精确但脆弱的玻璃仪器,轻微的对抗扰动就能使其完全失效。
武汉大学、耶鲁大学和南洋理工大学的联合团队提出的RobustMask方案,从根本上重构了排序模型的鲁棒性设计。其核心创新在于将BERT预训练中的Masked Language Modeling(MLM)任务转化为防御武器,通过三重机制构建防护体系:
- 随机掩码:对每个候选文档随机遮盖30%-60%内容,生成多个"残缺版本"
- 成对投票:用轻量级PairLM比较相邻排名文档的相关性
- 理论认证:数学证明攻击者需修改超过20%内容才能影响Top-K结果
这种设计使得系统在保持原有精度的同时,获得对抗文本篡改的免疫力。实测显示,面对关键词堆砌攻击时,传统BERT模型的92.9%攻击成功率被压降到11.9%。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理拆解
2.1 掩码机制的防御本质
MLM预训练使BERT具备独特的"完形填空"能力。当输入文本出现缺失时,模型会基于上下文语义进行补全。RobustMask利用这一特性,通过主动制造"可控缺失"来检测异常:
- 正常文档:即使随机遮盖部分内容,剩余文本的语义一致性仍能支撑准确判断
- 对抗文档:依赖局部关键词堆砌,掩码后会暴露语义断裂
实验显示,当掩码比例达40%时,对抗样本的得分波动幅度是正常样本的3.7倍。这种差异成为识别攻击的关键信号。
2.2 成对比较的稳定性证明
传统排序模型直接计算绝对得分,容易受微小扰动影响。RobustMask采用相对比较策略:
python复制def pairwise_compare(doc_k, doc_k1, n_samples=100):
# 对两个文档各采样n次掩码版本
masked_k = [mask_random_words(doc_k) for _ in range(n_samples)]
masked_k1 = [mask_random_words(doc_k1)
