BM25は、キーワード検索で文書の関連度をスコア化し、上位から順に並べる——ランキング関数の定番です。検索語と文書中の語句の一致を手がかりに探す基本方式(TF-0236)の中核を担います。本記事は数式の係数暗記ではなく、「なぜRAGでもまだキーワード検索が生きるか」——検索方式の地図——に焦点を当てます。
キーワード検索の基本
キーワード検索は、ユーザーが入力した検索語と、文書中の語句の一致を手がかりに情報を探す方法です(TF-0236)。
キーワード検索は、検索語と文書中の語句の一致を手がかりに情報を探す方法である。
一致した文書をどう並べるか——ランキング——が検索品質の鍵です。BM25はその順位づけに広く使われる関数の一つで、古典的なTF-IDFを発展させた系譜に位置づけられます(G-333)。
BM25の考え方
試験向けに、BM25が何をしているかを直感で押さえます。
- 語の出現 — 検索語が文書に何回出るか(ただし出すぎると効きが鈍る調整あり)
- 希少性 — コーパス全体でめずらしい語の一致ほど加点されやすい(TF-IDFと同型の発想)
- 文書長 — 異常に長い文書が有利になりすぎないよう長さを補正
- 出力 — 文書ごとに関連度スコア。高い順に検索結果を返す
名前の Best Matching 25 は、確率論的ランキング関数の系譜(Okapi BM25など)に由来します。試験では「BM25=検索語を無視する」などの誤答に注意(TF-0237は×)。
検索方式のスペクトル
| 方式 | マッチの基準 | 得意・苦手 |
|---|---|---|
| BM25 | 語の一致・出現統計 | 型番・固有名詞に強い。言い換えに弱い |
| TF-IDF | 語頻度×逆文書頻度 | BM25の祖先。特徴量・検索の基礎(G-333) |
| ベクトル検索 | 埋め込みの意味的類似 | 言い換えに強い。短いクエリで外しやすいことも |
| セマンティック検索 | 意味的類似(概念) | 実装はベクトル検索が多い |
TF-0236の解説にあるように、埋め込み検索とは異なり、意味が近くても表現が違う場合に見つけにくい——がキーワード検索の典型的な弱点です。逆に、製品コードの完全一致ではBM25が依然として有効です。
RAGでの使われ方
RAGの検索段階では、ベクトル検索だけでなくBM25によるキーワード検索を併用する——ハイブリッド検索——が実務でよく採用されます。
- BM25 — 固有名詞・専門用語・型番を拾いやすい
- ベクトル検索 — 言い換え質問・概念検索に強い
- 統合 — 両方の上位結果をマージしてLLMに渡す
BM25はRAGそのものではありません。RAGは検索+生成の全体設計であり、BM25は検索レイヤーの部品の一つです(TF-174)。
試験で押さえるポイント
- 定義 — キーワード検索で使うランキング関数
- 原理 — 検索語と文書中の語句一致+出現統計(TF-0236)
- 対比 — ベクトル/セマンティック検索=意味的類似。BM25=語の一致
- RAG — 検索部品の一つ。RAG全体ではない
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| BM25=RAG | ランキング関数 vs 検索拡張生成全体 |
| BM25=ベクトルDB | スコア計算 vs 格納・検索基盤 |
| BM25=埋め込みモデル | 語の一致 vs ベクトル化モデル |
| キーワード検索=検索語を無視 | 一致を手がかりにする(TF-0237は×) |
| BM25=LLM | 検索の順位づけ vs 言語生成モデル |
よくある質問
BM25は何をする手法ですか?
ユーザーの検索語と文書中の語句の一致を手がかりに、各文書への関連度スコアを計算して順位づけするキーワード検索のランキング関数です。語の出現頻度や文書長などを考慮し、関連しそうな文書を上位に並べます。
BM25とベクトル検索の違いは?
BM25は語の一致に基づくキーワード検索の代表です。ベクトル検索は埋め込みの意味的類似度で探します。BM25は型番の完全一致に強く、言い換えには弱い一方、ベクトル検索は言い換えに強いが固有名詞で外すこともあります。RAGでは両方を併用するハイブリッド検索も多いです。
BM25はRAGそのものですか?
いいえ。BM25は検索段階で使うランキング手法の一つです。RAGは検索した結果をLLMの生成に渡す全体アーキテクチャであり、BM25はその検索レイヤーの選択肢の一つに過ぎません。