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

レッスン6:ハイブリッド検索 - BM25 + ベクトル + リランカー

RRFで字句検索とセマンティック検索を組み合わせ、 リランカーで精度と引用正確性を向上させる。

🧠 AI & ML — L1 レッスン6:ハイブリッド検索 BM25 + ベクトル + リランカー Gemma 4 ローカルAIエンジニアリング on Mac パート3:内部データ向けRAGエンジニアリング xdev.asia

はじめに

ベクトル検索だけでは不十分です。BM25は正確なキーワード一致に強く、ベクトル検索はセマンティック一致に強い。両方を組み合わせ、リランカーでフィルタリングすると、RAGの品質が大幅に向上します。

1. なぜハイブリッドなのか

  • BM25:エラーコード、設定パラメータなど正確な用語の検索に強い
  • ベクトル:「この問題の解決方法は?」のような意味的な検索に強い
  • 組み合わせ:両方の長所を活かし、弱点をカバー

2. RRF(Reciprocal Rank Fusion)

2つのランキングリストを統合するシンプルで効果的な方法:

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

ここで$k$は通常60に設定します。

各検索メソッドのランキングを組み合わせ、最終的なスコアを算出します。

3. パイプライン設計

ユーザークエリ
  ├── BM25検索 → top-N候補
  ├── ベクトル検索 → top-N候補
  └── RRF統合 → top-2N候補
         └── リランカー → top-K最終結果
               └── コンテキストビルダー → LLM

4. リランカーの役割

リランカーはクエリと各候補ペアを再評価し、より精度の高いスコアを付けます:

  • クロスエンコーダーベースが最も精度が高い
  • ローカルで動作可能な軽量リランカーも存在
  • レイテンシとのトレードオフを考慮

5. チューニングポイント

  • BM25とベクトルのtop-N比率
  • RRFのk値
  • リランカーのカットオフしきい値
  • 最終コンテキストに含めるチャンク数

ゴールデンセットで各パラメータの影響を測定してください。

6. ハルシネーション制御

  • 検索結果のスコアが低い場合は「データ不足」を返す
  • 引用ソースを常にレスポンスに含める
  • コンテキスト外の情報を生成しないようプロンプトで制約

デモコード

BM25 vs ベクトル vs ハイブリッドの検索結果比較:

検索結果比較

ソースコード:05-hybrid-retrieval

まとめ