Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home

$rerank

重要

$rerank集計ステージはプライベートプレビューにあります。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。したがって、本番環境でこの機能を使用することは推奨されません。詳しくは、「 プレビュー機能 」を参照してください。

$rerank

$rerankステージでは、Vorage AI の再ランク付けモデルを使用して入力ドキュメントの順序付けが行われ、クエリへの関連性で並べ替えられた同じドキュメントが返されます。 $rerankステージは集計パイプラインのどこにでも表示できます。$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ステージは、次のフィールドを持つドキュメントを取得します。

フィールド
タイプ
必要性
説明

query

オブジェクト

必須

再ランク付けに使用するクエリ。

query.
text

文字列

必須

再ランク付けに使用するクエリテキスト。例、以下のように指定できます。

  • 検索しているもの

  • ドキュメントのどのフィールドが最も関連性があるか

  • あいまいなクエリを明確にするための補完情報

path

String または複数の string の配列

必須

再ランク付けに使用するフィールドへのパス。 $rerank が中間ステージである場合は、前のステージの結果からフィールドを指定します。

注: $rerankで指定されたフィールドが存在しない場合、path クエリは失敗します。前の$match ステージを使用して欠落しているドキュメントをフィルタリングで除外するか、$set を使用して欠落しているフィールドを"" に設定します。

numDocsToRerank

Int

必須

再ランク付けおよび結果で返されるために投票AIに送信するドキュメントの最大数。ドキュメントは、パイプラインに定義されたドキュメント順序に基づいて選択されます。

最大値は 1000 以下である必要があります。

model

オブジェクト

必須

ドキュメントの再ランク付けに使用する投票AIモデル。値は次のいずれかになります。

  • rerank-2.5 - 指示に従い、多言語をサポートすることで品質に最適化された一般的なリランカー。

  • rerank-2.5-lite - 指示に従い、多言語をサポートすることで、レイテンシと品質の両方を最適化した一般的なリランカー。

  • rerank-2 - レガシー モデル。

  • rerank-2-lite - レガシー モデル。

次の例は、$rerank sample_mflix.embedded_moviesステージを使用して、Vyage AIリランクモデルに基づいて コレクション内のドキュメントを順序付けする方法を示しています。クエリは、$rerank $matchステージの後に を使用して、rerank-2.5 リランク モデルを使用してドキュメントを並べ替えます。次の集計パイプラインでは、 は次のようになります。

  • $match ステージでは、ドキュメントをフィルタリングして、plotフィールドが string 型のドキュメントのみを含めます。

  • $sort ステージでは、ドキュメントを releasedフィールドの降順でソートし、確実な順序付けを確保します。

  • $rerank ステージでは、rerank-2.5 リランク モデルを使用して、クエリに一致するようにドキュメントが並べ替えられます。

  • $addFields ステージはドキュメントに rerankScore という名前のフィールドを追加します。

1db.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
}
]

$rerank を使用する前に、$rerank との互換性、制限、動作、権限を検討してください。

$rerankステージはMongoDB 以降を実行中MongoDB Atlasでのみ使用できます。8.3

$rerankを使用する前に、 を通じてネイティブProject Settings 再ランク付けを有効にする必要があります。詳細については、「 プロジェクトのネイティブ 再ランク付けの有効化または無効化 」を参照してください。

次の場合、$rerank ステージは使用できません。

$rerankはパイプラインのどこにでも表示できます。ただし、$rerank $searchや のように、関連するドキュメントをすでにソート順で返すステージの後に$vectorSearch を使用することをお勧めします。

$rerank は再ランク付けされ、 ステージに渡される最初の numDocsToRerank ドキュメントを返します。 $rerank が最初のステージであるか、その前のステージで明確にソートされた結果が返されない場合、$rerank に使用されるドキュメントはクエリ間で変更される可能性があります。

$rerank は、 で指定されたフィールドのいずれかがpath 1 つ以上の入力ドキュメントに存在しない場合、エラーを返します。これを軽減するには、 ステージを使用して欠落しているフィールドを空の string$set に設定します。

query.textフィールドは、リランク モデルが各ドキュメントをスコア付けする方法を決定します。リランク は、指定された path にあるクエリテキストと各ドキュメントの内容の間で関連性スコアを計算します。ほとんどのユースケースでは、$rerank.query.text は先行する $search または $vectorSearch ステージのクエリと同じか類似している必要があります。

$rerank の使用状況をモニタリングするには、次のメトリクスを利用できます。

$rerankクエリ成功率メトリクスは、正常に完了した $rerank クエリの割合を追跡します。このメトリクスは、Atlas UIでクラスターの Metricsタブで表示できます。このメトリクスを使用して、レート制限エラーや 投票AIとの接続の問題など、$rerank クエリの失敗を識別します。

