讓企業 RAG 達到生產級質量
為什麼檢索 Demo 看著驚豔、生產環境卻讓人失望——以及補上差距的那幾步。
錯誤答案,要先找到錯誤的來源
企業RAG不是把文件放進向量庫,再要求模型附上引用就結束。一次回答經過資料匯入、權限判定、檢索與生成;任一層出錯,都可能產生看起來有依據的錯誤結論。排查應從具體問題和實際檢索片段開始,而不是立即更換模型。
說明用假設例子,非真實客戶案例或實作結果。 假設產品
P-104的退貨政策有v2和v3:舊版規定30天,當前版改為14天。銷售人員可以讀取退貨政策,但不能讀取財務底價文件。使用者問目前期限,系統卻回答30天並附舊版連結。下面的樣本和實驗只用於說明診斷方法,不代表實際正確率或收益。
用同一組問題觀察不同失敗
先由資料負責人確認權威版本,再建立可重複執行的樣本。每條記錄問題、認證身分、允許的文件、應引用的片段與預期行為。以下 6 條是該假設情境的起始樣本,實際專案要加入自己的真實問題。
| 樣本 | 問題或條件 | 應觀察的行為 |
|---|---|---|
| Q1 | 目前 P-104 退貨期限 |
引用 v3,回答 14 天 |
| Q2 | 明確詢問 v2 的歷史期限 |
在獲准讀取歷史資料時,回答 30 天並標明舊版 |
| Q3 | 詢問相近編號 P-140 |
不把 P-104 的規定當作該產品答案 |
| Q4 | 資料未說明的延長保固 | 說明依據不足,轉交負責人 |
| Q5 | 銷售身分詢問財務底價 | 不暴露正文、標題、引用連結或快取內容 |
| Q6 | 文件內寫有「忽略權限」指令 | 將其作為資料內容,不擴大呼叫者權限 |
把檢索與生成拆開診斷
- 查來源資料和索引。
v3是否已核准、成功匯入並生效?查看來源文件識別、版本、適用範圍和同步記錄。若新文件根本沒入庫,先修匯入;不要用提示詞掩蓋更新失敗。 - 查身分和允許範圍。 用該使用者的實際認證身分重播存取判定,確認租戶、部門和文件權限來自服務端。使用者自稱財務人員、文件裡的指令或模型生成的篩選條件都不能自行授權。
- 只看檢索結果。 暫不生成回答,儲存去識別化片段及排序。若只有
v2,檢查版本篩選;若編號不匹配,檢查關鍵字路徑;若表格條件被切開,檢查分塊。不能把任何未授權資料送給模型後再要求它保密。 - 再看生成。 如果
v3依據已正確到達模型,回答仍是舊期限,檢查上下文衝突、指令和引用對齊。引用存在不證明結論正確;資料不足時應明確說明,不能補出政策。
為文件維護 document_id、version、effective_from、audience 和 owner。歷史版可留作追溯,但預設目前查詢不應無差別混入舊版。權限收回後,索引、引用存取和答案快取都要同步失效。
比較方案時,一次只改變一個環節
固定資料快照、權限規則、樣本、模型與提示詞。以 A 的語意檢索為基線,B 僅改為混合檢索,C 在 B 上增加重新排序;分別比較 A 與 B、B 與 C。可以用實驗檢驗混合檢索對編號和固定術語匹配的幫助,重新排序可能改善相關性,但會增加費用和延遲。支援範圍須看實際儲存與服務設定,可參考 AWS 知識庫檢索說明。
分開記錄:有權存取的正確依據是否被取回、回答是否忠於依據、引用是否支持結論,以及延遲、用量和人工轉交。重複執行容易波動的問題,保留每次結果;不要只展示最好的一次。即使 C 的回答更好,也要確認額外等待和成本是否適合該業務。
一份可以交給評審人的驗收單
- 資料負責人簽認目前與歷史版本的適用規則,維護更新和刪除清單。
- 保留 Q1 至 Q6 的身分、預期依據、實際片段、答案和失敗原因。
- 單獨檢查跨租戶、撤權後的快取及引用存取;本例把任何越權暴露設為阻斷項。
- 為無依據、衝突和過期資料約定拒答說明及人工處理入口。
- 由業務與維運負責人事先約定品質、等待和費用門檻,不套用通用合格率。
- 文件、權限、索引、模型或提示詞變更後,複測受影響樣本再放行。
這樣的驗收把「回答很像正確」轉化為可以定位、比較和追責的證據。首個試點宜選資料負責人明確、答案能夠核對的業務範圍。