BM25全文検索アルゴリズムを理解する
(emschwartz.me)-
BM25アルゴリズムを理解する
- BM25は、Lucene/ElasticsearchやSQLiteなどでデフォルトで使われている、広く利用されている全文検索アルゴリズム。
- 近年では、全文検索とベクトル類似検索を組み合わせて「ハイブリッド検索」を実装するのが一般的。
- BM25スコアを複数のクエリ間で比較できるかという疑問から話が始まる。
-
文書のランキング
- 全文検索アルゴリズムの基本的な目標は、クエリに最も関連する文書を見つけること。
- BM25は、文書がクエリに関連している確率に基づいて文書を順位付けする。
-
BM25の構成要素
- クエリ語: 複数の語で構成されたクエリの場合、各語ごとに個別のスコアを計算して合算する。
- 逆文書頻度(IDF): 文書コレクション全体における特定の検索語の希少性を計算する。
- 文書内語頻度: 特定の文書で検索語が出現する頻度を計算する。
- 文書長の正規化: 文書の長さを他の文書と比較して正規化する。
-
BM25の数理的表現
- BM25アルゴリズムは数式上は複雑に見えるかもしれないが、各構成要素を理解すれば把握しやすい。
- 主な数式は、各クエリ語のスコアを合算して計算される。
-
BM25の独自性
- 確率を計算せずに確率に基づくランキングを行う: BM25は、確率的関連性フレームワークに基づいて文書を順位付けする。
- ほとんどの文書は関連しないと仮定する: BM25は、ほとんどの文書がクエリに関連しないと仮定することで、関連性情報がなくても有用に機能する。
-
結論
- BM25スコアは、同じコレクション内であればクエリ間で比較できる。
- BM25は文書の関連性そのものを推定するのではなく、クエリに対する関連性の順位付けに重点を置く。
- 同じコレクション内で同一文書のBM25スコアを比較できる。
-
追加の読み物
- BM25の理論と歴史をさらに知りたいなら、ElasticのエンジニアであるBritta Weberによる2016年の講演と、Stephen RobertsonおよびHugo Zaragozaによる"The Probabilistic Relevance Framework: BM25 and Beyond"がおすすめ。
まだコメントはありません。