LESSON 30分

ストーリー

田中VPoE
ベクトル検索だけでは検索精度に限界がある。ハイブリッド検索を導入しよう
あなた
ベクトル検索とキーワード検索を組み合わせるんですよね?なぜベクトル検索だけでは不十分なんですか?
田中VPoE
例えば「ECS-2847」というチケット番号を検索したいとき、ベクトル検索は意味的な類似度を見るからチケット番号そのものにはマッチしにくい。一方キーワード検索なら完全一致で見つけられる
あなた
意味検索が得意な場面とキーワード検索が得意な場面が異なるわけですね
田中VPoE
その通りだ。両方の強みを組み合わせるのがハイブリッド検索だ。実装方法と結果の統合方法を理解しよう

ベクトル検索とキーワード検索の比較

観点ベクトル検索(Dense Retrieval)キーワード検索(Sparse Retrieval / BM25)
原理テキストのEmbedding間の類似度単語の出現頻度(TF-IDF / BM25)
強み意味的な類似度を捉える正確なキーワードマッチ
弱み固有名詞や型番に弱い言い換えや同義語に弱い
例(得意)「デプロイ手順」→「リリースプロセス」「ECS-2847」→チケット番号の完全一致
例(不得意)「ECS-2847」→意味的に関係ない結果「デプロイ手順」→「リリースプロセス」は不一致
検索精度の補完関係:

        ベクトル検索が得意          キーワード検索が得意
        ┌──────────────┐          ┌──────────────┐
        │ 意味的な類似度  │          │ 完全一致      │
        │ 言い換え対応    │   ←→    │ 固有名詞      │
        │ 曖昧な質問     │          │ 型番・コード   │
        └──────────────┘          └──────────────┘

              ハイブリッド検索
              (両方の強みを活用)

BM25の仕組み

BM25スコアリング

BM25(Best Matching 25)はキーワード検索の標準的なスコアリングアルゴリズムです。

BM25スコアの要素:

1. TF(Term Frequency): 検索語がドキュメント内に何回出現するか
   → 多く出現するほどスコアが高い(ただし飽和する)

2. IDF(Inverse Document Frequency): 検索語がどれだけ珍しいか
   → 珍しい語ほどスコアが高い(「の」「は」等の一般語は低スコア)

3. 文書長の正規化: ドキュメントの長さを考慮
   → 短いドキュメントで出現する方がスコアが高い

BM25(q, d) = Σ IDF(qi) × (TF(qi, d) × (k1 + 1)) / (TF(qi, d) + k1 × (1 - b + b × |d|/avgdl))

k1 = 1.2〜2.0(TFの飽和速度)
b = 0.75(文書長の正規化度合い)

Sparse Embeddingによる実装

一部のベクトルDBはBM25をSparse Embeddingとして実装しています。

手法概要
SPLADE学習済みSparse Embedding。BM25より高精度
BM25 Sparse VectorBM25のスコアをベクトル形式で格納
Qdrant Sparse VectorsQdrantネイティブのスパースベクトルサポート

ハイブリッド検索の実装パターン

パターン1: 並列検索 + 結果統合

ハイブリッド検索(並列パターン):

ユーザーのクエリ
    ├── [ベクトル検索] → Embedding → Top-K1
    └── [キーワード検索] → BM25 → Top-K2

        [結果の統合(Fusion)]

        統合されたTop-K結果

パターン2: 段階的検索(Two-Stage)

ハイブリッド検索(段階的パターン):

ユーザーのクエリ

[Stage 1: キーワード検索(BM25)]
    → 広く候補を取得(Top-100)

[Stage 2: ベクトル検索(Reranking的に活用)]
    → 候補をEmbeddingで再スコアリング(Top-10)

Reciprocal Rank Fusion(RRF)

複数の検索結果を統合する最も一般的な手法です。

RRFの計算:

RRF_score(d) = Σ 1 / (k + rank_i(d))

k = 60(定数、一般的に60が使われる)
rank_i(d) = 検索手法iにおけるドキュメントdの順位

例:
ドキュメントA: ベクトル検索で1位、BM25で5位
RRF(A) = 1/(60+1) + 1/(60+5) = 0.0164 + 0.0154 = 0.0318

ドキュメントB: ベクトル検索で3位、BM25で2位
RRF(B) = 1/(60+3) + 1/(60+2) = 0.0159 + 0.0161 = 0.0320

→ ドキュメントBの方がRRFスコアが高い(両方で上位)

RRFの利点

利点説明
スコアの正規化が不要順位ベースのため、異なるスコア体系の統合が容易
パラメータが少ないk=60のみ。チューニングが簡単
堅牢性外れ値のスコアに影響されにくい
実績多くのRAGシステムで採用されている

重み付きハイブリッド検索

ベクトル検索とキーワード検索の重みを調整するアプローチです。

パラメータ設定例用途
alpha = 0.7ベクトル70%、キーワード30%一般的なナレッジ検索(意味重視)
alpha = 0.5ベクトル50%、キーワード50%バランス型
alpha = 0.3ベクトル30%、キーワード70%固有名詞・コードが多いドキュメント
重みの調整ガイドライン:

クエリの特性を分析:
├── 「RAGの精度を上げるには?」→ 意味的なクエリ → alpha高め(0.7)
├── 「ECS-2847の対応状況」→ キーワード的なクエリ → alpha低め(0.3)
└── 自動判定: LLMでクエリの種類を分類し、alphaを動的に調整

「ハイブリッド検索の重みはデータとクエリの特性で決まる。A/Bテストで最適値を見つけるのが正道だ」 — 田中VPoE


まとめ

ポイント内容
ベクトル検索の限界固有名詞や型番に弱い。キーワード検索で補完
BM25キーワード検索の標準アルゴリズム。TF-IDFベース
ハイブリッド検索ベクトル検索 + キーワード検索の組み合わせ
RRF順位ベースの結果統合手法。シンプルで効果的
重み調整クエリの特性に応じてベクトル/キーワードの比率を調整

チェックリスト

  • ベクトル検索とキーワード検索の強み・弱みを理解した
  • BM25の基本的な仕組みを理解した
  • RRFによる結果統合の計算方法を理解した
  • 重み付きハイブリッド検索の調整方法を理解した

次のステップへ

次は「メタデータフィルタリング」を学びます。メタデータを活用したプリフィルタ/ポストフィルタで、検索結果の精度をさらに向上させましょう。


推定読了時間: 30分