RAG 檢索安全
從嵌入向量觀點看 RAG 檢索管線的安全性:檢索如何透過投毒區塊、區塊邊界利用與重排序攻擊被操控。
RAG(檢索增強生成)系統從知識庫檢索相關上下文,以將語言模型回應根植於事實資訊。檢索管線——找出並選擇哪些資訊區塊到達語言模型的流程——是關鍵的攻擊面。能夠操控模型檢索內容的攻擊者有效地控制模型對主題的認知,無需直接注入提示詞。
RAG 檢索管線
典型的 RAG 檢索管線有數個階段,每個都有安全意涵:
User Query → Query Embedding → Vector Search → Re-ranking → Context Assembly → LLM
↑ ↑ ↑
Vector Database Scoring Model Prompt Template
(poisoned chunks) (manipulated (injection
scores) surface)
階段 1:文件擷取與區塊化
檢索發生之前,文件必須被拆分為區塊並嵌入。本階段的安全決策決定哪些資訊進入系統以及如何組織:
- 區塊大小 影響每個檢索結果提供多少上下文
- 區塊重疊 影響敏感資訊是否跨多個區塊
- 中繼資料附加 決定伴隨每個區塊的標籤與存取控制資訊
- 來源驗證 決定是否僅攝取授權文件
階段 2:查詢嵌入
使用者的查詢以嵌入文件區塊的同樣模型嵌入。此階段相對簡單,但如果攻擊者能在嵌入前修改查詢(例如透過多輪對話中的提示詞注入),它可被操控。
階段 3:向量搜尋
將查詢嵌入與所有儲存的區塊嵌入比對以找出最相似的結果。這是向量資料庫注入攻擊與對抗性嵌入生效之處。
階段 4:重排序
許多 RAG 系統套用第二階段重排序器(cross-encoder 模型),對原始查詢為每個檢索到的區塊計分。重排序可透過打造在嵌入相似性指標與重排序模型下皆高分的區塊來攻擊。
階段 5:上下文組合
最高排序區塊被組合為上下文,納入語言模型的提示詞。組合過程決定區塊的順序與格式,兩者都影響模型如何詮釋資訊。
攻擊面摘要
| 階段 | 攻擊 | 影響 |
|---|---|---|
| 擷取 | 投毒來源文件 | 惡意內容進入知識庫 |
| 區塊化 | 利用區塊邊界 | 跨區塊拆分的敏感資訊繞過過濾器 |
| 向量搜尋 | 對抗性嵌入、嵌入投毒 | 攻擊者內容對目標查詢排名高 |
| 重排序 | Cross-encoder 操控 | 攻擊者內容在重排序後仍存活 |
| 上下文組合 | 透過區塊內容注入 | 提示詞注入 payload 透過檢索上下文遞送 |
關鍵概念
檢索 vs. 注入
檢索操控與提示詞注入是針對 RAG 管線不同階段的互補攻擊:
- 檢索操控 透過操控相似性搜尋來控制哪些資訊到達模型
- 提示詞注入 透過將指令注入檢索內容來控制模型如何處理資訊
最有效的 RAG 攻擊結合兩者:檢索操控確保惡意區塊被檢索,而區塊內的提示詞注入指示模型遵循攻擊者的指示。
信任模型問題
RAG 系統隱性地信任檢索內容。檢索管線依相關性(與查詢的相似性)選擇區塊,但相關性不是可信度的代理。對查詢高度相關的被投毒區塊在檢索層級與合法區塊無從區分。
這建立了根本張力:檢索系統越準確地找出相關內容,就越有效地檢索已為相關性而最佳化的投毒內容。
子節內容
本子節涵蓋兩類主要攻擊:
相關主題
- 檢索操控 — 詳細檢索攻擊技術
- 引用與歸因攻擊 — 來源與引用操控
- RAG、資料與訓練攻擊 — 更廣泛的 RAG 攻擊涵蓋
- 向量資料庫注入 — 資料庫層級的注入