跳至主要內容

權限 aware RAG 檢索評測教學

實作

RAG 與知識檢索:先確認找得到正確資料

建立雙租戶檢索測試資料,在排序前套 access 控制,比較檢索版本,引註與答案說明文字分開評分。

難度
中階
預估時間
150 分鐘
更新日期
2026-10-02
文案複核
speak-human-tw
兩輪
本課內容
  1. 01先把定義說清楚
  2. 02現場情境
  3. 03實作範例
  4. 04照著做,每一步都有檢查點
  5. 05實務脈絡
  6. 06動手實作
  7. 07故障診間
  8. 08正式上線前的邊界
  9. 09資料來源與主張限制

這一課會完成什麼

  • 文件切片全程保留責任歸屬、版本、時效與權限中繼資料
  • 語意或關鍵字排序前先做租戶與文件 access 篩選
  • 比較基準版本、附脈絡的文件片段、關鍵字搜尋與重排
  • 檢索漏找與引註忠實程度不得和文字品質混成一個分數

開始前先準備

  • • 模組 03 的限定租戶範圍的狀態與來源紀錄模型
  • • 基本搜尋、向量嵌入與測試測試資料概念

先把定義說清楚

RAG 與知識檢索

檢索增強生成(RAG)在執行時選取已授權的外部資料,連同來源紀錄交給模型。檢索與生成答案會在不同地方出錯:前者可能漏掉必要段落、抓到過期資料,後者可能把資料解讀錯誤,或把有限觀察寫成一般結論。因此要分開評測。先確認正確且有權限閱讀的段落進入模型脈絡,再檢查答案是否忠於來源;找不到足夠資料時,也要能明確回報缺口。

答案寫得再流暢,也補不了缺少或未授權的證據。必要段落沒進脈絡,模型只能承認缺口,或拿先前知識與推論填空;後者通常就是不受支持的主張的起點。

文件權限必須一路穿過資料匯入、文件片段、索引、篩選、排序、快取、引註與刪除。等檢索完成才做 access 檢查,禁止內容已經進過系統路徑,甚至可能留在執行軌跡或快取。

現場情境

Cedar policy answer service

具名合成情境。Cedar Systems、員工、規則文件、預期段落與檢索分數全為教學虛構。

負責人
你替兩個合成區域團隊使用的內部規則助理實作檢索。
要做的決策
從候選檢索設定選出同時通過命中率與未授權命中為零的版本。
目前狀態
Cedar 有 6 份公開規則、4 份 EU-only 附錄與 4 份 US-only 附錄。原型只建立向量嵌入純文字文件片段,權限中繼資料沒跟進索引,團隊也只看最終答案是否流暢。
預期成果
Selected 設定能替標準題目找到預期已授權文件片段;真的沒證據就記空結果結果,也從不回傳另一個區域的 canary。

限制條件

  • • 每個文件片段繼承租戶、可閱讀對象、文件版本、生效日期與刪除狀態。
  • • 授權篩選在語意/關鍵字評分前執行,快取回內容前也要再檢查。
  • • 答案引用文件片段 ID、文件 ID、標題、版本與來源 URL 或內部紀錄路徑。
  • • 標準答案集同時包含已授權命中、空結果結果、過期版本與禁止證據 canary。

實作範例

段落答得出問題,使用者仍可能無權閱讀

證據類型: 具名模擬情境

問題 CDR-09 問未使用的訓練預算是否會延到下一季。唯一寫延續的段落位於 EU 附錄;進行中的使用者在 Cedar US,目前規則只說管理者逐案決定,沒有延續規則。未過濾的語意搜尋把 EU 段落排第一。

檢索層在評分前先過濾 Cedar US 與公開文件,只回 US 段落並標 evidence_gap。答案明說目前可看的 US 規則沒有定義延續,將問題交給規則負責人;EU 規則不引用、不摘要,也不暗示存在。

驗收報告記 US 段落的授權命中、0 次受限 canary 命中,以及 1 個預期證據缺口。指標只適用課程的 30 題資料集,不代表一般 RAG 正確率。

主張限制

Anthropic 的 Contextual Retrieval(附脈絡檢索)數字來自其實驗,不能當 Cedar 的預期收益。託管檔案搜尋會隱藏部分匯入與排序細節;採用前仍須確認權限篩選、刪除、中繼資料與結果檢查能力。

做法

照著做,每一步都有檢查點

依權限處理的 RAG 處理流程,從文件中繼資料繼承、檢索前授權、混合排序、證據組裝、引註驗證到刪除傳播。

現場情境

從候選檢索設定選出同時通過命中率與未授權命中為零的版本。

  1. 01把上層中繼資料帶進文件片段
  2. 02先按權限篩選,再產生候選資料
  3. 03比較 4 種檢索路徑

