RRF

アールアールエフ

RRF

RRF(Reciprocal Rank Fusion)とは、複数の検索手法が返すランキング結果を統合するスコアリング手法である。各手法での順位の逆数を合算することで、異なるスコア体系を正規化なしに融合できる。

ハイブリッド検索の要

RAG パイプラインでは、BM25 によるキーワード検索とベクトル検索(セマンティック検索)を併用するハイブリッド構成が一般的だ。しかし、BM25 のスコアとコサイン類似度はスケールも分布もまったく異なるため、単純に足し合わせても意味のある統合にはならない。

RRF はこの問題をシンプルに解決する。各検索手法が返した文書の「順位」だけを使い、1 / (k + rank) のスコアを全手法分合算する。定数 k(通常 60)は順位の重みづけを調整するパラメータで、値が大きいほど上位と下位の差が縮まる。

計算例

ある文書が BM25 で3位、ベクトル検索で7位に出現した場合:

RRF スコア = 1/(60+3) + 1/(60+7) = 0.0159 + 0.0149 = 0.0308

片方の検索でしかヒットしない文書よりも、両方でそこそこの順位に入る文書が上位にくる傾向がある。これがハイブリッド検索の安定性につながる。

実装上の注意点

RRF は元のスコアの絶対値を使わないため、検索エンジン間のスコア校正が不要という利点がある一方、同順位の文書が多い場合やロングテールの文書の扱いには注意が要る。Elasticsearch 8.x 以降や Weaviate、Qdrant など主要なベクトル DB がネイティブで RRF をサポートしている。