知識庫設計、文件管理和檢索調優的實踐建議,以及常見錯誤速查和無法復原操作清單。
知識庫設計
Embedding 模型選型
Embedding 模型決定了向量檢索的語義理解能力,建立後不可修改,是建立知識庫前最重要的決策。
情境 | 建議 |
通用中英文情境 |
|
已有自研模型 | 使用 |
維度選擇 | 維度越高語義表達越豐富,但儲存和計算成本也越高。1024 維是大多數情境的推薦選擇 |
Metadata Schema 設計
metadata 欄位在建立知識庫時定義,建立後不可增刪。設計時遵循以下原則:
提前規劃:梳理所有可能用於過濾檢索結果的維度(分類、時間、作者、版本、部門等),建立時一次性定義。
選擇正確的類型:日期用
date類型(而非string),數值用long或double,以支援範圍過濾(greaterThanOrEquals等)。說明date支援的格式:yyyy-MM-dd、yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm:ss.SSS、yyyyMMdd HHmmss、yyyy-MM-dd'T'HH:mm:ss控制欄位數量:最多支援 200 個欄位,但建議只定義實際需要的欄位。
注意總大小限制:所有 metadata 的 key + value 合計不超過 4KB。避免在 metadata 中儲存大段文本。
Subspace 規劃
情境 | 推薦方案 | 原因 |
多租戶 SaaS,租戶資料同質 | Subspace | 共用 Embedding 配置,管理成本低,支援跨租戶聯合檢索 |
不同業務線,資料異構 | 多知識庫 | 不同業務可能需要不同的 Embedding 模型和 metadata schema |
租戶數量極大(萬級以上) | Subspace | 避免建立過多知識庫,Subspace 無數量上限 |
文件管理
大批量文檔匯入
單次 AddDocuments 最多 10 個文檔。大大量匯入時建議:
分批上傳:每批 10 個文檔,按批次串列調用 AddDocuments。
控制並發:注意 QPS 限制,避免觸發限流。
非同步等待:所有批次上傳完成後,統一輪詢文檔狀態,而非每上傳一批就等待完成。
錯誤處理:逐個檢查每個文檔的
status,對failed的文檔記錄失敗原因,修正後重試。
OSS 檔案準備
確保 OSS Bucket 已授權給知識庫服務讀寫權限。授權方式參見快速開始中的前置準備。
單檔案不超過 50MB。
使用
inclusionFilters和exclusionFilters在 OSS 目錄層級大量匯入,支援首尾*萬用字元(如*.pdf、*report*)。
文檔狀態輪詢
正常情況下文檔上傳後無需主動輪詢,系統會自動完成索引。如需嚴格確認文檔是否已索引完成,建議採用指數退避策略。
配置項 | 建議值 |
初始間隔 | 3 秒 |
退避倍數 | 2(每次翻倍:3s → 6s → 12s → ...) |
最大間隔 | 30 秒 |
終止條件 |
|
文檔處理時間受檔案大小、類型和數量影響,小檔案通常幾秒完成,大檔案或大量匯入可能需要數分鐘。退避策略在等待時間不確定時比固定間隔更合理:短檔案快速返回,長檔案不會頻繁輪詢浪費資源。
檢索調優
檢索類型選擇
情境 | 推薦檢索類型 | 說明 |
用自然語言提問 |
| 向量捕捉語義,全文保障關鍵詞命中 |
輸入精確關鍵詞或編號 | 優先 | 向量檢索對精確匹配不敏感 |
純語義理解情境 | 優先 | 如“怎麼安裝”匹配到“部署步驟” |
Rerank 策略選擇
策略 | 優點 | 缺點 | 適用情境 |
WEIGHT | 精細控制兩路檢索貢獻比例 | 需要手動調參 | 對某一路檢索有明確偏好,推薦作為預設選擇 |
RRF | 無需額外模型調用,延遲低,效果穩定 | 無法利用查詢-文檔互動資訊 | 通用情境 |
MODEL | 排序品質最高 | 額外延遲和計算成本 | 對排序品質要求極高的情境 |
numberOfResults 調優
檢索流程中有三層 numberOfResults:
N1(
denseVectorSearchConfiguration.numberOfResults):向量檢索召回數N2(
fullTextSearchConfiguration.numberOfResults):全文檢索索引召回數N3(
rerankingConfiguration.numberOfResults):Rerank 後最終返回數
N1 和 N2 決定候選池大小,N3 決定最終返回的結果數。推薦起始配置:N1 = N2 = 20,N3 = 5–10。
Metadata Filter 使用建議
Filter 在檢索前縮小候選範圍,同時提升精度和效能。
過濾欄位必須在建立知識庫時定義為 metadata。
對日期範圍過濾,使用
date類型以支援範圍比較。
常見錯誤速查
錯誤碼 | 含義 | 常見原因 | 解決方案 |
| 參數校正失敗 | 欄位類型不符、超出長度限制、缺少必要欄位 | 檢查請求參數是否符合規範 |
| 資源不存在 | 知識庫名稱拼字錯誤或已被刪除 | 確認資源名稱和id是否存在 |
| 請求格式錯誤 | JSON 格式不合法 | 檢查請求體 JSON 格式 |
| 業務校正失敗 | RRF 的 k 值為 0、檢索參數不合法 | 檢查參數取值範圍 |
HTTP 200 + | 請求成功但文檔處理失敗 | metadata 格式不匹配(如日期格式錯誤) | 逐個檢查 |
AddDocuments、DeleteDocuments 和 UpdateChunks 的響應中,HTTP 200 + code: SUCCESS 不代表所有條目都處理成功。每個條目有獨立的 status 欄位,必須逐個檢查。
日期格式
metadata 中 date 類型支援以下格式:
格式 | 樣本 |
|
|
|
|
|
|
|
|
|
|
使用不支援的日期格式會導致 AddDocuments 時文檔狀態為 failed。
無法復原操作清單
以下操作一旦執行無法撤銷:
操作 | 影響範圍 | 可否恢複 |
DeleteKnowledgeBase | 刪除知識庫及其下所有 Document 和 Chunk 資料 | 不可恢複 |
DeleteDocuments | 刪除指定文檔及其所有切片 | 不可恢複 |
embeddingConfiguration | 建立後不可修改 | 需刪除重建知識庫 |
metadata schema | 建立後不可增刪欄位定義 | 需刪除重建知識庫 |
subspace 開關 | 建立後不可修改 | 需刪除重建知識庫 |
UpdateDocument metadata | 覆蓋式更新,原有值被全量替換 | 需重新傳入完整 metadata |