【论文阅读】-- Robust RAG :针对检索损坏的鲁棒性可验证RAG

论文链接:https://arxiv.org/pdf/2405.15556

目录

1.引言

1.1.威胁:检索损坏攻击

1.2.RobustRAG

1.3.核心挑战

1.4.解决方案

2.背景知识

2.1.普通RAG

2.2.检索损坏攻击

2.3.鲁棒性形式化

2.4.鲁棒性认证

[3.RobustRAG 防御框架](#3.RobustRAG 防御框架)

3.1.文档隔离

3.2.安全关键词聚合

3.3.安全解码聚合

3.4.鲁棒性认证

3.5.解码聚合的认证算法

4.实验

4.1.实验设置

4.2.主实验

4.3.经验对抗实验

5.结论

[为什么只是 "文档分开再聚合",论文却搞得这么复杂、一大堆算法证明?](#为什么只是 “文档分开再聚合”,论文却搞得这么复杂、一大堆算法证明?)

1、普通多数投票为什么直接废掉(非结构化文本大坑)

[2、什么叫可认证鲁棒:不是 "攻击测出来效果不错"](#2、什么叫可认证鲁棒:不是 “攻击测出来效果不错”)

举关键词聚合的例子,看复杂度来源

3、解码聚合为什么不能简单取生成完的答案再投票

4、分组本身也不是简单切分文档

5、区分两套东西,很多读者容易混淆

简短总结

对比通俗类比


  1. 问题 :RAG 易遭受检索损坏攻击(retrieval corruption),攻击者注入恶意检索片段,诱导大模型输出错误回答;包含 PoisonedRAG 知识库投毒、间接提示注入。
  2. 核心思路:隔离‑然后聚合策略。将检索文档划分互不相交组;每组文档独立送入 LLM 生成回答;再安全聚合各组输出得到最终结果。隔离保证恶意片段只污染少数分组,不会扩散到其他分组。
  3. 两大聚合算法
    • 关键词安全聚合(keyword‑based):提取每组回答关键词,统计频次,高频关键词再交给 LLM 生成最终答案。
    • 解码安全聚合(decoding‑based):每一步解码,收集各个分组输出的 token 概率分布,聚合概率向量,稳健选择下一个 token。
  4. 性能:在开放域问答、自由长文本生成,3 个数据集、3 个大模型(Mistral‑7B、Llama2‑7B、GPT‑3.5)验证;将 PoisonedRAG、间接提示注入攻击成功率从 90%+ 下降至约 10%;同时保持干净样本下的良好性能。
  5. 创新地位首个面向非结构化自由文本生成的可认证鲁棒 RAG;过去可认证鲁棒工作局限于分类任务(输出空间固定、很小)。

1.引言

RAG 解决 LLM 参数知识过时、不全问题;Bing Chat、Perplexity、LangChain、LlamaIndex 均使用 RAG。

1.1.威胁:检索损坏攻击

两类典型攻击:

  1. PoisonedRAG:向知识库插入恶意文档,检索返回后诱导错误输出。(RAG中毒攻击)
  2. 间接提示注入:检索片段嵌入恶意指令,覆写系统 prompt。

现实案例:Google AI 搜索给出 "用胶水涂披萨" 错误建议;微软 Copilot 因 RAG 访问控制缺陷存在远程代码执行风险。

传统 RAG 把全部检索片段拼接一次性输入 LLM,只要 1 条恶意片段就可以劫持全部输出,见图 1。

1.2.RobustRAG

  • 上半部分 Vanilla RAG:6 条检索文档,为恶意红色文档;全部拼接输入 LLM,输出错误 "Fuji"。
  • 下半部分 RobustRAG:6 个文档切分成 3 组,每组 2 篇。恶意文档只污染第 2 组,仅第 2 组输出错误回答;另外两组输出正确。再经过安全文本聚合得到正确输出 "Everest"。
  • 隔离操作:恶意片段只能污染它所在分组,不会污染其他分组;之后聚合算法从多数未被污染分组提取正确信息。
  • 两种聚合:§III‑B 关键词聚合、§III‑C 解码聚合。

1.3.核心挑战

  1. LLM 输出非结构化:同样答案表达方式千差万别,简单多数投票失效。例如 "Mount Everest"、"Everest is highest" 语义相同文本形式不同。
  2. 被污染的回答会干扰聚合流程;需要安全聚合算法,限制恶意输出的影响力,支持最坏情况形式化分析。

1.4.解决方案

  1. 关键词聚合:提取每组回答关键词,统计计数,高频关键词重新 prompt LLM(不再传入检索文档);每个分组只计一次该组内唯一关键词,攻击者最多增加 m'(被污染分组数量)次计数,无法无限篡改计数。
  2. 解码聚合:解码阶段,每个分组输出 next‑token 概率向量,聚合概率;概率取值被约束在0,1,攻击者无法无限制操纵聚合后的概率。

即使攻击者完全知晓防御、可以注入有界数量恶意片段,能够给出响应质量非平凡下界。之前可认证鲁棒只做分类任务,本文拓展到自由文本生成。

  1. RobustRAG:首个面向检索污染的可认证鲁棒 RAG 防御,核心为隔离‑聚合策略。
  2. 设计 2 套安全文本聚合算法,实现自由文本生成任务的可认证鲁棒,属于领域首次。
  3. 在开放域 QA、长文本传记生成,3 数据集 + 3 大模型完成泛化验证。

2.背景知识

2.1.普通RAG

2.2.检索损坏攻击

攻击者可以篡改最多条检索返回文档。分为两类攻击:

  1. 文档注入(passage injection) :插入条恶意文档,不能修改良性文档内容与相对排序;论文主要研究该场景。
  2. 文档修改(passage modification):直接修改原始良性文档的内容、排序;附录做扩展实验。

攻击者能力:自适应强攻击者 ,完全知晓防御算法、LLM 权重、知识库、用户查询,构造最优恶意文档。 现实场景:攻击者 SEO 恶意网页进入搜索引擎 top 结果;通常很小,但是少量恶意文档足以劫持输出。

2.3.鲁棒性形式化

2.4.鲁棒性认证

  1. 陷阱:单纯跑攻击做经验测试,如果攻击不够强,会高估鲁棒性;大量防御被更强自适应攻击攻破。
  2. 认证目标:计算可证明的下界,而不是经验估计
  3. 认证难点:攻击者注入文档内容任意,理论上有无穷多可能,响应集合无穷大,无法穷举;RobustRAG 通过算法设计,限制攻击者影响,使得响应集合变得有限、可分析。
  4. 指标例子:可认证鲁棒准确率 80%:80% 查询,无论攻击者如何注入文档,输出一定正确;该指标与攻击算法无关,是最坏情况保证。

3.RobustRAG 防御框架

核心策略:isolate‑then‑aggregate 隔离‑聚合

  1. 将检索文档切分成互不相交分组;每组拼接文档独立调用 LLM 得到隔离回答。
  2. 安全聚合隔离回答得到最终输出。

隔离保证:最多k'个分组被污染,其余分组全部是良性;防御依靠未被污染分组输出。

挑战:①LLM 输出非结构化;②恶意回答会干扰聚合;提出两套聚合算法。

3.1.文档隔离

3.2.安全关键词聚合

  1. 每组生成回答,提取该回答唯一关键词集合(同一回答内重复关键词只计一次)。
  2. 跨所有分组统计关键词计数;攻击者最多给关键词增加 m' 次计数,不能无限抬高计数。
  3. 设置阈值过滤,保留高频关键词;不再输入检索文档,仅把筛选后关键词交给 LLM 生成最终回答

3.3.安全解码聚合

3.4.鲁棒性认证

3.5.解码聚合的认证算法

4.实验

4.1.实验设置

数据集

  1. RQA‑MC:多选开放域 QA;
  2. RealtimeQA (RQA)、Natural Questions (NQ):短回答开放域 QA;
  3. Biography (Bio):长文本传记生成。 每个数据集采样少量样本(认证计算开销巨大);使用 Google Search 获取检索片段。

评价指标

  1. bacc:干净样本准确率;cacc:可认证鲁棒准确率
  2. bllmj:干净样本 LLM‑as‑judge 分数;cllmj:可认证 LLM‑judge 分数;
  3. racc 经验鲁棒准确率;asr 攻击成功率(攻击者目标回答出现比例)。

4.2.主实验

  1. Vanilla RAG:cacc=0,无可认证鲁棒保证;
  2. RobustRAG 在牺牲很小干净性能的前提下获得显著可认证鲁棒:
    • RQA‑MC 可认证准确率最高 71%;RQA 最高 38%;NQ 最高 36%;传记 cllmj 最高 51.2。
  3. 干净性能损失很小:QA 几乎无损;长文本损失 1‑10%;增大分组尺寸\(\omega\)可以进一步压缩性能损失。
  4. 显著优于 No‑RAG(不使用检索)。

W,K 和 k'的影响

4.3.经验对抗实验

攻击:间接提示注入 PIA、PoisonedRAG 投毒攻击。

  1. Vanilla RAG 攻击成功率 ASR>90%,经验准确率跌到个位数;
  2. RobustRAG 把 ASR 压制到≤15%,保持很高经验鲁棒准确率;传记生成任务 ASR 甚至降到 0。

时间分析:

  1. RobustRAG 推理速度是 Vanilla RAG 的 1.16‑3.65 倍。

注意:不会达到 10 倍慢,因为每个分组输入文档很短;对比随机平滑等可认证分类方法,后者开销可达 100× 以上。

  • Decoding 聚合开销更小,适合长文本;关键词聚合开销更高。

5.结论

RobustRAG 是首个针对检索污染攻击拥有可证明鲁棒性的 RAG 防御。隔离‑聚合策略限制恶意文档影响;两套安全聚合算法处理非结构化文本;在问答、长文本生成取得强可认证鲁棒,干净性能损失很小。

为什么只是 "文档分开再聚合",论文却搞得这么复杂、一大堆算法证明?

直观理解:朴素想法:把文档分成多组,各组分别问 LLM,再把答案投票合并,完事。 但现实 RAG 是自由文本生成 ,不是分类选择题,还有**要可认证鲁棒(certifiable robustness)**这个硬核要求,这才是所有复杂度的根源。

划重点:这篇论文目标不是 "做一个效果还行的防御",而是要数学上证明最坏情况下也有性能下界(可认证鲁棒),不是靠跑几个攻击样例看效果。普通启发式防御很简单,但是拿不出最坏情况保证。

1、普通多数投票为什么直接废掉(非结构化文本大坑)

假设三组回答:

  1. Mount Everest
  2. Fuji(恶意错误回答)
  3. Everest is the highest mountain

普通字符串投票:三个输出字符串全都不一样,没有多数,投票失效。 语义等价的回答,文字表达千差万别。

  • 分类任务:输出固定候选集合 {A,B,C,D},直接统计票数,简单。
  • 自由文本生成:输出是无穷多字符串,不能直接对原始文本做投票

👉 所以不能简单拼接答案投票,必须设计两种特殊聚合:

  1. 关键词聚合:把自由文本降维到关键词集合,在关键词层面做统计,绕开文本表达差异。
  2. 解码聚合 :不下游合并完整回答,在 token 生成每一步合并概率分布,在模型内部概率空间做聚合。

到这里只是解决 "非结构化文本怎么聚合",复杂度只算一半;更大的复杂度来自可认证鲁棒性的硬性约束

2、什么叫可认证鲁棒:不是 "攻击测出来效果不错"

普通防御工作流程:写个防御代码,跑 PoisonedRAG、提示注入攻击,看攻击成功率降下来,论文结束。

风险:你测的攻击可能不够强;存在更强的自适应攻击者(完全知道你的防御代码),可以绕过你的防御。你实验看着安全,实际部署被攻破。

RobustRAG 目标:不管攻击者怎么写恶意文档,只要最多 k' 个文档被篡改,我能严格证明:模型输出质量一定≥τ。 要做到这个,不能只看良性样本,必须分析攻击者所有可能制造出来的输出

这就是第四部分一大套认证算法、枚举、集合划分、引理数学证明的来源。

举关键词聚合的例子,看复杂度来源

朴素关键词想法:每组抽关键词,统计词频,取高频词。 但攻击者可以在被污染分组输出一堆恶意关键词。 论文必须严格约束:

  1. 同一个分组的回答内,同一个关键词只计数一次,攻击者一个分组不能靠重复刷词无限抬高恶意关键词计数。
  2. 认证的时候,要划分三类关键词\(W_A/W_B/W_C\):
    • 肯定留下的词、肯定过滤掉的词、攻击者可以操控的中等计数词。
  3. 对攻击者可控的中等计数关键词,枚举全部子集,穷举所有攻击者能制造出来的全部关键词集合,再生成全部可能的 LLM 输出,取最差的那个分数作为下界 τ

如果不做这套枚举分类,你就无法证明:"攻击者无论写什么恶意段落,都不能让这个关键词进入最终集合"。

如果你不要 "可认证",完全可以删掉整套认证算法,关键词提取 + 统计词频几十行代码就能跑,但是就没有形式化最坏情况保证,只是一个启发式防御。

3、解码聚合为什么不能简单取生成完的答案再投票

如果每组生成完整长答案,再做语义聚合:

  • 长传记段落,语义匹配难度极高;LLM 做语义比对开销巨大。
  • 一旦生成完整文本,恶意回答已经生成自由文本,攻击者可以构造各种 tricky 文本,很难严格界定它的影响力,无法做可认证证明

所以论文选择:不等到完整回答生成,在每一步解码 token 概率层面聚合。 每个分组输出 next‑token 概率向量\(p_1,p_2,...\),概率被约束在\(0,1\)。 数学上可以严格算:攻击者最多污染 m' 个分组,最多能给每个 token 增加多大的总概率,因此可以推导 top1、top‑2 token 之间的概率差边界,由此分出 case1/case2/case3/case4。

这套 case 划分、三条引理数学证明,全部服务于最坏情况概率边界推导,实现可认证。 如果只是想要经验效果,完全可以直接平均概率,不需要 η 阈值、不需要切分 case,但是就没有可证明鲁棒保证。

4、分组本身也不是简单切分文档

分组参数(每组多少篇文档)是权衡:

  • 越大:每组信息多,正常回答质量高;但是分组总数量 m 变少。如果 m 太小,被污染分组数量超过良性分组,防御直接失效。
  • 越小:分组多,鲁棒性强;但是每个分组文档太少,每组 LLM 生成的回答质量下降。

并且认证阶段还要考虑: 攻击者可以把恶意文档插入检索返回的任意位置 。同一个 k',恶意文档落在不同位置,会污染不同分组。附录 A‑B 图 9,需要枚举所有插入位置,收集全部可能的良性分组组合,全部跑完认证取最坏 τ。 还有更强攻击:文档修改攻击(不是单纯注入新文档,直接改写原有文档),又要一套枚举逻辑。

现实工程部署:只用 Algorithm1、Algorithm2 推理代码;认证算法(Algorithm3、4)是离线评估工具,线上不跑。很多人会混淆:线上推理其实不算特别复杂;复杂的是离线做可认证鲁棒评估的那一大套算法。

5、区分两套东西,很多读者容易混淆

  1. 推理算法(线上部署):Algorithm1、Algorithm2
    • 功能:输入检索文档,输出稳健回答。
    • 复杂度:工程上可以实现,关键词聚合几十行;解码聚合需要拿到 token 概率。
  2. 认证算法(离线实验评估,线上不用):Algorithm3、Algorithm4、Algorithm5
    • 功能:计算最坏情况质量下界 τ,证明防御到底有多强。这就是论文里大部分公式、引理、枚举、集合划分的来源。
    • 开销巨大,不能线上跑;论文大量篇幅在讲它。

✅ 如果你不追求 "可证明鲁棒",只想要一个经验上更抗投毒的 RAG: 只拿推理部分,分组、分别生成回答、关键词统计聚合,直接上线,那些证明、枚举、幂集全部扔掉,代码并不复杂。 ✅ 但这篇论文核心贡献恰恰就是:给自由文本生成 RAG,做出可认证鲁棒,而不是仅仅提出一个经验防御策略。过去可认证鲁棒只局限分类任务,自由文本生成很难做,这才是文章的学术价值,也是复杂度的来源。

简短总结

  1. 表层逻辑确实是:文档分组→各组分别生成回答→聚合;直觉很简单。
  2. 第一层复杂度:LLM 输出是非结构化自由文本,不能直接投票,必须设计关键词 / 解码概率两套特殊聚合方案。
  3. 最大复杂度来源:可认证鲁棒的硬性要求,要形式化分析攻击者所有可能输出,推导最坏情况性能下界,需要大量集合枚举、case 划分、数学引理证明。
  4. 线上推理代码并不恐怖;论文绝大部分复杂算法是离线认证评估模块,部署时不运行
  5. 如果舍弃 "可证明最坏保证",只追求经验对抗效果,可以砍掉绝大多数复杂逻辑。

对比通俗类比

普通启发式防御:就像防盗门,现实中大部分小偷打不开,但不能数学证明一定打不开。 RobustRAG:相当于不仅做防盗门,还要数学证明:只要小偷最多破坏 N 个锁芯,门一定不会被打开。后者证明推导过程会非常繁琐,但这就是论文的核心创新点。

相关推荐
VL——MOESR14 小时前
【具身智能】π0论文阅读随笔
论文阅读·机器学习·vla·pi0
张继雁17 小时前
张继雁 个人技术简介|磨削加工过滤方向
大数据·数据库·论文阅读·人工智能·机器学习·创业创新·业界资讯
Capricorn19881 天前
知芽 Notebook Skill 引用存在性校验与单元记忆破解幽灵引用危机
大数据·论文阅读·人工智能·论文笔记
西柚小萌新2 天前
【论文阅读】-- Spa‑VLM:隐形中毒攻击基于RAG的VLM
论文阅读
西柚小萌新2 天前
【论文阅读】-- Vis‑Poison:多模态 RAG 视觉知识投毒
论文阅读
m4Rk_2 天前
【论文阅读】Agent 记忆机制(63):SAMem——把经验记忆细化为带长期价值的状态—Thought
论文阅读·人工智能·学习·开源·github
m4Rk_3 天前
【论文阅读】Agent 记忆机制(62):DCM-Agent——用双簇记忆化解优化问题的多范式冲突
论文阅读·人工智能·学习·开源·github
VL——MOESR3 天前
【具身智能】OpenVLA论文阅读随笔
论文阅读·机器学习·具身智能·vla·openvla
Capricorn19883 天前
跨端同步与记忆锁定排障:OpenClaw 2.0 Active Memory 云端劫持危机,知芽 Notebook Skill 单元记忆架构解析
大数据·论文阅读·人工智能·笔记·架构·论文笔记