重要
$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.text | 文字列 | 必須 | 再ランク付けに使用するクエリテキスト。例、以下のように指定できます。
|
| String または複数の string の配列 | 必須 | |
| Int | 必須 | 再ランク付けおよび結果で返されるために投票AIに送信するドキュメントの最大数。ドキュメントは、パイプラインに定義されたドキュメント順序に基づいて選択されます。 最大値は |
| オブジェクト | 必須 |
例
次の例は、$rerank sample_mflix.embedded_moviesステージを使用して、Vyage AIリランクモデルに基づいて コレクション内のドキュメントを順序付けする方法を示しています。クエリは、$rerank $matchステージの後に を使用して、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 } ]
Considerations
$rerank を使用する前に、$rerank との互換性、制限、動作、権限を検討してください。
互換性
$rerankステージはMongoDB 以降を実行中MongoDB Atlasでのみ使用できます。8.3
$rerankを使用する前に、 を通じてネイティブProject Settings 再ランク付けを有効にする必要があります。詳細については、「 プロジェクトのネイティブ 再ランク付けの有効化または無効化 」を参照してください。
制限
次の場合、$rerank ステージは使用できません。
$rankFusion$scoreFusionまたは 入力パイプライン内。
動作
$rerankはパイプラインのどこにでも表示できます。ただし、$rerank $searchや のように、関連するドキュメントをすでにソート順で返すステージの後に$vectorSearch を使用することをお勧めします。
$rerank は再ランク付けされ、 ステージに渡される最初の numDocsToRerank ドキュメントを返します。 $rerank が最初のステージであるか、その前のステージで明確にソートされた結果が返されない場合、$rerank に使用されるドキュメントはクエリ間で変更される可能性があります。
$rerank は、 で指定されたフィールドのいずれかがpath 1 つ以上の入力ドキュメントに存在しない場合、エラーを返します。これを軽減するには、 ステージを使用して欠落しているフィールドを空の string$set に設定します。
クエリ
query.textフィールドは、リランク モデルが各ドキュメントをスコア付けする方法を決定します。リランク は、指定された path にあるクエリテキストと各ドキュメントの内容の間で関連性スコアを計算します。ほとんどのユースケースでは、$rerank.query.text は先行する $search または $vectorSearch ステージのクエリと同じか類似している必要があります。
メトリクス
$rerank の使用状況をモニタリングするには、次のメトリクスを利用できます。
$rerank クエリ ステータス レート
$rerankクエリ成功率メトリクスは、正常に完了した $rerank クエリの割合を追跡します。このメトリクスは、Atlas UIでクラスターの Metricsタブで表示できます。このメトリクスを使用して、レート制限エラーや 投票AIとの接続の問題など、$rerank クエリの失敗を識別します。
$rerank トークン使用率
$rerank トークン使用状況メトリクスは、$rerank クエリが消費するトークンの合計数を追跡します。このメトリクスは、Atlas UIでクラスターの Metricsタブで表示できます。このメトリクスを使用して、トークンの消費量を監視し、使用量を請求と相関させます。
スコアリング
score変数と$meta 式を組み合わせて、$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 | 無料トークン |
|---|---|---|---|
| $0.00005 | $0.05 | 200,000,000 |
| $0.00002 | $0.02 | 200,000,000 |
| $0.00005 | $0.05 | |
| $0.00002 | $0.02 |
$rerank ステージは、 Atlasプロジェクト内の他の投票AI操作とは別途課金されます。 Atlas UIの 請求および支払い インターフェースを通じて支払いと請求を管理できます。 Atlas UIでは、次の操作が可能です。
Usageページでトークンの使用状況を追跡します。詳細については、「 トークンの使用状況の監視 」を参照してください。
現在の月額コストはInvoices ページで表示されます。詳細については「 請求書の管理 」を参照してください。
使用階層とレート制限
Atlas は、特定の時間枠内で実行できるリクエスト数に対して、1 分あたりのトークン(TPM)または 1 分あたりのリクエスト数(RPM)で測定されたレート制限を適用します。レート制限は階層化されたシステムに従い、上位階層では制限が大きくなります。
階層 | 説明 |
|---|---|
無料階層 | 支払い情報は必要ありません。 |
階層 1 | 支払い情報が必要です。レート制限は、無料階層の 2 倍です。 |
モデル | 1 分あたりのリクエスト数(RPM) | 1 分あたりのトークン数(TPM) |
|---|---|---|
| 2,000 | 2,000,000 |
| 2,000 | 4,000,000 |
| 2,000 | 2,000,000 |
| 2,000 | 4,000,000 |
モデル | 1 分あたりのリクエスト数(RPM) | 1 分あたりのトークン数(TPM) |
|---|---|---|
| 4,000 | 4,000,000 |
| 4,000 | 8,000,000 |
| 4,000 | 4,000,000 |
| 4,000 | 8,000,000 |
Token Usage
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 を無効にすることができます。
forbid (principal, action == ResourcePolicy::Action::"$rerank", resource) unless { <exception> };
リソースポリシーの設定の詳細については、「 Atlas リソース ポリシー 」を参照してください。
手順
Atlas UIでは、次のタスクを実行できます。
$rerank ステージを使用する前に、プロジェクトの再ランク付けを有効にする 必要があります。再ランク付けを有効にするには、次の操作を行う必要があります。
再ランク付けを有効または無効にします。
再ランク付けを有効にするには、次の手順を実行します。
Project Settingsタブで、Native Reranking: $rerank in the Aggregation Pipeline トグルを On に設定します。
Confirm Rerank Model Usageウィンドウで、チェックボックスをオンにして、
$rerankステージの使用に関連するコストを理解していることを確認し、Confirm をクリックします。
再ランク付けを無効にするには、次の手順を実行します。
Project Settingsタブで、Native Reranking: $rerank in the Aggregation Pipeline トグルを Off に設定します。
Disable Native Reranking 確認ウィンドウで、「
Disable」と入力し、Disable をクリックします。再ランク付けを無効にすると、
$rerankステージを使用するクエリの実行中が失敗する可能性があります。
Atlas UIの Usage ページでトークン使用状況をモニタリングします。使用状況を表示するには:
UsageNative Rerankingナビゲーション バーの の下の をクリックします。
Usageページには、トークンの使用状況を監視および分析するためのいくつかのビューが用意されています。詳細については、「 トークンの使用 」を参照してください。