BM25とは

BM25とは、検索キーワードと文書の関連度を点数化するランキング関数で、全文検索の分野で長く標準として使われてきた仕組みです。名前のBMはBest Matching(最良の一致)の略。生成AIの時代になっても、検索の現場から消えていません。

英語表記:Okapi BM25

点数の付け方は「頻度・珍しさ・長さ補正」

BM25の点数は主に3つの要素で決まります。語が文書に何回出るか(出現頻度)、その語がどれだけ珍しいか(珍しい語ほど高得点)、そして文書の長さの補正です。特徴は「飽和」という考え方で、同じ語が何十回出ても点数は頭打ちになるよう設計されています。履歴書に同じ自己PRを100回書いても評価が100倍にはならない、そんな感覚に近いでしょう。土台になったのは1970〜80年代の確率的な検索理論で、ChatGPT公開(2022年11月30日)の四半世紀以上前から磨かれてきました。

生成AI時代も「片翼」として現役

では、なぜ古い手法が生き残っているのか。RAG(検索拡張生成)の検索部分では、意味で探すベクトル検索と、語の一致で探すBM25を組み合わせるハイブリッド検索がよく使われます。型番・人名・略語のような「言い換えのきかない語」を確実に拾えるのがBM25側の強みです。Anthropicが2024年9月に発表した検索改善手法Contextual Retrievalでも、埋め込みと並んでBM25を使う構成が示されました。Elasticsearchをはじめとする検索エンジンにも標準的に組み込まれています。新しい技術だけが答えではない。そのことを示す代表例といえるでしょう。

Topic名前に残っているのは、1990年代の大学の検索システム

フルネームはOkapi BM25です。Okapiは考案者の名前でも数式でもなく、1980〜90年代に英ロンドンのシティ大学で動いていた検索システムの名前で、このシステムへ最初に実装されたことが呼び名として残りました。数十年前の大学システムの名が、2020年代の生成AI検索の議論で日常的に飛び交っているわけです。

BM25に関するよくある質問

BM25は無料で使えますか?
アルゴリズム自体は公開された計算式で、特定企業の有料製品ではありません。Elasticsearchをはじめ広く使われる検索エンジンに組み込まれており、追加費用なしで使えるのが普通です。
k1やbという記号を見かけますが何ですか?
挙動を調整する2つのパラメータです。k1は同じ語の繰り返しをどこまで評価するか(飽和の強さ)、bは文書の長さによる補正の強さを決めます。Elasticsearchでは既定値としてk1=1.2、b=0.75が使われています。
TF-IDFとは何が違いますか?
どちらも語の頻度と珍しさを使いますが、BM25は同じ語の繰り返しに対して点数が頭打ちになる飽和の仕組みと、文書の長さ補正を組み込んでいる点が主な違いです。

あわせて読みたい記事