RAG 知識庫:設計、評估與上線
實踐指南
內容更新:
從資料來源與文件權限,到檢索評估、回答引用、更新刪除及上線驗收,建立可追溯的企業知識庫。

RAG(檢索增強生成)把查到的資料帶入模型的回答過程。企業要取得可信的問答能力,需要同時管理資料來源、文件權限、檢索質量、引用依據及回答失敗時的處理方式。向量搜尋只是其中一環。
本指南對應技術人學習路徑 B3,涵蓋產品 FAQ、政策查詢、評論分析及內部培訓知識庫的設計、實施與驗收。建議先完成資料管道基礎,再銜接Agent 工作流。
1. 先定義問題、資料與使用者
| 場景 | 應使用的資料 | 首先核對的條件 | 驗收問題 |
|---|---|---|---|
| 產品 FAQ | 已批准規格、版本手冊、保養條款 | 型號、銷售地區、有效版本 | 回答是否與該型號的有效規格一致? |
| 政策查詢 | 平台或機構的一手政策文件 | 生效日期、地區、適用業務 | 新舊條款衝突時是否採用正確版本? |
| 評論分析 | 獲准使用的評論及來源標識 | 授權、語言、樣本期間 | 摘要是否可追溯,是否區分常見與個別意見? |
| 供應商知識 | 合約、規格及已確認往來資料 | 使用者是否有權查看該供應商資料 | 是否避免跨客戶、跨租戶或跨團隊披露? |
| 內部培訓 | 已批准 SOP、課程及操作指引 | 文件擁有人、更新與下架流程 | 新人能否完成指定任務並找到原始依據? |
先選擇可界定、可授權、可驗證的一類問題。把「提高效率」拆成實際指標:完成任務時間、人工覆核時間、錯誤、返工、查詢成本及使用者成功率。先量度基線,再比較試行結果。
RAG 原始研究展示了結合參數模型與外部檢索記憶的方法,並在指定知識密集任務上評估。企業知識庫仍需用本身的資料和工作流程驗證成效。
2. 架構:資料準備、查詢、權限與版本
flowchart LR
A[獲准使用的原始文件] --> B[解析、來源與權限標記]
B --> C[分塊及索引版本]
C --> D[檢索及重排序]
U[已驗證使用者的問題] --> D
P[伺服器授權及文件範圍] --> D
D --> E[證據檢查及回答生成]
E --> F[回答、來源、版本與後續行動]資料準備應產生穩定的文件及段落 ID,保留來源位置、內容版本、擁有人、有效日期、語言、權限範圍及下架狀態。分塊後仍要能找到原頁、表格、條款或原文段落。
查詢前,由伺服器驗證身份及資料範圍,從使用者可讀取的文件中檢索。引用連結、搜尋摘要、快取、日誌及下載入口也要執行相同的權限規則。文件中的指令不能改變使用者的權限。
Microsoft 的文件級存取控制說明可作實作參考;具體服務的功能、預覽狀態及身份整合方式,須以採用版本核對。
更新與刪除
文件修改後,要完成解析、索引、版本發佈及快取更新,才能判定查詢已使用新資料。刪除或撤回文件時,也要處理舊段落、衍生摘要及引用入口。保留更新失敗、待處理及已完成的狀態,避免將未成功的工作顯示為完成。
3. 選擇與驗證技術組合
| 決策 | 要比較甚麼 | 留下的證據 |
|---|---|---|
| 文件解析 | PDF 表格、掃描件、頁碼、中文標點及 OCR 錯誤 | 原文與解析後樣本、失敗清單 |
| 分塊 | 條款完整性、標題層級、表格上下文及跨段問題 | 固定問題集下的檢索結果 |
| Embedding | 目標語言、專有詞、型號、模型版本及維度 | 相同資料下的檢索評估 |
| 搜尋 | 關鍵字、向量、混合搜尋及篩選 | 召回、精確度、延遲及成本 |
| 重排序 | 是否改善排序,是否增加可接受的時間及費用 | 同一候選集的前後比較 |
| 生成模型 | 證據使用、拒答、引用及輸出格式 | 人工核對結果與失敗分類 |
| 部署 | 身份整合、儲存、備份、資料傳輸及營運能力 | 實際設定、故障演練及成本記錄 |
按實測選擇分塊與 Top-K;不要把單一 token 長度當作普遍最佳值。Embedding 模型或維度改動時,需規劃重建索引及版本切換。向量庫的容量、過濾能力、持久化與備份有各自限制,須按實際負載驗收。
Lost in the Middle研究了資訊位置對指定長上下文任務的影響。它提醒我們測試證據的位置與干擾內容;該研究的結果不能直接當作所有現有模型的固定表現。
4. 按步驟建立可營運的知識庫
- 資料盤點:指定文件擁有人、用途、權限、來源和可公開範圍;隔離未批准或來源不清的資料。
- 解析核對:檢查表格、掃描件及關鍵數字;保留讀取失敗的文件,讓工作人員處理。
- 索引建立:生成穩定 ID、版本及權限標記;用真實查詢測試分塊、搜尋和重排序。
- 查詢服務:驗證身份、限制文件範圍、處理逾時及零結果;輸出可追溯的來源位置。
- 回答契約:規定可回答範圍、引用格式、證據衝突和資料不足時的處理方式。
- 固定評估:每次變更保留相同的測試題、資料版本、模型設定及評分方式。
- 受控試行:讓獲授權的使用者完成真實任務;記錄人工覆核、錯誤和返工。
- 發佈與回退:驗收後切換索引版本;監察來源更新、失敗隊列和引用失效,保留可回退版本。
5. 分開評估檢索與回答
檢索指標
建立有文件或段落標註的可回答問題集,並把無答案、未標註及權限受限題目分開處理。以下函數接受實際段落 ID,計算單題的 Precision@K、Recall@K 與截斷至 K 的 reciprocal rank。重複 ID 會被拒絕;不足 K 條結果時,Precision@K 的分母仍為 K。
function retrievalMetrics(retrievedIds, relevantIds, k) {
const validIds = ids => Array.isArray(ids) && ids.every(id =>
typeof id === "string" && id.length > 0 && id === id.trim());
if (!validIds(retrievedIds) || !validIds(relevantIds)) {
throw new Error("Explicit passage ID arrays required");
}
if (!Number.isSafeInteger(k) || k < 1) throw new Error("Positive integer k required");
if (!relevantIds.length) throw new Error("Evaluate unlabelled or unanswerable questions separately");
if (new Set(retrievedIds).size !== retrievedIds.length ||
new Set(relevantIds).size !== relevantIds.length) {
throw new Error("Duplicate passage IDs must be resolved before evaluation");
}
const relevant = new Set(relevantIds);
const top = retrievedIds.slice(0, k);
const hits = top.filter(id => relevant.has(id)).length;
const first = top.findIndex(id => relevant.has(id));
return {
k, returned: top.length, relevant: relevant.size, hits,
precisionAtK: hits / k,
recallAtK: hits / relevant.size,
reciprocalRankAtK: first < 0 ? 0 : 1 / (first + 1)
};
}函數的結果只反映檢索命中;它不判斷回答是否忠於原文、引用是否支持每個主張,亦不代表整體業務效果。彙總時要說明問題數、標註方法、平均方式和未能評分的項目。
回答及使用者任務
| 維度 | 核對方法 |
|---|---|
| 事實與版本 | 逐項對照有效來源,檢查單位、日期、型號及適用地區 |
| 引用支持 | 確認引用段落確實支持相鄰主張,而非只有主題相近 |
| 證據不足 | 檢查是否清楚說明缺少甚麼、如何補充或轉交人工處理 |
| 權限 | 使用不同帳戶、角色與租戶測試相同問題,檢查摘要及快取 |
| 任務成功 | 觀察使用者是否完成工作,並量度覆核、錯誤及返工 |
| 營運成本 | 同時記錄延遲、檢索/生成費用及人工處理成本 |
Ragas 研究把檢索與生成拆成不同評估維度。自動評分適合協助篩選與回歸比較;涉及實際業務承諾的答案仍需以原始證據及領域判斷核對。
6. 證據不足、來源衝突與惡意內容
- 沒有檢索結果:保留問題與受授權的查詢範圍;引導補充型號、日期或文件,必要時轉交負責人。
- 新舊來源衝突:列出版本及適用範圍,按已批准規則處理;無法決定時交由文件擁有人核對。
- 引用不支持答案:阻止把該答案當作已核實內容,重做檢索或轉交人工。
- 來源權限變更:即時按新權限限制使用,並處理舊快取及下載連結。
- 外部文件要求洩露資料或執行操作:視為待處理資料,不能據此提升權限、傳送敏感資訊或啟動工具。
OWASP 的提示注入風險說明指出,RAG 本身不能完整消除提示注入風險。權限、工具限制和資料處理規則應由系統執行。
7. 上線、維護與驗收
服務端要保護登入與文件授權、連線憑據、上傳格式和資源用量。檢查 embedding、生成、遙測及其他連接器的實際資料流;在本機運行一個模型,不足以證明所有資料都留在本機。
建立備份與回復、索引重建、版本回退及刪除演練。日誌只保留營運必需資料,避免把完整私有文件及客戶問題散落到未受保護的監控服務。
驗收應包括:正常回答、查不到資料、版本衝突、來源失效、逾時、越權請求、租戶隔離、撤回文件、模型/索引更新及服務重新啟動。發佈報告應附實際題目、資料版本、結果、失敗原因與改進安排。