$rerank$rerankステージでは、Vorage AI の再ランク付けモデルを使用して入力ドキュメントの順序付けが行われ、クエリへの関連性で並べ替えられた同じドキュメントが返されます。$rerankステージは集計パイプラインのどこにでも表示できます。 MongoDB、$rerank$vectorSearch$search、 、$rankFusion、または$scoreFusionステージの後に を使用することを推奨します。
構文
$rerankパイプラインステージの構文は 次のとおり です。
{ "$rerank": { "query": { "text": "<query-text>" }, "path": "<text-field-name>", "numDocsToRerank": <number-of-documents-to-rerank>, "model": "<reranker-model>" } }
フィールド
$rerankステージは、次のフィールドを持つドキュメントを取得します。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| オブジェクト | 必須 | 再ランク付けに使用するクエリ。 |
| 文字列 | 必須 | 再ランク付けに使用するクエリテキスト。例、以下のように指定できます。
|
| 文字列または複数の文字列の配列 | 必須 | |
| Int | 必須 | 再ランク付けおよび結果で返されるために投票AIに送信するドキュメントの最大数。ドキュメントは、パイプラインに定義されたドキュメント順序に基づいて選択されます。 最大値は |
| オブジェクト | 必須 | Voyage AI モデルを、ドキュメントを再ランク付けするために使用します。値は次のいずれかになります。
|
Considerations
$rerank を使用する前に、要件、制限、$rerank の動作を確認してください。
要件
$rerank を使用するには次の手順に従います。
Atlas UI Cluster Builder ページで Latest version with auto-upgrades を選択して、クラスターがMongoDB 8.3 以降を実行中いることを確認します。
を通じてネイティブProject Settings 再ランク付けを有効にします。詳細については、「 ネイティブ 再ランク付けの有効化または無効化 」を参照してください。
制限
次の場合、$rerank ステージは使用できません。
自己管理型または Atlas ローカル配置の場合。
$rankFusion$scoreFusionまたは 入力パイプラインの場合。ビューにMongoDB Search またはMongoDB ベクトル検索インデックスがある場合は、ビューではなくソースコレクションで
.aggregate()を実行中てインデックスをクエリします。
動作
$rerankはパイプラインのどこにでも表示できます。ただし、 MongoDB、$rerank $searchや のように、関連するドキュメントをすでにソート順で返すステージの後に$vectorSearch を使用することを推奨しています。
$rerank は再ランク付けされ、 ステージに渡される最初の numDocsToRerank ドキュメントを返します。$rerank が最初のステージであるか、その前のステージで明確にソートされた結果が返されない場合、$rerank に使用されるドキュメントはクエリ間で変更される可能性があります。
$rerank は、path で指定されたフィールドのいずれかが 1 つ以上の入力ドキュメントに存在しない場合、エラーを返します。これを軽減するには、次の を使用します。
クエリ
query.textフィールドは、リランク モデルが各ドキュメントをスコア付けする方法を決定します。指定された投票リランカー モデルは、指定された pathのクエリテキストと各ドキュメントの内容との間の関連性スコアを計算します。ほとんどのユースケースでは、 を、前の ステージまたは$rerank.query.text $search$vectorSearchステージのクエリと同じか類似したテキストに設定します。
スコアリング
score 変数と $meta 式を組み合わせて、$rerank ステージの結果内の各ドキュメントのスコアを取得します。
{ "$addFields": { "rerankScore": { "$meta": "score" } } }
$rerank ステージでは、$meta: "score" の値が新しいスコアに置き換えられます。$rankFusion のように先行するステージの値を保持するには、$rerank ステージの前の名前付きフィールドにスコアをプロジェクトします。
{ "$addFields": { "originalRankFusionScore": { "$meta": "score" } } }, { "$rerank": { ... } }, { "$addFields": { "rerankScore": { "$meta": "score" } } }
パフォーマンスと精度
$rerank$rerankステージは、再ランク付けするフィールドなどの入力のサイズ、再ランク付けするドキュメントの数、クエリテキストによっては、計算コストが高くなる可能性があります。 はクエリ時にクエリとドキュメントを一緒に処理します。したがって、 は、$rerank $searchや のインデックスなどのインデックスを使用した関連性検索よりも遅くなる可能性があります。精度とパフォーマンスのバランスを取るには、$vectorSearch と を設定して入力サイズを制限します。numDocsToRerank path$rerankは、Atlas クラスター リソースで投票AI再ランク付けモデルを実行しません。
$rerank は、RAG やエージェントAIアプリケーションなど、超過低レイテンシよりも検索品質が優先されるワークロードに最適です。 MongoDB、$search$vectorSearch
例
次の例は、$rerank ステージを使用して、Vyage AIリランクモデルに基づいて sample_mflix.embedded_moviesコレクション内のドキュメントを順序付けする方法を示しています。クエリは、$matchステージの後に $rerank を使用して、rerank-2.5 リランク モデルを使用してドキュメントを並べ替えます。次の集計パイプラインでは、 は次のようになります。
$matchステージでは、ドキュメントをフィルタリングして、plotフィールドが string 型のドキュメントのみを含めます。$sortステージでは、ドキュメントをreleasedフィールドの降順でソートし、確実な順序付けを確保します。$rerankステージでは、rerank-2.5リランク モデルを使用して、クエリに一致するようにドキュメントが並べ替えられます。$addFieldsステージはドキュメントにrerankScoreという名前のフィールドを追加します。
1 db.embedded_movies.aggregate([ 2 { 3 "$match": { 4 "plot": { "$exists": true, "$type": "string" } 5 } 6 }, 7 { 8 "$sort": { "released": -1 } 9 }, 10 { 11 "$rerank": { 12 "model": "rerank-2.5", 13 "query": { 14 "text": "a group of heroes band together to stop a powerful enemy and save the world" 15 }, 16 "numDocsToRerank": 100, 17 "path": ["title", "plot"] 18 } 19 }, 20 { 21 "$addFields": { 22 "rerankScore": { "$meta": "score" } 23 } 24 }, 25 { "$limit": 10 }, 26 { 27 "$project": { 28 "_id": 0, 29 "title": 1, 30 "plot": 1, 31 "rerankScore": 1 32 } 33 } 34 ])
[ { plot: 'No treason, no surrender.', title: 'Ti mene nosis', rerankScore: 0.5986876487731934 }, { plot: 'The life of the greatest karate master of a generation.', title: 'The Real Miyagi', rerankScore: 0.5986876487731934 }, { plot: 'A shy genius is employed by his former university to design robot software.', title: 'Eva', rerankScore: 0.5986876487731934 }, { plot: 'The owners of a failing security company start robbing houses to boost business.', title: 'Armed Response', rerankScore: 0.5986876487731934 }, { plot: 'A live telecast of the beloved J. M. Barrie story.', title: 'Peter Pan Live!', rerankScore: 0.5986876487731934 }, { plot: "A French police magistrate spends years trying to take down one of the country's most powerful drug rings.", title: 'The Connection', rerankScore: 0.5986876487731934 }, { plot: 'A documentary that follows undercover activists trying to stave off a man-made mass extinction.', title: 'Racing Extinction', rerankScore: 0.5986876487731934 }, { plot: 'An ex-hitman comes out of retirement to track down the gangsters that took everything from him.', title: 'John Wick', rerankScore: 0.5986876487731934 }, { plot: 'A former hit-man for a drug cartel becomes a vigilante to pay for his sins and find redemption.', title: 'Redeemer', rerankScore: 0.5986876487731934 }, { plot: 'Charles Ingvar Jènsson gathers three criminals to take vengeance upon the people who killed his uncle.', title: 'The Master Plan', rerankScore: 0.5986876487731934 } ]