メインコンテンツまでスキップ

RRF Ranker

Reciprocal Rank Fusion (RRF) Ranker は、Zilliz Cloud の hybrid search 向けの reranking 戦略であり、生の類似度スコアではなくランキング位置に基づいて複数の vector 検索パスの結果をバランスさせます。個々の統計ではなく選手の順位を考慮するスポーツトーナメントのように、RRF Ranker は異なる検索パスで各アイテムがどれだけ上位にランクされているかに基づいて検索結果を結合し、公平でバランスの取れた最終ランキングを作成します。

RRF Ranker を使用する場面

RRF Ranker は、明示的な重要度の重みを割り当てることなく、複数の vector 検索パスからの結果をバランスさせたい hybrid search シナリオ向けに特化して設計されています。特に次のようなケースで効果的です。

ユースケースRRF Ranker が適している理由
同等の重要性を持つマルチモーダル検索画像とテキストの両方が同等に重要な画像-テキスト検索任意の重み付けを必要とせずに結果をバランスできるため
アンサンブル vector 検索異なる埋め込みモデルからの結果を組み合わせる特定のモデルのスコア分布を優遇することなく、ランキングを民主的に統合するため
クロスリンガル検索複数言語にまたがってドキュメントを見つける言語固有の埋め込み特性に関係なく、公平に結果をランク付けするため
専門家による推薦複数の専門家システムからの推薦を組み合わせる異なるシステムが比較不可能なスコアリング手法を使っている場合でも、コンセンサスランキングを作成できるため

明示的な重みを割り当てずに、複数の検索パスを民主的にバランスさせる必要がある hybrid search アプリケーションでは、RRF Ranker が理想的な選択です。

RRF Ranker の仕組み

RRFRanker 戦略の主なワークフローは次のとおりです。

  1. 検索ランキングの収集: 各 vector 検索パスからの結果のランキングを収集します(rank_1、rank_2)。

  2. ランキングの統合: 各パスからのランキング(rank_rrf_1、rank_rrf_2)を数式に従って変換します。

    計算式には N が含まれ、これは取得数を表します。ranki(d) は、i(th) 番目の retriever によって生成されたドキュメント d のランキング位置です。k は通常 60 に設定される平滑化パラメータです。

  3. ランキングの集約: 結合後のランキングに基づいて検索結果を再ランクし、最終結果を生成します。

M2SawupkSh2NZxbX7SAcwqZZnxd

RRF Ranker の例

この例では、sparse-dense vectors に対する Hybrid Search(topK=5)を示し、RRFRanker 戦略が 2 つの ANN 検索からの結果をどのように rerank するかを説明します。

  • テキストの sparse vector に対する ANN 検索の結果(topK=5):

    IDRank (sparse)
    1011
    2032
    1503
    1984
    1755
  • テキストの dense vector に対する ANN 検索の結果(topK=5):

    IDRank (dense)
    1981
    1012
    1103
    1754
    2505
  • RRF を使用して、2 つの検索結果セットのランキングを並べ替えます。平滑化パラメータ k は 60 に設定されているとします。

    IDScore (Sparse)Score (Dense)Final Score
    101121/(60+1)+1/(60+2) = 0.03252247
    198411/(60+4)+1/(60+1) = 0.03201844
    175541/(60+5)+1/(60+4) = 0.03100962
    2032N/A1/(60+2) = 0.01612903
    1503N/A1/(60+3) = 0.01587302
    110N/A31/(60+3) = 0.01587302
    250N/A51/(60+5) = 0.01538462
  • reranking 後の最終結果(topK=5):

    RankIDFinal Score
    11010.03252247
    21980.03201844
    31750.03100962
    42030.01612903
    51500.01587302
    51100.01587302

RRF Ranker の使用方法

RRF reranking 戦略を使用する際は、パラメータ k を設定する必要があります。これは平滑化パラメータであり、全文検索と vector 検索の相対的な重みを効果的に変更できます。このパラメータのデフォルト値は 60 で、(0, 16384) の範囲内で調整できます。値は浮動小数点数である必要があります。推奨値は [10, 100] の範囲です。k=60 は一般的な選択ですが、最適な k の値はアプリケーションやデータセットによって異なる場合があります。最適なパフォーマンスを得るために、具体的なユースケースに基づいてこのパラメータをテストおよび調整することを推奨します。

RRF Ranker を作成する

collection が複数の vector field でセットアップされたら、適切な平滑化パラメータを指定して RRF Ranker を作成します。

python
from pymilvus import Function, FunctionType

rerank = Function(
name="rrf",
input_field_names=[], # Must be an empty list
function_type=FunctionType.RERANK,
params={
"reranker": "rrf",
"k": 100 # Optional
}
)
ParameterRequired?DescriptionValue/Example
nameYesこの Function の一意の識別子"rrf"
input_field_namesYesFunction を適用する vector field のリスト(RRF Ranker の場合は空である必要があります)[]
function_typeYes呼び出す Function のタイプ。reranking 戦略を指定するには RERANK を使用しますFunctionType.RERANK
params.rerankerYes使用する reranking メソッドを指定します。
RRF Ranker を使用するには rrf に設定する必要があります。
"weighted"
params.kNoドキュメント順位の影響を制御する平滑化パラメータ。k が大きいほど上位順位への感度が低くなります。範囲: (0, 16384)、デフォルト: 60
詳細は RRF Ranker の仕組み を参照してください。
100

RRF Ranker は、複数の vector field を組み合わせる hybrid search 操作向けに特別に設計されています。hybrid search での使用方法は次のとおりです。

python
from pymilvus import MilvusClient, AnnSearchRequest

# Connect to Milvus server
milvus_client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

# Assume you have a collection setup

# Define text vector search request
text_search = AnnSearchRequest(
data=["modern dining table"],
anns_field="text_vector",
param={},
limit=10
)

# Define image vector search request
image_search = AnnSearchRequest(
data=[image_embedding], # Image embedding vector
anns_field="image_vector",
param={},
limit=10
)

# Apply RRF Ranker to product hybrid search
# The smoothing parameter k controls the balance
hybrid_results = milvus_client.hybrid_search(
collection_name,
[text_search, image_search], # Multiple search requests
ranker=rerank, # Apply the RRF ranker
limit=10,
output_fields=["product_name", "price", "category"]
)

hybrid search の詳細については、Multi-Vector Hybrid Search を参照してください。

Ctrl I