驗收條件

一份能按已授權證據召回率、空結果如實回報、延遲與成本選設定的檢索報告。討論答案說明文字前,證據層已先過關。

這張圖要幫你看懂什麼用確定性的資料匯入/檢索圖解,把權限篩選畫在排序前;引註 UI 則由真實測試資料輸出產生。
  1. 01

    把上層中繼資料帶進文件片段

    切文件片段時保留文件 ID、租戶、可閱讀對象、版本、生效日期、已刪除狀態與來源路徑。文件片段 ID 要穩定,才能追更新與刪除。

    檢查點 · 抽查每個文件片段都能回到唯一上層文件,權限與版本沒有遺失。

  2. 02

    先按權限篩選,再產生候選資料

    存取篩選從可信的工作階段取得,套在向量、關鍵字、快取與重排器輸入之前。用 EU/US canary 驗證任何中間層都不漏。

    檢查點 · EU 和 US 使用者在排序前候選資料、快取、軌跡及最後結果中,都看不到對方的 canary。

  3. 03

    比較 4 種檢索路徑

    同一批 30 題跑基準版本向量嵌入、附脈絡的文件片段、混合關鍵字與重排。報 top-5、top-20 漏找、空結果、禁止命中、延遲與成本。

    檢查點 · 每個設定都有完整指標;選擇不能只看其中一個平均分數。

  4. 04

    只用通過的證據生成

    從已授權結果建答案脈絡,保留穩定引註欄位。證據無法支援問題要求時,必須回 evidence_gap。

    檢查點 · 每個事實句都能對到已包含的文件片段;CDR-09 不洩漏 EU 延續規則。

  5. 05

    刪除後重跑

    先把一份文件標成已刪除,再讓移除事件傳到文件片段、索引、快取與引註查詢。重跑相關標準題目,確認各層都不再回傳已刪除的內容。

    檢查點 · 候選資料與引註都找不到已刪除片段;系統明確回報預期證據缺口,不回過期內容。

實務脈絡

展示版之後

G1

實作拆解

權限從完整文件一路帶到片段。建立片段時複製租戶、可閱讀對象、版本、生效日期、來源路徑、刪除狀態與穩定文件 ID;缺欄位就不進索引。查詢依已驗證工作階段建立篩選條件,再產候選資料。向量搜尋、BM25、重排器與快取共用同一套權限。等到答案輸出才遮段落太晚,因為資料可能已進第三方重排器、軌跡或共用快取。

標準答案集先標必要來源、可接受替代資料、預期空結果、禁止命中的洩漏探針與時效條件,答案內容可以晚些再補。四種檢索版本共用 30 題,報 top-5/top-20 的授權來源漏找、空結果是否如實回報、禁止命中、延遲與成本。未授權命中大於 0 就淘汰;通過存取檢查後,才比較附脈絡片段、關鍵字補充與重排帶來的收益。

引註驗證器確認來源 ID 存在、使用者有權閱讀、版本有效,且引用段落真的出現在已檢索脈絡中。每個事實句至少對應一個證據 ID;缺證據時回報缺口,不靠反覆生成掩蓋。刪除測試一路查文件清單、片段、索引、快取、候選資料與引註解析器,任何一層仍回過期內容,就不能通過上線準備。

G2

營運檢查

檢索報告需要逐題檢視,不只列整體命中率。每個問題保存查詢、使用者身分、套用的權限條件、候選清單、分數、重排前後位置、預期來源、實際來源與缺口原因。漏掉正確段落時,先判斷是文件根本沒進索引、切段把關鍵上下文切斷、查詢詞不符、詞彙檢索缺席、語意排序失敗,還是重排器把它降下去。這些原因對應不同修法。直接調整生成提示,無法讓缺席的證據出現,反而可能提高模型用既有知識補洞的機率。

權限測試要放故意醒目的金絲雀內容,並從所有中間產物搜尋。美國身分查歐洲限定政策時,不只最終答案不得出現,候選、重排輸入、除錯畫面、追蹤紀錄與共用快取也必須為零。更新與刪除則用固定時間測傳播上限:來源版本改變後,舊分段何時退出索引、快取何時失效、引用解析器何時拒絕舊版,都要有可觀測時間。若使用託管式檔案搜尋,無法檢查的中間層要明列為供應商責任或殘餘風險,不能假設服務名稱已涵蓋權限治理。

G3

驗證與上線

切段策略不能只看固定字數。政策標題、適用對象、例外與生效日期若分散在不同段落,單一段落可能失去決定語意。建立段落時保留父文件摘要與章節路徑,再用金題檢查必要句是否能連同限制一起取回。若上下文補強提升命中,也要報增加的索引成本與查詢時間;公開研究的改善幅度只供設計實驗,不能先寫進 Cedar 驗收門檻。

