メインコンテンツまでスキップ
バージョン: User Guides (BYOC)

RRF ランカー

相互順位融合(RRF)ランカーは、Zilliz Cloudハイブリッド検索のためのリランキング戦略であり、複数のベクトル検索パスからの結果を生の類似度スコアではなく順位位置に基づいてバランスさせます。選手のランキングではなく個々の統計に基づくスポーツトーナメントのように、RRF ランカーは検索結果を異なる検索パスで各アイテムがどれほど高くランクされているかに基づいて結合し、公平でバランスの取れた最終ランキングを作成します。

RRF ランカーの使用タイミング

RRF ランカーは、明示的な重要度の重みを割り当てることなく複数のベクトル検索パスからの結果をバランスさせるハイブリッド検索シナリオに特化して設計されています。特に効果的なのは:

使用ケース

なぜRRF ランカーがうまく機能するのか

同等の重要度を持つマルチモーダル検索

両方のモダリティが同等に重要である画像-テキスト検索

任意の重み付けなしで結果をバランスさせる

アンサンブルベクトル検索

異なる埋め込みモデルからの結果を結合

特定のモデルのスコアリング分布を favors することなく、民主的にランキングをマージする

クロスリンガル検索

複数言語にわたるドキュメント検索

言語固有の埋め込み特性に関係なく公平に結果をランク付けする

専門家推奨

複数の専門家システムからの推奨を結合

比較できないスコアリング方法を使用する異なるシステムのコンセンサスランキングを作成する

ハイブリッド検索アプリケーションで明示的な重み付けなしに複数の検索パスを民主的にバランスさせたい場合、RRF ランカーが理想的な選択です。

RRF ランカーのメカニズム

RRFRanker戦略の主なワークフローは以下の通りです:

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

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

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

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

M2SawupkSh2NZxbX7SAcwqZZnxd

RRF ランカーの例

この例では、スパース・デンスベクトルのハイブリッド検索(topK=5)を示し、RRFRanker戦略が2つのANN検索からの結果をどのようにリランキングするかを説明しています。

  • テキストのスパースベクトルに対するANN検索の結果(topK=5):

    ID

    ランク(スパース)

    101

    1

    203

    2

    150

    3

    198

    4

    175

    5

  • テキストのデンスベクトルに対するANN検索の結果(topK=5):

    ID

    ランク(デンス)

    198

    1

    101

    2

    110

    3

    175

    4

    250

    5

  • RRFを使用して2つの検索結果セットのランキングを並べ替えます。平滑化パラメータ「k」は60に設定されていると仮定します。

    ID

    スコア(スパース)

    スコア(デンス)

    最終スコア

    101

    1

    2

    1/(60+1)+1/(60+2) = 0.01639

    198

    4

    1

    1/(60+4)+1/(60+1) = 0.01593

    175

    5

    4

    1/(60+5)+1/(60+4) = 0.01554

    203

    2

    N/A

    1/(60+2) = 0.01613

    150

    3

    N/A

    1/(60+3) = 0.01587

    110

    N/A

    3

    1/(60+3) = 0.01587

    250

    N/A

    5

    1/(60+5) = 0.01554

  • リランキング後の最終結果(topK=5):

    ランク

    ID

    最終スコア

    1

    101

    0.01639

    2

    203

    0.01613

    3

    198

    0.01593

    4

    150

    0.01587

    5

    110

    0.01587

RRF ランカーの使用法

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

RRF ランカーの作成

コレクションが複数のベクトルフィールドでセットアップされた後、適切な平滑化パラメータでRRF ランカーを作成します:

from pymilvus import Function, FunctionType

ranker = Function(
name="rrf",
input_field_names=[], # 空のリストでなければならない
function_type=FunctionType.RERANK,
params={
"reranker": "rrf",
"k": 100 # オプション
}
)

パラメータ

必須?

説明

値/例

name

はい

この関数の固有識別子

"rrf"

input_field_names

はい

関数を適用するベクトルフィールドのリスト(RRF ランカーでは空リストでなければならない)

[]

function_type

はい

呼び出す関数のタイプ;リランキング戦略を指定するにはRERANKを使用する

FunctionType.RERANK

params.reranker

はい

使用するリランキング方法を指定する。rrfに設定してRRF ランカーを使用しなければならない。

"weighted"

params.k

いいえ

文書ランクの影響を制御する平滑化パラメータ;高いkはトップランクの感度を低下させる。範囲:(0、16384);デフォルト:60
詳細については、RRF ランカーのメカニズムを参照してください。

100

RRF ランカーは、複数のベクトルフィールドを組み合わせるハイブリッド検索操作のために特に設計されています。以下はハイブリッド検索で使用する方法です:

from pymilvus import MilvusClient, AnnSearchRequest

# Milvusサーバーに接続
milvus_client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

# コレクションセットアップがあると仮定

# テキストベクトル検索要求を定義
text_search = AnnSearchRequest(
data=["modern dining table"],
anns_field="text_vector",
param={},
limit=10
)

# 画像ベクトル検索要求を定義
image_search = AnnSearchRequest(
data=[image_embedding], # 画像埋め込みベクトル
anns_field="image_vector",
param={},
limit=10
)

# RRF ランカーを商品ハイブリッド検索に適用
# 平滑化パラメータkはバランスを制御する
hybrid_results = milvus_client.hybrid_search(
collection_name,
[text_search, image_search], # 複数の検索要求
ranker=ranker, # RRF ランカーを適用
limit=10,
output_fields=["product_name", "price", "category"]
)

ハイブリッド検索の詳細については、マルチベクトルハイブリッド検索を参照してください。