[論文閱讀]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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84486.shtml
英文地址,請注明出處:http://en.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)工具

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 讓安全掃描成為代碼交付的“守門員” 引言:安全漏洞的代價,越早發現越好 在軟件開發領域,安全漏洞的修復成本隨著開發…