TrustRAG:增强RAG系统鲁棒性与可信度的创新框架
在人工智能飞速发展的今天,大语言模型(LLMs)凭借其强大的语言处理能力在诸多领域大放异彩。检索增强生成(RAG)系统(面向企业RAG(Retrieval Augmented Generation)系统的多维检索框架)的出现,通过整合外部知识源进一步提升了 LLMs 的性能,使其能针对用户查询提供更准确、更具上下文相关性的回答,在众多知名应用中得到广泛采用。然而,这一系统并非坚不可摧,语料库中毒攻击成为了严重威胁其性能的安全隐患。在此背景下,TrustRAG 应运而生,为解决 RAG 系统的安全问题提供了全新的思路和有效的解决方案。
一、RAG 系统的发展与困境
RAG 系统(RAG综述:探索检索增强生成技术的多样性与代码实践)的核心思想是通过从外部知识数据库中动态检索信息并与用户查询相结合,以提升 LLMs 回答的准确性和时效性。这一创新方法在诸如 ChatGPT、Microsoft Bing Chat、Perplexity AI 和 Google Search AI 等应用中得到了广泛应用,为用户带来了更优质的交互体验。但近期的一系列事件却暴露出 RAG 系统的脆弱性。从 Google Search AI 的不一致结果,到 ChatGPT 中出现的危险恶意代码注入,这些问题凸显了 RAG 系统在实际应用中面临的严峻挑战。
语料库中毒攻击是 RAG 系统面临的主要威胁之一。攻击者能够通过向知识数据库中注入恶意文档,劫持检索过程,使 LLMs 生成错误或具有欺骗性的信息,这严重违背了 RAG 系统提供可靠、准确回答的初衷。此外,互联网上大量的噪声和虚假信息增加了搜索引擎准确检索有用知识的难度,而 LLMs 本身在生成内容时也存在不可靠性,容易受到上下文中错误信息的误导。这些因素共同加剧了 RAG 系统的脆弱性。
二、TrustRAG 框架的提出
为了应对 RAG 系统的上述漏洞,研究团队提出了 TrustRAG,这是首个专门设计用于在多个恶意文档污染检索语料库的情况下,维持鲁棒且可信响应的防御框架。TrustRAG 的设计目标是过滤掉检索器获取的恶意和无关文档,最终让 LLMs 生成更准确可靠的回答。
TrustRAG 的工作流程分为两个关键阶段:Clean Retrieval(清洁检索)和 Conflict Removal(冲突消除)。在 Clean Retrieval 阶段,系统运用 K - means 聚类(k = 2),基于文档的嵌入分布来区分良性和潜在的恶意文档。攻击者在进行攻击时,恶意文档在嵌入空间中往往会紧密聚集,TrustRAG 正是利用这一特性,通过 K - means 聚类算法分析文本嵌入的分布,识别出可能存在恶意文档的高密度簇。对于单次注入攻击,还引入了 ROUGE - L 分数来比较簇内相似度,以保留大部分干净文档,减少信息损失。
在 Conflict Removal 阶段,TrustRAG 借鉴相关研究成果,利用 LLM 的内部知识。这部分知识反映了大量预训练和指令微调数据的共识,能够补充检索文档中可能缺失的信息,甚至反驳恶意文档,实现内部和外部知识的相互验证。首先,系统提示 LLM 生成内部知识,为保证可靠性和成本效益,仅进行单次 LLM 推理。接着,利用 LLM 整合内部生成和外部检索的文档信息,通过特定的提示让 LLM 识别一致信息、检测恶意信息,并将不可靠知识重新组合成更少的精炼文档。最后,再次提示 LLM 基于这些精炼文档生成最终答案,并通过比较各文档组答案的可靠性,选出最可靠的作为最终回答。
三、TrustRAG 的实验验证
为了全面评估 TrustRAG 的性能,研究团队进行了一系列严谨的实验。在实验设置方面,采用了 Natural Questions(NQ)、HotpotQA 和 MS - MARCO 三个基准问答数据集,每个数据集都有对应的知识数据库。同时,引入了两种流行的 RAG 攻击方式:语料库中毒攻击(PoisonedRAG)和提示注入攻击(PIA),并使用响应准确率(ACC)和攻击成功率(ASR)作为主要评估指标。
实验结果表明,在应对语料库中毒攻击时,现有的防御框架在恶意文档数量超过良性文档时往往失效,攻击成功率较高,响应准确率较低。而 TrustRAG 凭借 K - means 过滤策略,能显著减少恶意文档,只有一小部分恶意文档进入 Conflict Removal 阶段。经过冲突消除后,TrustRAG 能有效整合内部知识,利用一致文档组的信息推断最终答案,在多种攻击场景下都能保持较高的响应准确率,同时大幅降低攻击成功率。
对于提示注入攻击,TrustRAG 将其视为语料库中毒攻击中毒文档数量为 1 的特殊情况,同样能够通过 Conflict Removal 阶段有效防御。此外,在不同的上下文窗口设置下,TrustRAG 在干净场景和中毒场景中均表现出卓越的性能,准确率显著高于 Vanilla RAG,攻击成功率则远低于后者。
四、TrustRAG的关键技术
1、K-means聚类算法
K-means聚类算法是一种常用的无监督学习算法,用于将数据集划分为K个簇。在TrustRAG框架中,K-means聚类算法被用于对检索到的文档进行分组。通过计算文档之间的相似度,算法能够将相似的文档聚类在一起,从而便于识别并过滤掉潜在的恶意文本。
2、内部知识生成
为了解决内部知识与外部知识之间的冲突,TrustRAG框架利用LLMs生成内部知识。通过提示LLMs根据特定问题或上下文生成相关知识,TrustRAG能够获得与问题紧密相关的内部知识表示。这些知识表示有助于在可信度增强阶段解决知识冲突,提高响应的准确性。
3、知识冲突解决
在可信度增强阶段,TrustRAG框架通过整合内部知识和外部检索到的知识来解决知识冲突。具体而言,当内部知识与外部知识存在不一致时,TrustRAG会综合考虑两者的可靠性和相关性,选择最可信的知识作为最终答案的依据。这一过程有助于提高响应的可信度和准确性。
五、TrustRAG 的意义与展望
TrustRAG 的提出为解决 RAG 系统(微软最新研究:RAG(Retrieval-Augmented Generation)的四个级别深度解析)的安全问题提供了切实可行的方案,其在多个基准数据集上的出色表现证明了该框架的有效性和优越性。TrustRAG 的即插即用架构使其能与任何 LLMs 立即集成部署,具有广泛的应用前景。
然而,随着人工智能技术的不断发展,攻击者的手段也会日益复杂多样。未来,需要持续关注 RAG 系统面临的新安全威胁,进一步优化 TrustRAG 框架,提升其在更多复杂场景下的性能。例如,可以探索结合更多先进的检测技术和防御策略,提高对新型攻击的识别和抵御能力;也可以研究如何在保证鲁棒性和可信度的前提下,进一步降低 TrustRAG 的运行成本,提高运行效率。
总之,TrustRAG 作为增强 RAG 系统鲁棒性和可信度的创新框架,为人工智能领域在保障系统安全和可靠性方面迈出了重要一步,为未来 RAG 系统的发展和应用奠定了坚实基础。
相关文章:
TrustRAG:增强RAG系统鲁棒性与可信度的创新框架
在人工智能飞速发展的今天,大语言模型(LLMs)凭借其强大的语言处理能力在诸多领域大放异彩。检索增强生成(RAG)系统(面向企业RAG(Retrieval Augmented Generation)系统的多维检索框架…...
使用证件照制作软件的常见问题及解决方案
在数字化时代,证件照的制作变得越来越简单。借助各种证件照制作软件,我们可以轻松在家中制作出符合要求的证件照。然而,用户在使用这些软件时,可能会遇到一些常见问题。为了帮助您顺利制作出满意的证件照,我们整理了一…...
通过gradle发布aar或jar携带sources-jar到maven nexus
找了很久,没有找到满意的。终于找到一个好的办法。 gradle7.x适用。比以前的写法简洁。 发布传统的jar工程 比如okhttp,fastjson等项目,纯java工程。 直接创建新文件publish.gradle: apply plugin: maven-publishProperties properties …...
SAP推出云端ERP解决方案,加速零售行业数字化转型
2025年1月9日,SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition,进一步推动企业向云端迁移。这款解决方案旨在集中运营数据,整合财务、采购和商品管理流程,以帮助零售企业优化运营效率。 核…...
RK3568 Android 13 内置搜狗输入法小计
问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall)…...
微服务-Nacos(注册中心)
Nacos Nacos可以看作注册中心配置中心,比Eureka更加强大。 注册中心 在父工程中引入SpringCloudAlibaba的版本依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId&g…...
【数据结构:前缀树Trie】
目录 前言前缀树介绍和应用一、前缀树的定义前缀树的问题和思考前缀树的映射思想前缀树三大性质 二.前缀树节点结构三. 前缀树接口介绍和实现四个接口API1. insert(String word)2. search(String word)3. startsWith(String pre)4. delete(String word) API实现1. 查询操作sear…...
如何让QPS提升20倍
一、什么是QPS QPS,全称Queries Per Second,即每秒查询率,是用于衡量信息检索系统(例如搜索引擎或数据库)或请求-响应系统(如Web服务器)每秒能够处理的请求数或查询次数的一个性能指标。以下是…...
时间复杂度简介
定义 时间复杂度是用来衡量算法运行时间随着输入规模增长而增长的量级。简单来说,它描述了算法执行时间与数据规模之间的关系。我们通常用大O符号( O O O)来表示时间复杂度。例如,对于一个简单的加法运算,它的执行时间…...
记一次sealos部署k8s集群之delete了第一台master如何恢复
记一次sealos部署k8s集群之delete了第一台master如何恢复 一、背景描述 使用sealos部署了一套K8S集群 master信息:172.27.100.1、172.27.100.2、172.27.100.3 node信息:172.27.100.4、172.27.100.5 sealos安装在172.27.100.1节点,根目录下/root/.sealos/文件还在! [root…...
【json】
JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…...
TypeScript语言的并发编程
TypeScript语言的并发编程 引言 随着现代应用程序的复杂性不断增加,性能和用户体验的重要性显得尤为突出。在这种背景下,并发编程应运而生,成为提升应用程序效率的重要手段。在JavaScript及其超集TypeScript中,尽管语言本身是单…...
左值引用(Lvalue Reference)和右值引用(Rvalue Reference)详解
左值引用(Lvalue Reference)和右值引用(Rvalue Reference)详解 文章目录 左值引用(Lvalue Reference)和右值引用(Rvalue Reference)详解1. 什么是左值和右值?左值&#x…...
音视频入门基础:RTP专题(1)——RTP官方文档下载
一、引言 实时传输协议(Real-time Transport Protocol,简写RTP)是一个网络传输协议,由IETF的多媒体传输工作小组1996年在《RFC 1889》中公布的。 RTP作为因特网标准在《RFC 3550》有详细说明。而《RFC 3551》详细描述了使用最小…...
【Flutter】使用ScrollController配合EasyRefresh实现列表预加载:在还未滑动到底部时加载下一页数据
需求/背景 在我们的业务场景中,列表的加载使用easy_refresh组件: https://pub.dev/packages/easy_refresh 大概效果是往上滑动到一定的offset会触发一个上滑加载,可以触发一些网络请求拉取列表后面的数据来展示。 这种模式一般在一页翻完…...
js实现md5加密
要在JavaScript中实现MD5加密并截取特定位置的字符,你可以使用像crypto-js这样的库。首先,你需要确保你的项目中包含了crypto-js库。如果你是在浏览器环境中,可以通过CDN引入;如果是在Node.js环境中,可以通过npm安装。…...
[java基础-集合篇]LinkedList源码粗析
LinkedList 的数据结构 实现List、Deque 接口,基于 双向链表实现的列表。与基于数组的 ArrayList 不同,基于链表的LinkedList 允许在列表的任何位置快速地插入和删除元素。 Java中LinkedList实现了Deque,它提供了 add, offer, remove, poll, …...
【Rust自学】11.1. 编写和运行测试
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.1.1. 什么是测试 在Rust里一个测试就是一个函数,它被用于验证非测试代码的功能是否和预期一致。 在一个测试的函数体里通…...
移动端屏幕分辨率rem,less
谷歌模拟器:能直接看到移动端效果 屏幕分辨率 右键电脑桌面 ,点击显示设置 PC端是逻辑分辨率,移动端代码也是参考逻辑分辨率 网页端宽度和逻辑分辨率尺寸相同 手机屏幕尺寸不同,网页宽度均为 100% 所以就需要添加视口标签&#x…...
rk3568 , buildroot , qt ,使用sqlite, 动态库, 静态库
问题说明: 客户反馈 ,buildroot 系统 ,使用qt 使用sqlite ,有报错,无法使用sqlite. 测试情况说明: 我自己测试,发现, buildroot 自己默认就是 使能了 sqlite 的。 是否解决说明&…...
web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理
web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理 1.uni.getSystemInfoSync().screenWidth; 获取屏幕宽度 2.uni.onWindowResize() 实时监测屏幕宽度变化 3.根据宽度的大小拿到每行要展示的数量itemsPerRow 4.为了确保样式能够根据 items…...
Airflow:TimeSensor感知时间条件
在数据管道工作流中,任务可能需要在特定的时间执行,或者在继续之前等待一定的时间。为了满足这些需求,Apache Airflow提供了TimeSensor,这是一种内置Sensor,可以监控当前时间,并在达到指定时间时触发后续任…...
使用Python和Neo4j驱动程序来实现小规模数据的CSV导入
要将CSV数据导入到Neo4j数据库中,你可以使用Neo4j提供的工具,比如neo4j-admin import命令(适用于大规模数据导入),或者使用Python的Neo4j驱动程序通过Cypher查询逐行插入数据(适用于小规模数据导入…...
网络安全测评技术与标准
网络安全测评概况 网络安全测评是网络信息系统和IT技术产品的安全质量保障。本节主要阐述网络安全测评的概念,给出网络安全测评的发展状况。 18.1.1 网络安全测评概念 网络安全测评是指参照一定的标准规范要求,通过一系列的技术和管理方法,获…...
某漫画网站JS逆向反混淆流程分析
文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…...
如何获取文件的MIME类型
文章目录 1. 概念介绍2. 方法与类型2.1 使用方法2.2 常见类型3. 示例代码4. 内容总结我们在上一章回中介绍了"如何加载本地图片"相关的内容,本章回中将介绍如何获取文件类型.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中提到的文件类型是指MI…...
Three.js 基础概念:构建3D世界的核心要素
文章目录 前言一、场景(Scene)二、相机(Camera)三、渲染器(Renderer)四、物体(Object)五、材质(Material)六、几何体(Geometry)七、光…...
Linux web服务器
Linux 作为 Web 服务器操作系统 安装 Web 服务器软件(以 Apache 为例) 步骤一:更新系统软件包列表 在 CentOS 系统中,使用命令 yum update -y 这个命令会连接到 CentOS 的软件包仓库,检查所有已安装软件包是否有更…...
Linux 下信号的保存和处理
信号的几个状态 信号抵达: 当接收到的信号被处理时, 此时就成为信号的抵达信号的未决: 从信号的产生到信号抵达这个时间段之间, 称为信号未决信号阻塞: 当进程设置了某个信号为阻塞后, 这个进程就不会在接收到这个信号信号忽略: 将信号设置为忽略后, 接收到这个信号, 对这个信…...
宝塔安装教程,bt怎么安装 linux
Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 37a09b35 Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo b…...
java通过ocr实现识别pdf中的文字
需求:识别pdf文件中的中文 根据github项目mymonstercat 改造,先将pdf文件转为png文件存于临时文件夹,然后通过RapidOcr转为文字,最后删除临时文件夹 1、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId&g…...
基于SpringBoot的养老院管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
阿里云发现后门webshell,怎么处理,怎么解决?
当收到如下阿里云通知邮件时,大部分管理员都会心里一惊吧!出现Webshell,大概是网站被入侵了。 尊敬的 xxxaliyun.com: 云盾云安全中心检测到您的服务器:47.108.x.xx(xx机)出现了紧急安全事件…...
韩顺平老师Linux学习笔记【持续更新...】
1、课程内容 1.1、课程大纲 1.2、Linux使用在哪些地方 Linux运维工程师Linux嵌入式工程师Linux下开发项目:JavaEE、大数据、Python、PHP、C/C、Go 1.3、Linux的应用领域 个人桌面领域服务器领域(最强领域)嵌入式领域 2、Linux入门 2.1、…...
Cognitive architecture 又是个什么东东?
自Langchain: https://blog.langchain.dev/what-is-a-cognitive-architecture/ https://en.wikipedia.org/wiki/Cognitive_architecture 定义 A cognitive architecture refers to both a theory about the structure of the human mind and to a computational…...
【css】浏览器强制设置元素状态(hover|focus……)
直接上步骤: 打开浏览器控制台 → 找到样式选项 → 找到:hov选项 → 点击:hov选项,会展开【设置元素状态】。 只要选中就会展示出自己写在css里面的该种状态下的样式了。...
leetcode热题100——NO.160相交链表——JAVA
一、题目描述 题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必…...
基于Media+Unity的手部位姿三维位姿估计
使用mediapipe Unity 手部位姿三维位姿估计 参考文章 基于Mediapipe的姿势识别并同步到Unity人体模型中 MediapipeUnity3d实现虚拟手_unity mediapipe-CSDN博客 需求 我的需求就是快速、准确的跟踪手部位姿并实现一个三维显示。 主要思路 搭建mdeiapipe系统,…...
cJson——序列化格式json和protobuf对比
cJson——序列化格式json和protobuf对比 1. 更小的消息体积2. 更快的序列化与反序列化速度3. 类型安全4. 向后和向前兼容性5. 更低的带宽消耗6. 高效的编码方式7. 易于跨语言支持8. 支持复杂的数据结构9. 更好的支持大型数据交换总结 Protocol Buffers (Protobuf) 和 JSON 都是…...
STM32F1学习——ADC模数转换器
一、ADC模数转换器 ADC的全称 Analog-Digital Converter 模拟-数字转换器,他可以用来将引脚上连续变换的模拟电压转换为内存中存储的数字变量。 ADC有两个重要指标,分辨率和频率。 STM32的ADC是 12位 逐次逼近型,1us转换时间,也就…...
2025-1-10-sklearn学习(36、37) 数据集转换-无监督降维+随机投影 沙上并禽池上暝。云破月来花弄影。
文章目录 sklearn学习(36、37) 数据集转换-无监督降维随机投影sklearn学习(36) 数据集转换-无监督降维36.1 PCA: 主成份分析36.2 随机投影36.3 特征聚集 sklearn学习(37) 数据集转换-随机投影37.1 Johnson-Lindenstrauss 辅助定理37.2 高斯随机投影37.3 稀疏随机矩阵 sklearn学…...
Linux之线程池与单例模式
目录 线程池 线程池代码 单例模式 饿汉模式单例模式 懒汉模式单例模式 在前几期,我们已经学习了多线程的创建和控制,学习了多线程中的同步和互斥,学习了多线程中的条件变量和信号量,基于此我们实现了基于阻塞队列和基于环形队…...
LabVIEW调用不定长数组 DLL数组
在使用 LabVIEW 调用 DLL 库函数时,如果函数中的结构体包含不定长数组,直接通过 调用库函数节点(Call Library Function Node) 调用通常会遇到问题。这是因为 LabVIEW 需要与 DLL 中的数据结构完全匹配,而包含不定长数…...
计算机的错误计算(二百零七)
摘要 利用两个数学大模型计算 arccot(0.125664e2)的值,结果保留16位有效数字。 实验表明,它们的输出中分别仅含有3位和1位正确数字。 例1. 计算 arccot(0.125664e2)的值,结果保留16位有效数字。 下面是与一个数学解题器的对话。 以上为与…...
基于 GEE 利用 RF 回归模型实现空间降尺度
目录 1 前言 2 完整代码 3 运行结果 1 前言 本篇讲述在GEE上基于回归模型降尺度,也就是要复现以下论文,该论文发表在J-Star期刊上。 “Ebrahimy H, Aghighi H, Azadbakht M, et al. Downscaling MODIS land surface temperature product using an a…...
Linux 系统下磁盘相关指令:df、du、fdisk、lsblk
文章目录 I df、du、fdisk、lsblk指令df命令用于显示文件系统的磁盘空间使用情况du命令用于估算目录或文件的磁盘空间使用情况fdisk命令用于对磁盘进行分区操作lsblk指令查看设备信息II 应用du估算目录或文件的磁盘空间使用情况lsblk查看服务器上查看硬盘个数III 知识扩展磁盘阵…...
在线或离线llama.cpp安装和模型启动
该版本安装时间是2025-01-10,因为不同版本可能安装上会有所不同,下面也会讲到。 先说下问题——按照官方文档找不到执行命令llama-cli或./llama-cli 先附上llama.cpp的github地址:https://github.com/ggerganov/llama.cpp,build…...
(Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
LORA-FA:针对大型语言模型微调的内存高效低秩自适应 paper是香港浸会大学发表在Arxiv 2023的工作 paper title:LORA-FA: MEMORY-EFFICIENT LOW-RANK ADAPTATION FOR LARGE LANGUAGE MODELS FINE-TUNING ABSTRACT 低秩自适应 (LoRA) 方法可以大大减少微调…...
Ubuntu | 系统软件安装系列指导说明
文章目录 Ubuntu 系统软件安装系列指导说明工具系列1. Docker 与 Docker-Compose部署与安装 环境系列1. Golang部署与安装 数据库系列1. PostgreSQL17.2源码部署与安装 Ubuntu 系统软件安装系列指导说明 工具系列 1. Docker 与 Docker-Compose部署与安装 链接 环境系列 1…...
攻防靶场(32):两个爆破技巧 Funbox 7 EasyEnum
目录 攻击路径一 1. 侦查 1.1 收集目标网络信息:IP地址 1.2 主动扫描:扫描IP地址段 1.3 主动扫描:字典扫描 2. 初始访问 2.1 有效帐号:本地账户 3. 权限提升 3.1 滥用特权控制机制:Sudo和Sudo缓存 4. 凭据访问 4.1 凭据…...