混合檢索要讓每一層可替換。語意搜尋找概念相近內容,詞彙搜尋補專名、代號與精確用語,重排器只處理通過權限的有限候選。報告分別保存每層輸入與輸出,才能判斷某題是在哪一步掉下去。若所有查詢一律跑最昂貴流程,延遲與成本會在容易問題上浪費;可先由便宜路徑判斷信心,只有模糊或高風險問題才啟用重排,但路由規則同樣要用固定資料集驗證。

引用畫面要讓讀者能檢查,不只顯示一個編號。至少呈現文件標題、版本、生效日期、對應段落與存取範圍;內部路徑依權限顯示,不能把受限網址放進未授權畫面。當來源更新,舊簡報應標成使用過期版本,而非悄悄改連結指向新內容。這讓研究結果具可追溯性,也避免同一個引用識別碼在重新切段後指到不同文字。

正式發布門檻先看禁止命中,再看命中率。任一未授權候選都算重大失敗,即使答案沒有使用;任何已刪內容仍出現在快取或引用,也直接停止。通過後才檢查必要來源在前幾名的比例、證據缺口是否誠實、引用是否支持句子,以及延遲與費用是否符合服務目標。這個順序明確表達取捨:較高平均召回不能交換較寬的資料外洩風險。

G4

補強練習

請領域人員審查命中失敗,而不是只由工程師看相似分數。他要標出真正支援結論的最小段落、必要上下文、可接受替代來源與不能跨越的適用範圍。這些標註回到金題,往後切段或模型更新時都能重跑。

快取要以身分、權限版本、查詢、文件版本與檢索設定組成鍵。任一權限或來源更新就不能命中舊結果。測試刻意讓兩個區域問同一句話,再更新其中一份政策,確認回傳與快取事件都分離,沒有先命中再過濾。

把證據不足納入介面設計。畫面要說目前查了哪些核准來源、缺哪一類資料、應找哪位負責人,不用生成一段看似完整的猜測。分析師若補新文件,走正常擷取、權限與版本流程,再重跑原問題,不能臨時貼文字繞過索引治理。

G5

交付前最後檢查

金題每季由文件擁有者重看生效日期與正確來源,避免評測本身過期。更新答案時保留舊版本與變更理由,讓檢索退步和政策內容改變能分開判斷;不可直接覆寫期望值,造成歷史候選看似突然錯誤。

G6

延伸實作

檢索設定變更要附差異報告。列出新增或移除的文件、切段規則、權限欄位、向量模型、詞彙索引、候選數、重排器與快取版本,再以相同金題比較。對每個新命中與新遺漏抽查來源,確認改善不是因權限放寬或舊版文件重新出現。若命中率上升但禁止金絲雀出現在任何中間層,候選直接淘汰。這份差異報告讓資料更新、模型更新與排序更新不會混成一個難以歸因的發布。

動手實作

建立並評測 Cedar 檢索

替合成規則建立帶中繼資料的索引,用 30 個標準題目比較 4 種檢索版本;只要出現未授權命中就淘汰。

準備項目

  • • 建立公開、EU、US 文件與 2 個 canary 字串的本機資料集。
  • • 沒有核准向量嵌入服務時,可用模擬向量嵌入或本機確定性的相似度模擬替身。
  • • 測試資料清單鎖定文件版本與生效日期。
  • • 存取與命中檢查未通過前,不啟用答案評分。

本課產出

資料集清單、附帶權限資訊的文件片段、30 個標準題目、4 種檢索執行、引註驗證器、刪除測試與比較報告。

起始模板: 帶權限的文件片段測試資料

JSONL
{"chunkId":"pub_001_00","documentId":"pub_001","tenant":"cedar","audience":["public"],"region":null,"version":3,"effectiveAt":"2026-07-01","deletedAt":null,"title":"Learning budget policy","text":"Managers approve learning spend against the current quarter budget."}
{"chunkId":"eu_004_02","documentId":"eu_004","tenant":"cedar","audience":["employee"],"region":"EU","version":2,"effectiveAt":"2026-06-15","deletedAt":null,"title":"EU learning addendum","text":"Unused approved learning budget may roll into the next quarter. CANARY_EU_771."}
{"chunkId":"us_003_01","documentId":"us_003","tenant":"cedar","audience":["employee"],"region":"US","version":4,"effectiveAt":"2026-08-01","deletedAt":null,"title":"US learning addendum","text":"Managers decide exceptions case by case. This addendum does not define automatic rollover."}
{"queryId":"CDR-09","user":{"tenant":"cedar","audience":["employee"],"region":"US"},"question":"Does unused training budget roll over?","expectedChunkIds":["us_003_01"],"forbiddenChunkIds":["eu_004_02"],"expectedStatus":"evidence_gap"}

