RAG 評估:先測試檢索,再怪罪模型

逐一評估檢索增強生成各元件的指南,涵蓋文件召回、依據充分性、相關性與完整性。

Documents moving through retrieval stages toward a grounded answer

檢索增強系統給出的答案不理想時,模型可能是最後一個該被責怪的元件。原始資料也許根本沒有進入脈絡。

梳理 RAG 的故障鏈

典型的 RAG 流程會匯入文件、切分文字片段、新增後設資料、建立表示索引、檢索候選內容,再讓模型據此回答。各階段的失敗表現不同:匯入的資料過時、切分破壞語義、排序不佳、脈絡被截斷,或者生成內容缺乏依據。

保留一條將查詢、文件版本、檢索出的文字片段、分數、過濾條件、最終脈絡和回答關聯起來的執行軌跡。沒有這條鏈,看似合理的回答可能掩蓋故障檢索器,錯誤的回答也可能引發無意義的提示詞修改。

用已標註的問題衡量檢索效果

構建已知支援文件的問題。先衡量必需的來源是否出現在靠前的結果中;如果順序重要,再使用排序指標。Microsoft 的 RAG 評估器指南將文件檢索指標與檢索脈絡的文字品質判斷分開;這種區分很有用,因為相關性標籤能支援更精確的診斷。

把過濾規則和許可權作為一等測試物件。檢索器即使找到了相關文件,只要該文件未經授權,就算回答正確也屬於失敗。測試集中還應包含重複頁面、過時版本、表格,以及需要綜合多個文字片段證據的問題。

從相互獨立的維度判斷答案

依據充分性考察斷言是否侷限於提供的脈絡;相關性考察回答是否切中問題;完整性考察是否覆蓋關鍵的預期資訊。這些維度可能各自變化:謹慎的回答可能有據可依卻不完整,流暢的回答則可能相關卻缺乏支援。

在高影響場景中,為具體斷言附上引用,並核實每處引用確實支援相鄰的陳述。如果讀者無法判斷哪個段落支援哪個結論,只在文末列出來源還不夠。

測試邊界情況

提出語料庫無法回答的問題,要求系統明確說明侷限,而不是臨時編造回答。加入嵌入檢索文件的提示詞注入、相互衝突的版本、拼寫錯誤、不同表述以及時效性問題。評估系統是否識別來源的權威性與日期,而不是將每個文字片段一視同仁。

當使用者使用一種語言提問、語料庫使用另一種語言時,應按語言單獨測試。跨語言檢索可能在生成之前就失敗,而流暢的回答可能掩蓋這一遺漏。

將診斷結果轉化為改進

如果召回率低,檢查資料匯入、文字片段邊界、後設資料、嵌入表示和查詢改寫。如果檢索到的證據很好,但回答的依據充分性差,就調整生成約定和引用要求。如果回答有據可依卻不完整,則重新檢查脈絡組裝和多文件覆蓋情況。

用固定的測試集和新的保留測試集比較改動。這既避免針對熟悉的問題過度最佳化,也保留檢驗真實泛化能力的途徑。

如何付諸實踐

先選取一個與「RAG 評估:先測試檢索,再歸咎於模型」相關、邊界清晰的工作流程。改動系統之前,用一頁文件紀錄基線:目前的完成時間、品質檢查項、常見失敗類別、升級處理路徑和結果負責人。選取有代表性的樣本,而不是隻挑最乾淨的案例。納入普通案例、困難的邊緣案例,以及至少一個正確做法是停止或請求更多資訊的案例。

在允許候選方案取代現有流程前,先讓兩者並行執行。成功和失敗的輸出都要檢查,因為錯誤率下降仍可能掩蓋新的高影響失敗。紀錄每次測試使用的準確設定,並保留足以讓其他稽核人員復現結果的材料。試點結束時,依據事先商定的閾值決定擴大應用、修改方案還是停止,而不是事後憑一次最出色的演示作判斷。

向供應商或內部團隊提出的問題

詢問核心主張有哪些證據支撐、證據基於哪個系統版本和資料版本,以及排除了哪些條件。要求提供與你的部署場景相符的語言、輸入型別和風險類別的測試結果。詢問變更如何通知、迴歸問題如何發現,以及客戶如何匯出事故覆盤所需的紀錄。

還要問清:當置信度低、依賴項故障或請求超出支援範圍時,系統會如何處理。可靠的產品應有明確的失敗狀態,而不是僅僅給出更像樣的回答。責任歸屬同樣重要:明確誰能暫停流程、誰批准例外,以及重大錯誤流入正式環境後由誰通知受影響的使用者。

實用檢查清單

  • 選擇模型或工具前,先明確使用者任務以及真正需要防範的失敗。
  • 維護一個來自真實工作的、小規模且有版本紀錄的測試集,納入棘手案例和對抗性案例。
  • 每次執行都紀錄模型、提示詞、工具、檢索設定、資料版本、延遲和成本。
  • 不可逆、高影響或對外可見的操作必須經過人員確認。
  • 按類別覆盤失敗,不要只看單一平均分,並將迴歸案例加入測試集。

Meydo Journal 延伸閱讀

原始資料