[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG

[2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation

代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthiness in RAG"

背景:RAG攻击方案严重威胁了RAG的可信度,现有的防御方案存在不足【[论文阅读]Certifiably Robust RAG against Retrieval Corruption-CSDN博客主要是少数服从多数,但是一旦topk中恶意文本占多数(PoisonedRAG),这种防御就会失效】【恶意文本和普通文本之间的困惑度差异不大,因此困惑度过滤也很有限】【对用户的查询进行释义操作以及增加上下文数目都不能从根本上解决语料库投毒问题】

TrustRAG

图1:TrustRAG框架使用两阶段流程保护RAG系统免受语料库投毒攻击。 在第一阶段,它(1)通过K均值聚类识别恶意文档,以及(2)基于嵌入分布过滤恶意内容。 在第二阶段,它(3)提取内部知识以确保准确的推理,(4)通过对一致的文档进行分组并丢弃不相关或冲突的文档来解决冲突,以及(5)基于自我评估生成可靠的最终答案。

文章假设的攻击者在目标和能力上和PoisonedRAG一致。

 TrustRAG是一个旨在防御针对RAG系统投毒恶意攻击的框架。 它利用K均值聚类和来自LLM内部知识和检索到的外部文档的集体知识来生成更值得信赖和可靠的响应。 攻击者针对目标问题和目标答案优化恶意文档。 检索器从知识库中检索相关文档,K均值过滤掉恶意文档。 然后,LLM从其内部知识生成有关查询的信息,并将其与外部知识进行比较,以消除冲突和无关文档。 最后,基于最可靠的知识生成输出。

【核心思想是,攻击者肯定会构造最相似的文本,这些恶意文本之间的相似度必然很高,在嵌入空间中很容易聚类在一起,因此用kmeans过滤掉这些很密集集中在一起的类别。同时还要借助于大模型自己的内部知识来辅助判断外部知识的可信程度。这就导致了知识更新漏洞仍然存在。】

【知识更新漏洞是我自己这样叫的,因为事物是不断发展变化的,早期的信息可能会变得错误,而LLM内部知识是有一个截至时间的,如果构造的虚假信息包含更加新的日期,LLM本质上会产生自我怀疑,偏信新知识。这实际上和PoisonedRAG构造的虚假信息一致,因为case study里面大模型生成的恶意文本就是偏重于知识的更新,杜撰一些最新事件,从而误导RAG】

阶段1:干净检索

用K均值聚类(k=2)根据其嵌入式分布来区分干净文档和潜在恶意文档。

攻击者的优化目标是让恶意文本和目标问题的相似度最大化,可以利用这一点

在第一阶段应用K均值聚类算法来分析由ft(检索文档的编码器)生成的文本嵌入的分布,并识别可能指示存在恶意文档的可疑高密度聚类。 在多次注入的情况下,第一阶段防御策略有效地过滤掉了大多数恶意组或对,因为它们具有很高的相似性。

使用ROUGE-L得分来比较簇内相似性,旨在保留大部分干净文档用于冲突消除信息整合,从而有效过滤单个恶意文档。 图3验证了,比较干净文档对、恶意文档对以及干净文档和恶意文档对时,ROUGE-L得分存在显著差异。 利用此特性可以决定不过滤仅包含一个恶意文档的干净文档组,从而减少信息损失。 相反,这些组可以继续进行冲突消除,重点是识别和消除单次注入攻击。

【我是否可以认为,这个图是用来测试数据的差异的,就是纯恶意文本放在一起的话,他们之间的相似度极高。并且Rouge分数也高;纯正常文本放在一起以及掺杂恶意文本的正常文本 两类数据,相似度适中,ROUGE分数也适中,因此使用KMEANS把文本分为两类是比较合理的,相似度之间的巨大差异可以把很大一部分集中的恶意文本集合给剔除,剩余一些混在正常文本中,需要第二阶段处理来防止它们起作用。】

 阶段2:冲突移除

第一阶段把大多数的恶意文档过滤掉了,第二阶段利用LLM的内部知识来补充从有限检索文档集中缺失的任何信息,甚至可以驳斥恶意文档,从而实现内部和外部知识之间的相互印证。

 内部知识抽取:提示LLM生成内部知识,仅执行一次大语言模型推理

知识整合:利用大语言模型明确整合来自其内部知识生成的文档和从外部来源检索到的文档中的信息。使用下面的prompt来识别不同文档之间的一致信息,并检测恶意信息。 此步骤会将输入文档中不可靠的知识重新分组为更少的精炼文档。 重新分组的文档还将它们的来源属性到相应的输入文档。

检索正确的自我评估: TrustRAG 提示大语言模型通过评估其内部知识与检索到的外部文档进行自我评估。此过程识别冲突、整合一致信息并确定最可靠的来源,确保最终答案既准确又可靠。 这种自我评估机制是增强 TrustRAG 鲁棒性的关键,使其能够保持高精度

个人见解

RAG投毒,往知识库投毒,攻击和防御都是假设已经存在有毒文本在知识数据库中了。攻击的话还好说一点,毕竟涉及到提高相似度以及诱导大模型的双层任务,不过PoisonedRAG这篇文章似乎把RAG投毒攻击的税都收完了,其他文章的创新就显得很不足了。

说回这个防御,本质上还是prompt工程,稍微好一点的是用了一个聚类把正常样本和潜在异常样本区分开,但是kmeans取k=2感觉就挺激进的,毕竟聚类结果中包含挺多正常文本也是很常见的。

文章能够自圆其说是因为假设的攻击者必须以最高相似度为目标来构造恶意文本,导致恶意文本有更大的概率汇集的一起。

所谓的冲突移除实际上就是提示大模型自己对内容进行判断和整合

考虑到RAG系统的实际应用,这种需要大模型再判断一轮的方法的效率都不会高。

实验

数据集:NQ,hotpotqa,msmarco

攻击方案:PoisonedRAG和提示注入攻击PIA(Corpus poisoning)

评估指标:ACC表示系统的响应准确率;ASR表示攻击者误导生成错误答案的数目

RobustRAG是一种使用聚合和投票策略的防御框架。 如果恶意文档的数量超过良性文档的数量,它就会失败。 然而,得益于K-means过滤策略,TrustRAG显著减少了检索过程中恶意文档的数量,只有一小部分恶意文档被用于 冲突消除阶段。在冲突消除,TrustRAG可以整合内部知识,利用一致性组的信息,并自我评估是否使用来自RAG的信息。 结果表明,TrustRAG可以有效增强RAG系统的鲁棒性。

 

来自NQ数据集的样本被用于不同数量的污染文档中,可以看到,在多个恶意文档的情况下,恶意文档彼此靠近。单个污染文档将与干净文档混合在一起。 因此,使用n-gram保留来保留干净文档非常重要。

当中毒率超过20%时,在干净检索阶段应用n-gram保留后,F1分数更高;如果没有n-gram保留,K均值过滤策略将随机移除具有较高相似性的组,但这会导致降低CRR的不良影响。 因此,干净文档可能会被错误地过滤掉。 因此,使用n-gram保留不仅可以保留干净文档,还可以提高检测恶意文档的F1分数。

 不同的嵌入模型:SimCSE、Bert和BGE。K均值过滤策略对于所有三种嵌入模型都是稳健有效的。更细粒度的嵌入模型(例如SimCSE)可以实现更好的性能,并且在不同的中毒率和数据集上更稳健。

与 Vanilla RAG 相比,TrustRAG 的推理时间大约是其两倍,考虑到 TrustRAG 在鲁棒性和可靠性方面取得的显著改进,这是一个合理的权衡。

干净文本和对抗性文本的 PPL 值存在显著重叠。尽管一些对抗样本表现出更高的 PPL 值,但许多样本都落在干净文本的范围内。 这种重叠突出了仅仅依赖 PPL 作为检测指标的局限性,因为它可能导致假阴性 (将对抗性文本误分类为干净文本) 和假阳性 (将干净文本标记为对抗性文本)。

当中毒率超过 20% 时,K 均值过滤可以有效地防御攻击,同时保持较高的响应准确率。 即使在 20% 的中毒率下(只有一个中毒文档),它仍然成功地保持了干净文档的完整性。

 将TrustRAG在提供和不提供从LLM推断出的内部知识的情况下的表现进行比较,观察到利用LLM内部知识可以显著提高准确率(ACC)和攻击成功率(ASR)。 尤其是在20%的投毒率下,内部知识有效地解决了恶意文档和干净文档之间的冲突,显著提高了鲁棒性。

 虽然K均值聚类和内部知识显著降低了ASR,但冲突消除组件也在防御框架中发挥着至关重要的作用。 通过利用知识整合和基本原理输出,TrustRAG进一步增强了RAG系统在不同投毒百分比下所有场景中的鲁棒性。

 自我评估机制可以进一步提高TrustRAG在所有设置下的性能,尤其是在20%的投毒率下。 这表明LLM可以有效地区分归纳信息或恶意信息与内部和外部知识。

 除了蓄意的投毒攻击之外,RAG系统还可能面临另外两种关键类型的非对抗性噪声:来自返回不相关文档的不完美检索器的基于检索的噪声,以及来自知识库本身固有错误的基于语料库的噪声.在NQ数据集上使用Llama3.1-8B进行了大量的实验,涵盖两种关键场景:(1)上下文窗口范围从1到20个文档的干净设置,以及(2)包含5个恶意文档和不同上下文窗口的投毒设置。 结果显示TrustRAG在这两种情况下都具有优越的性能。 在干净的设置中,TrustRAG的准确性随着更大的上下文窗口(5−20个文档)而稳步提高,始终优于普通的RAG。 更重要的是,在投毒场景中,TrustRAG保持大约80%的准确率,同时保持攻击成功率(ASR)在1%左右。 这与普通的RAG形成了鲜明对比,普通的RAG在60−90%的ASR水平下,准确率仅为10−40%。

 使用Llama3.1-8B在RedditQA数据集上评估,使用检索到的文档的原始RAG的响应准确率为27.3%,攻击成功率为43.8%。 相比之下,TrustRAG的响应准确率为72.2%,攻击成功率为11.9%,这证明了其在真实世界对抗条件下的鲁棒性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Next仓颉语言开发实战教程:店铺详情页

各位好,幽蓝君又来分享仓颉开发教程了,今天的内容是店铺详情页: 这个页面的内容看似简单,其实有很多小细节需要注意,主要还是让大家熟悉List容器的使用。 整个页面由导航栏和List容器两大部分组成,导航栏我…

FEMFAT许可使用数据分析工具介绍

在高度竞争和快速变化的工程仿真领域,数据驱动的决策变得越来越重要。为了更好地了解FEMFAT许可的使用情况、提高资源利用率、优化工作流程,FEMFAT许可使用数据分析工具应运而生。本文将为您介绍这款强大的工具,助您轻松驾驭FEMFAT许可数据&a…

大模型原理面试题及参考答案

目录 什么是大语言模型(LLM)?它与传统语言模型的本质差异在哪里? 自回归模型(autoregressive)与掩码语言模型(masked LM)的异同是什么?各适合于哪些任务? Transformer 的核心构件——多头自注意力机制如何捕捉长距离依赖? 位置编码(positional encoding)的作用…

Gartner<Reference Architecture Brief: Data Integration>学习心得

数据集成参考架构解析 引言 在当今数字化时代,数据已成为企业最宝贵的资产之一。随着企业规模的不断扩大和业务的日益复杂,数据来源也变得多样化,包括客户关系管理(CRM)、企业资源规划(ERP)、人力资源管理(HR)和市场营销等领域的运营系统。这些系统虽然在其特定功能…

JAVASE:方法

JavaSE 方法详解 一、方法的核心概念 方法(Method)是一组执行特定任务的语句集合,它将代码逻辑封装为可复用的单元,提高代码的模块化和可维护性。 方法的组成: [修饰符] 返回类型 方法名([参数列表]) {// 方法体[r…

MXNet-cu101 + CUDA 10.1 在 Windows 11 上启用 GPU 的完整指南

一、报错信息 (pytorch) C:\Users\Administrator\Desktop\test>D:/conda/anaconda3/envs/pytorch/python.exe c:/Users/Administrator/Desktop/test/test.py Traceback (most recent call last): File “c:/Users/Administrator/Desktop/test/test.py”, line 1, in import…

Python基础数据类型与运算符全面解析

Python作为一门动态类型语言,拥有丰富的内置数据类型和运算符系统,构成了编程的基础。本文将深入介绍Python核心数据类型的基本概念、特点及使用方法,并系统梳理运算符的分类、优先级和实际应用示例,帮助开发者全面掌握Python的基…

Mysql分区(单服务器应对大数据量方案)

参考资料: 参考视频 参考博客 分区的复杂操作 参考资料 概述: 这里只讲实操,不讲原理,看原理请看参考资料Mysql自5.1后支持分区,在Mysql8之后只有InnoDB支持分区,Mysiam不支持分区本例只是一个简单的说…

[Java恶补day22] 240. 搜索二维矩阵Ⅱ

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17…

基于Master-Slave主从博弈论的储能与能源协调算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序 4.系统仿真参数 5.系统原理简介 6.参考文献 7.完整工程文件 1.课题概述 基于Master-Slave主从博弈论的储能与能源协调算法matlab仿真.主从博弈(Stackelberg Game)是一种具有层级决策结构的博弈模型&am…

vue-print-nb 打印相关问题

一、背景与解决方案 1、ElementUI表格打印通病,均面临边框丢失、宽度超出问题:相关解决代码有注释; 2、大多数情况下不会打印页眉页脚的日期、网址、未配置popTitle显示的undefined:相关解决代码有注释; 3、打印预览页…

Agent应用案例精选,以及主流Agent框架开源项目推荐

一、Agent技术概述 在人工智能领域,Agent(智能体)是指能够感知环境、自主决策并执行动作以实现特定目标的智能系统。随着大语言模型(LLM)的快速发展,基于LLM的Agent系统已成为当前AI研究的热点方向,为复杂任务解决提供了全新范式。 Agent的核心特征 自主性(Autonomy): 能够…

Linux下基础IO

1 文件 这里首先得理解一下文件,文件存放在磁盘中(磁盘是永久性存储介质,是一种外设,也是一种输入输出设备),磁盘上的文件的所有操作,都是对外设的输入和输出简称IO,linux下一切皆⽂…

云原生核心技术 (6/12): K8s 从零到一:使用 Minikube/kind 在本地搭建你的第一个 K8s 集群

摘要 本文是一篇保姆级的实践指南,旨在解决学习 Kubernetes (K8s) 时“环境搭建难”的头号痛点。我们将对比分析 Minikube、kind、K3s 和 Docker Desktop Kubernetes 等主流本地 K8s 环境方案的优缺点,帮助你选择最适合自己的工具。随后,文章…

线程运行的现象和相关指令

一.多个线程运行的现象 1.规律 交替执行谁先谁后,不由我们控制 2.举例 Slf4j(topic "c.Test6") public class Test06 {public static void main(String[] args) {//创建并运行线程1new Thread(()->{while (true){log.debug("running");…

Windows网络配置避坑指南

Windows网络配置避坑指南 一、网络配置是什么?防火墙的“信任开关”二、何时需要手动切换网络配置文件?​必需切换的场景高危!绝对禁止选错的两个场景三、3种切换指南(Win10/11通用)方法1:图形化操作(推荐小白)​方法2:用PowerShell强制切换方法3:注册表底层修改(应…

基于ThinkPHP8.*的后台管理框架--Veitool框架学习使用

基于ThinkPHP8.*的后台管理框架--Veitool框架学习使用 一、安装部署二、目录结构 一、安装部署 环境要求 Linux、Unix、macOS、Windows Nginx、Apache、IIS PHP > 8.1.0 MySQL > 5.7 下载地址 官网下载:https://www.veitool.com/download 境内仓库&#xff…

Java多线程通信核心机制详解

在Java中,多线程通信与协作主要通过以下几种核心机制实现,每种方式适用于不同的并发场景: 🔄 一、共享变量同步控制(基础方式) // 使用volatile保证可见性 private volatile boolean flag false;// 线程A…

Django知识-视图

视图设置 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。代码写在哪里也无所谓,只要它在你的应用目录下面。但是为了方便视图一般被定义在“应用/views.py”文件中。 视图的第一个参数必须为Ht…

DevSecOps实践:CI/CD流水线集成动态安全测试(DAST)工具

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 让安全扫描成为代码交付的“守门员” 引言:安全漏洞的代价,越早发现越好 在软件开发领域,安全漏洞的修复成本随着开发…