預期結果

一份能按已授權證據召回率、空結果如實回報、延遲與成本選設定的檢索報告。討論答案說明文字前,證據層已先過關。

留給下一課

保留資料集、權限資料包、標準題目、evidence_gap 與引註驗證器;總整專案會直接沿用這層受管理的知識。

驗收條件

  1. 01所有設定與使用者測試資料的未授權命中次數都是 0。
  2. 02選定版本在 30 題標準答案集,達到事先設定的授權來源 top-k 召回目標。
  3. 03每個事實答案句子引用已包含的已授權文件片段與文件版本。
  4. 04在測試指定的傳播時間內,刪除索引、快取、候選資料及引註中的內容。

常見故障

故障診間

F1Wrong-region 段落出現在候選版本,雖然最終答案沒寫出來。
先檢查
檢查排序前候選版本、從工作階段取得的篩選、快取鍵值、重排器輸入與執行軌跡敏感資訊遮蔽。
可能原因
權限在檢索後才套,或某個快取/重排服務漏掉。
修復方式
候選版本生成前先授權,所有中間儲存區都保留限制。
下次怎麼避免
放禁止 canary 文件片段;任何未授權候選版本命中都讓發布 fail。
F2答案很順,標準答案段落卻很少出現在前 k 筆。
先檢查
檢索獨立評分,按查詢型別、文件片段邊界、中繼資料與排序階段分析漏找。
可能原因
團隊只看撰寫格式,默許模型依先前知識或推論補洞。
修復方式
先修資料集、文件切片、查詢、混合檢索或重排,再調產生器。
下次怎麼避免
檢索門檻是答案層級評測的前置驗收門檻。
F3來源更新後,已被新版取代的規則仍反覆出現。
先檢查
追上層版本、文件片段版本、索引文件、快取項目與引註解析器。
可能原因
版本/刪除事件沒傳到所有衍生交付檔案。
修復方式
用穩定上層 ID、刪除標記、重建索引工作、快取失效與讀取時時效檢查。
下次怎麼避免
以最大過期時段測更新與刪除傳播。
F4重排提升召回率,延遲卻超過服務目標 2 倍。
先檢查
按百分位數拆查詢、向量嵌入、關鍵字、重排器、快取與生成時間差。
可能原因
所有查詢都走昂貴的路徑,沒有判斷歧義或基準版本信心水準。
修復方式
只有不確定查詢才重排,或量過召回率影響後降低候選版本次數。
下次怎麼避免
每個檢索設定一起公布品質、延遲與成本。

展示版之後

正式上線前的邊界

  1. 01文件清單保存負責人、來源、版本、生效日期、權限與刪除狀態。
  2. 02權限中繼資料傳到文件片段、索引、快取、重排器與引註紀錄。
  3. 03存取篩選來自可信的工作階段,排序前就套用。
  4. 04已授權檢索召回率與答案正確性/撰寫品質分開評估。
  5. 05保留精確來源紀錄,證據不足就明確回空結果或證據不足。
  6. 06更新與刪除在測過的服務時段內同步所有衍生儲存區。
  7. 07監控漏找、禁止 canary 命中、時效、延遲百分位數、token 與成本。
  8. 08已檢索的文字要做提示注入 red 團隊,不能直接影響高權限的脈絡或工具呼叫。

證據類型

資料來源與主張限制

資料來源只支撐本課標示的主張,不代表換一個系統也會得到相同結果。

  1. [1]
    Contextual Retrieval 介紹

    Anthropic · 已發表研究 · 2026-08-20

    檢索基準 · 帶有文件脈絡的 chunk · BM25 與 reranking
  2. [2]
    File search

    OpenAI · 官方文件 · 2026-08-20

    託管式檢索 · vector stores · 檢索結果處理
  3. [3]
    建置 agent 的安全指引

    OpenAI · 官方文件 · 2026-08-20

    prompt injection · 結構化資料邊界 · MCP 核准
  4. [4]
    AI Risk Management Framework

    NIST · 官方文件 · 2026-08-20

    風險治理 · 衡量方式 · 營運責任

延伸的 Tenten 資源

實作準備進正式環境時

帶著實作證據來,不用從空白摘要開始。

有效的實作審查,起點應該是任務測試資料、權限地圖、執行軌跡、評測報告、失敗案例與成本上限。Tenten 可以根據這些資料檢查整合與營運缺口,不必把課程裡已經證明過的決策全部重開。