论文链接:2501.00879 TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation
摘要
检索增强生成(RAG)容易受到知识库投毒攻击:攻击者向知识库植入恶意文档,使检索模块召回错误内容,误导大模型输出虚假信息。现有防御方案如 RobustRAG 采用隔离 - 聚合思路,但依赖良性文档占多数,当召回大量恶意文档时防御性能显著下降。
本文提出TrustRAG,一款开箱即用、无需训练的双阶段 RAG 鲁棒防御框架:
- 干净检索过滤阶段:利用恶意文档在嵌入空间聚集为簇的特点,结合 K-Means 聚类与 ROUGE-L 文本重叠校验,滤除大部分恶意文档;对单条恶意注入场景不做过度删除,残留风险交由第二阶段处理。
- 冲突消解阶段:让大模型调用自身预训练知识作为事实基准,对检索到的外部文档进行冲突检测、知识融合与自我评估,自主判断采信外部检索材料还是模型内置知识来生成答案。
在 NQ、HotpotQA、MS-MARCO 数据集上,针对 PoisonedRAG、间接提示注入、对抗解码、阻塞攻击完成实验。结果显示:即便召回文档全部为恶意(投毒率 100%),TrustRAG 仍可保持较高回答准确率,显著降低攻击成功率;推理开销约为原生 RAG 的 2 倍,兼容各类检索器与开源 / 闭源大模型。
局限性:TrustRAG 是经验型防御,不存在形式化可证明的鲁棒性,性能上限取决于大模型自身内置知识的准确性。消融实验证明冲突消解模块是整个框架的核心。该方案为高污染知识库环境下 RAG 系统的可信落地提供工程可行方案。
目录
[1.1 RAG 现状与真实风险](#1.1 RAG 现状与真实风险)
[1.2 现有防御缺陷](#1.2 现有防御缺陷)
[1.3 本文核心洞察](#1.3 本文核心洞察)
[1.4 主要贡献](#1.4 主要贡献)
[2.1 RAG](#2.1 RAG)
[2.2 威胁模型](#2.2 威胁模型)
[2.3 防御目标](#2.3 防御目标)
[3.1 框架总览](#3.1 框架总览)
[3.2 干净检索](#3.2 干净检索)
[3.3 冲突消解](#3.3 冲突消解)
[4.1 实验设置](#4.1 实验设置)
1.引言
1.1 RAG 现状与真实风险
RAG 被 ChatGPT、必应、Perplexity AI 等产品广泛使用,但存在严重安全隐患:
- 投毒攻击:注入恶意文档可以覆盖用户指令,诱导模型输出错误答案,代表工作 PoisonedRAG;现实案例包括 Google 搜索 AI 错误、ChatGPT 读取污染 GitHub 代码造成经济损失。
1.2 现有防御缺陷
已有 ASTUTE‑RAG、InstructRAG、RobustRAG 等 RAG 防御,依靠多数投票、人工提示词降噪;当攻击者注入的恶意文档数量超过干净文档,这些方案就会失效;同时也难以处理无关噪声文档。
1.3 本文核心洞察
攻击者生成的恶意文档在 Embedding 嵌入空间会形成紧密聚类。
- 阶段一 Clean Retrieval:K‑means 聚类识别恶意簇,搭配 ROUGE 分数避免误过滤干净文档。
- 阶段二 Conflict Resolution:利用 LLM 自身内部知识,识别冲突、过滤残留恶意 / 无关文档,让模型自主选择依靠内部知识还是外部检索知识生成答案。
1.4 主要贡献
- 首个可以同时防御单文档、多文档注入投毒攻击的 RAG 防御框架。
- 攻击成功率最高降低 80%,回答准确率最高提升 30%,优于现有防御。
- 在多种攻击方式下完成完备评估(提示劫持等)。
2.问题定义
2.1 RAG
标准 RAG 分为检索、生成两步;现有优化手段:查询重写、重排序、文档摘要等。
2.2 威胁模型
- 攻击者目标 :给定一批问题集合Q,为每个问题构造错误目标答案
,向知识库注入恶意文档;最大化模型输出错误答案的概率。
- 优化恶意文档:最大化与查询的向量相似度,同时保证能够诱导 LLM 输出错误答案;限制嵌入偏移量,保证恶意文档可以被检索器召回。
- 攻击者能力:可以修改外部知识库注入文档;了解 RAG 全链路,可访问检索器、开源模型权重;现实对应篡改维基、伪造新闻等场景。
2.3 防御目标

3.防御框架
整体分为Stage1 Clean Retrieval 干净检索 、Stage2 Conflict Resolution 冲突消解两大阶段。

3.1 框架总览
- 检索器召回文档;K‑means 聚类过滤大部分恶意文档。
- 剩余文档交给第二阶段:调用 LLM 内部知识,对比外部检索文档,消除冲突,选出最可信知识生成答案。
3.2 干净检索
利用恶意文档嵌入高度聚集的特性完成初步过滤。
- K‑means 聚类(k=2)
- 多注入攻击:恶意文档数量多,在嵌入空间形成高密度簇,直接过滤该簇。
- 单注入攻击:不直接过滤,保留全部文档留给第二阶段处理,防止误删干净文档。
- N‑gram 保护机制(ROUGE‑L) 只用 K‑means 容易把混有 1 份恶意样本的干净簇整体删掉。使用 ROUGE‑L 衡量文档之间词重叠度:干净‑恶意文档对 ROUGE 分数显著低于恶意‑恶意文档对,以此作为判断依据,避免误过滤干净样本。

图表解析:红 = 对抗恶意文档,蓝 = 干净文档。
- 恶意文档数量 > 2 时,会在嵌入空间形成独立紧密聚类;K‑means 可以直接识别。
- 只有 1 个恶意文档(单注入):恶意样本离散散布在干净样本点中间,不会形成独立簇。
解释 Stage1 设计取舍:多注入直接筛簇;单注入不强行过滤,避免误杀大量干净文档,交给 Stage2 冲突消解。
3.3 冲突消解
使用 LLM 预训练习得的内部知识作为 "事实参照",处理第一阶段遗留的恶意、冲突、无关文档。
- Internal Knowledge Extraction 内部知识提取 temperature 设置为 0,让模型只做一次推理,输出该问题自身的内部知识;避免多变 temperature 带来幻觉。
- Knowledge Consolidation 知识整合 合并外部检索文档 + LLM 内部知识;提示大模型识别文档之间一致性,过滤冲突、无关、恶意内容,输出整理后的可信知识。
- Self‑Assessment 自我评估 模型对比内部知识与外部检索信息,自主选择采信来源(内部知识 / 整合后的外部知识),输出最终答案。

图表解析:解释为什么 K‑means + ROUGE‑L 可以区分恶意文档。
- 子图 (1):余弦相似度密度分布图
- Clean(干净文档):余弦相似度集中在 0.4‑0.8;
- Malicious(恶意文档):相似度峰值接近 1;攻击者刻意优化,让恶意文档和查询相似度很高,更容易被检索召回。
- Cross‑Clean‑Malicious:干净‑恶意文档之间相似度处于中间区间。
启示:恶意文档会被检索器高相似度优先召回,是 RAG 投毒成功的前提。
- 子图 (2):ROUGE‑L 分数箱线图
- Clean‑Clean:干净文档之间 ROUGE 分数低;
- Malicious‑Malicious:恶意文档之间 ROUGE 分数显著更高(攻击者生成的一批恶意文档文本重叠度高);
- Cross‑Clean‑Malicious:干净与恶意文档之间 ROUGE 分数很低。
4.实验
4.1 实验设置
- 数据集:Natural Questions (NQ)、HotpotQA、MS‑MARCO 三个问答基准。
- 攻击类型 :
- Corpus Poisoning(PoisonedRAG 语料投毒)
- PIA 提示注入攻击
- AD 对抗解码攻击
- Jamming 阻塞拒绝服务攻击
- 对比防御基线:RobustRAG、InstructRAG、ASTUTE‑RAG;另外设置 Vanilla RAG、No‑RAG 作为基础对照。
- 评估指标
- ACC:干净场景下回答准确率
- ASR 攻击成功率:被攻击时模型输出攻击者期望错误答案的占比,越低越好。
4.2.主实验
4.2.1.单注入攻击实验总表

解析:对比 Mistral‑Nemo‑12B、Llama3.1‑8B、GPT‑4o,多种防御在 PIA / PoisonedRAG / AD 攻击下的 ACC/ASR。
- TrustRAG‑stage1 只有聚类,单注入攻击下效果差;
- TrustRAG‑stage1&2 完整版本 ASR 显著压低,同时维持高 ACC。
- 旧防御如 InstructRAG 在部分攻击下 ASR 高达 64%,防御失效。
4.2.2.多注入不同投毒率实验

解析:投毒率从 20%~100%,模拟攻击者注入不同比例恶意文档。
- Vanilla RAG:投毒率 100% 时 ASR 接近 98%,几乎全部输出错误答案;
- RobustRAG 等投票类防御:当恶意文档占比高,投票被恶意样本绑架,性能暴跌;
- TrustRAG 完整版本:无论投毒率高低,ACC 维持 80% 左右,ASR 控制在个位数。
4.3.消融实验
消融 4 个组件:①K‑means 聚类;②冲突消解;③内部知识;④自我评估。

子图 (1):PPL 困惑度分布密度图 解析:干净文本与恶意文本的 PPL 分布大面积重叠;部分恶意样本 PPL 很高,但大量恶意样本 PPL 落在干净样本区间。 结论:仅用困惑度 PPL 无法可靠检测恶意文档,驳斥过去单独依靠 PPL 做防御的思路。
子图 (2) NQ 数据集 ACC 消融柱状图;子图 (3) NQ 数据集 ASR 消融柱状图 解析:逐个去掉组件后的性能变化:
- w/o K‑means:去掉第一阶段聚类,高投毒场景 ACC 大幅下降,ASR 飙升;
- w/o Conflict Resolution(去掉冲突消解) :性能下跌幅度最大,证明冲突消解是整个框架最核心组件;即使有 K‑means、内部知识,没有冲突消解依然容易被投毒误导;
- w/o Internal Knowledge:没有模型内部知识作为事实参照,抗攻击能力下降;
- w/o Self‑Assessment:缺少来源可信度判断,性能下降。 只有全部组件打开,同时实现高 ACC + 低 ASR。