Chuyển đến nội dung chính

課程 6:混合檢索 — BM25 + 向量 + Reranker

以 RRF 結合詞彙搜尋與語意搜尋, 使用 reranker 提升精確度與引用正確性。

🧠 AI & ML — L1 課程 6:混合檢索 BM25 + 向量 + Reranker Gemma 4 本地 AI 工程實戰 on Mac 第三部分:內部資料的 RAG 工程 xdev.asia

前言

單純的向量檢索不夠。BM25 擅長精確關鍵字比對,向量檢索擅長語意比對。兩者結合再加上 reranker 過濾,RAG 品質將顯著提升。

1. 為什麼要混合檢索

  • BM25:精確搜尋錯誤碼、設定參數等術語
  • 向量:理解「這個問題怎麼解決?」之類的語意查詢
  • 結合:取兩者優勢,互補弱點

2. RRF(Reciprocal Rank Fusion)

整合兩個排序列表的簡單有效方法:

$$RRF(d) = \sum_{r \in R} \frac{1}{k + rank_r(d)}$$

其中 $k$ 通常設為 60。

結合各檢索方法的排名,計算最終分數。

3. 管線設計

使用者查詢
  ├── BM25 搜尋 → top-N 候選
  ├── 向量搜尋 → top-N 候選
  └── RRF 融合 → top-2N 候選
         └── Reranker → top-K 最終結果
               └── Context Builder → LLM

4. Reranker 的角色

Reranker 重新評估查詢與各候選的配對,給出更精確的分數:

  • Cross-encoder 基礎的精確度最高
  • 也有可在本地運行的輕量 reranker
  • 需考量與延遲的權衡

5. 調校重點

  • BM25 與向量的 top-N 比例
  • RRF 的 k 值
  • Reranker 的截止閾值
  • 最終 context 包含的 chunk 數

使用 golden set 衡量各參數的影響。

6. 幻覺控制

  • 檢索結果分數低時回傳「資料不足」
  • 回應中始終包含引用來源
  • 以 prompt 限制不生成 context 外的資訊

Demo 程式碼

BM25 vs 向量 vs 混合的檢索結果比較:

檢索結果比較

原始碼:05-hybrid-retrieval

總結