免費全文 RAG 檢索增強 進階

重排模型該不該加:延遲與命中率的實際取捨

重排幾乎一定能提升品質,問題是值不值得那 200 毫秒。這篇給判斷依據。

RAG 檢索增強教程封面

檢索取回 top-50 之後,用交叉編碼器(cross-encoder)重新打分取前 5,是提升 RAG 品質的標準做法。它有效的原因很單純:交叉編碼器能同時看到問題與文件,而向量檢索是各自編碼後才比對。

什麼時候一定要加

  • 文件庫龐大且主題相近,向量分數差距很小。
  • 使用者問題偏長、含多個條件。
  • 答案正確性的代價很高(法遵、醫療、金融)。

什麼時候可以先不加

  • 文件庫只有幾百段,top-k 已經幾乎全中。
  • 延遲預算低於 500 毫秒的即時互動。
  • 尚未量測檢索命中率——先量再說。

降低重排成本的兩個技巧

  1. 縮小候選集:先用向量取 50 而非 200,重排成本與候選數成正比。
  2. 截斷片段:重排時只餵片段的前 512 個 token,多數情況分數幾乎不變。
cands = vector_search(q, top_k=50)
pairs = [(q, c.text[:1500]) for c in cands]
scores = reranker.predict(pairs)          # 一次批次推論
top5  = [c for _, c in sorted(zip(scores, cands), reverse=True)][:5]
重排一定要批次送,逐筆呼叫會讓延遲直接乘上候選數。這是實務上最常見的效能誤用。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區