$rerank トークン使用状況メトリクスは、$rerank クエリが消費するトークンの合計数を追跡します。このメトリクスは、Atlas UIでクラスターの Metricsタブで表示できます。このメトリクスを使用して、トークンの消費量を監視し、使用量を請求と相関させます。

score変数と$meta 式を組み合わせて、$rerank ステージの結果内の各ドキュメントのスコアを取得します。

例: パイプラインへの Rerank スコアの追加
{
"$addFields": {
"rerankScore": { "$meta": "score" }
}
}

$rerank ステージでは、$meta: "score" の値が新しいスコアに置き換えられます。 $$rankFusion のように先行するステージの値を保持するには、$rerank ステージの前の名前付きフィールドにスコアをプロジェクトします。

例: 前のステージのスコアを保持する
{
"$addFields": {
"originalRankFusionScore": { "$meta": "score" }
}
},
{
"$rerank": {
...
}
},
{
"$addFields": {
"rerankScore": { "$meta": "score" }
}
}

MongoDB は従量制の価格モデルを使用し、処理されたトークンの総数に基づいて使用量を請求します。次の式は、合計を計算します。

total number of processed tokens = (# of query tokens * numDocsToRerank) + sum(# of tokens across all documents )
モデル
Price per 1K tokens
Price per 1M tokens
無料トークン

rerank-2.5

$0.00005

$0.05

200,000,000

rerank-2.5-lite

$0.00002

$0.02

200,000,000

rerank-2

$0.00005

$0.05

rerank-2-lite

$0.00002

$0.02

$rerank ステージは、 Atlasプロジェクト内の他の投票AI操作とは別途課金されます。 Atlas UIの 請求および支払い インターフェースを通じて支払いと請求を管理できます。 Atlas UIでは、次の操作が可能です。

Atlas は、特定の時間枠内で実行できるリクエスト数に対して、1 分あたりのトークン(TPM)または 1 分あたりのリクエスト数(RPM)で測定されたレート制限を適用します。レート制限は階層化されたシステムに従い、上位階層では制限が大きくなります。

階層
説明

無料階層

支払い情報は必要ありません。

階層 1

支払い情報が必要です。レート制限は、無料階層の 2 倍です。

モデル
1 分あたりのリクエスト数(RPM)
1 分あたりのトークン数(TPM)

rerank-2.5

2,000

2,000,000

rerank-2.5-lite

2,000

4,000,000

rerank-2

2,000

2,000,000

rerank-2-lite

2,000

4,000,000

モデル
1 分あたりのリクエスト数(RPM)
1 分あたりのトークン数(TPM)

rerank-2.5

4,000

4,000,000

rerank-2.5-lite

4,000

8,000,000

rerank-2

4,000

4,000,000

rerank-2-lite

4,000

8,000,000

UsageAtlas UIの ページでトークン使用状況をモニタリングします。使用量は、1 分あたりのリクエスト数(RPM)とクラスターあたりの 1 分あたりのトークン数(TPM)によって制限されます。詳細については、「 使用階層とレート制限 」を参照してください。

Usage ページには、トークンの使用状況を監視および分析するためのいくつかのビューが用意されています。組織のモデル別に残りの無料トークンを表示するには、 [Free Usage]タブをクリックします。

Usage Activity[Total Usage タブ ]の []チャートには、一定期間プロジェクト全体で使用されたトークンの合計が表示されます。次のオプションを使用して、使用状況データをフィルタリングできます。

オプション
説明

Usage Period

特定の時間範囲の使用状況データを表示します。

Models

特定のVoyage AIモデルでフィルターで絞り込みます。

より詳細なレベルでトークンの使用状況を監視する方法については、「 トークンの使用状況の監視 」を参照してください。

組織レベルでリソースポリシーを設定して、$rerank を完全にブロックすることも、例外を除くこともできます。そのためには、forbid $rerankアクションを対象とする Cedar に記述された ルールを追加します。このポリシーを構成すると、新しいプロジェクトで$rerank を有効にできなくなります。ただし、すでに有効になっているプロジェクトが無効になることはありません。 は、すでに有効になっているプロジェクトに対して個別に無効にする必要があります。プロジェクトの を無効にするには、「$rerank $rerankプロジェクトのネイティブ 再ランク付けの有効化または無効化 」を参照してください。

forbid ルールで unless 句を使用することで、例外的に $rerank を無効にすることができます。

例: 例外を使用して $rerank を無効にする
forbid (principal, action == ResourcePolicy::Action::"$rerank", resource)
unless { <exception> };

リソースポリシーの設定の詳細については、「 Atlas リソース ポリシー 」を参照してください。

Atlas UIでは、次のタスクを実行できます。

項目一覧