
RAG上下文視窗中的PII洩露:偵測、預防與管線設計
個人身份資訊如何進入RAG上下文視窗、傳遞給LLM並最終出現在回答中。一個包含脫敏關卡的管線級預防框架。
一個使用者向你的RAG助手詢問公司休假政策。系統檢索了相關的政策文件,組裝上下文並傳送給LLM。回答準確且有用。但它也包含了一位人力資源經理的姓名、員工編號和電子郵件地址——這些聯絡資訊嵌入在政策文件中。這就是PII洩露。
透過RAG管線發生的PII洩露並非假設場景。它們每天都在生產系統中發生。RAG的架構——檢索文件、注入LLM提示詞、生成回答——在多個環節創造了個人身份資訊進入上下文視窗並最終出現在面向使用者的輸出中的可能性。LLM不知道什麼是敏感資訊。它平等地對待上下文中的每一個token。
本文映射了RAG管線中PII可能洩露的每一個環節,解釋了每種洩露發生的原因,並提供了一個實用的預防框架。
RAG管線中的PII洩露面
一個標準的RAG管線有六個階段。PII可以在其中五個階段進入和洩露。
階段1:文件攝入 來源文件被載入管線中。PDF、Word文件、電子郵件、資料庫匯出、工單、CRM記錄。
PII風險:來源文件經常在設計上就包含PII。人力資源文件有員工姓名和社會安全號碼。工單有客戶電子郵件和電話號碼。CRM匯出有聯絡方式。醫療記錄有病患識別碼。文件本身就是PII。
階段2:解析和提取 文件被解析為文字。掃描文件使用OCR。試算表進行表格提取。標題和屬性進行中繼資料提取。
PII風險:解析器提取所有內容,包括嵌入在頁首、頁尾、中繼資料欄位和浮水印中的PII——這些是人類讀者可能都不會注意到的。PDF的中繼資料可能包含作者的全名和電子郵件。Word文件的修訂歷史可能包含每個編輯過它的人的姓名。
階段3:分塊 解析後的文字被分割成塊用於嵌入和檢索。
PII風險:分塊不加區分。如果文字中有PII,它就會出現在分塊中。一個包含政策聲明的分塊也會包含出現在同一段落中的任何員工姓名、電話號碼或電子郵件地址。
階段4:嵌入和儲存 分塊被嵌入為向量並與原始分塊文字一起儲存在向量資料庫中。
PII風險:向量資料庫儲存每個分塊的原始文字用於檢索。這創建了一個PII資料儲存,可能不受與來源系統相同的存取控制約束。你的向量資料庫現在是來源文件中每一條PII的副本。
階段5:檢索和上下文組裝 使用者查詢觸發向量搜尋,top-k分塊被組裝到LLM提示詞中。
PII風險:檢索基於語義相似性,而非存取控制。關於「員工福利」的查詢可能檢索到包含某個特定員工福利註冊詳情的分塊,包括其姓名、出生日期和眷屬資訊。檢索系統不會檢查查詢使用者是否有權檢視該員工的資料。
階段6:LLM生成 LLM基於上下文生成回答。
PII風險:LLM將上下文中的PII包含在其回答中。它沒有什麼是敏感資訊的概念。如果上下文包含一個電話號碼,且該號碼與答案相關,LLM就會將其包含在內。