AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

MongoDB ベクトル検索 の自動埋め込み用に mongot を構成する

重要

自動埋め込みは自己管理型 mongot のプレビューです。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳細については、「プレビュー機能」を参照してください。

このチュートリアルでは、自己管理型 mongot 配置で自動型埋め込みを構成する方法を説明します。自動型埋め込みを使用すると、mongot はインデックス時にテキストデータのベクトル埋め込みを生成し、クエリ時にクエリテキストのベクトル埋め込みを生成します。アプリケーションで別の埋め込みパイプラインを維持する必要はありません。

このチュートリアルは、セマンティック検索または RAG 機能を構築しており、埋め込みを管理するために mongot を必要とする開発者向けです。Kubernetes 演算子の MongoDB コントローラーの配置については、自動埋め込みを参照してください。

自動埋め込みを使用しない場合、アプリケーションは次のことを行います。

  1. 挿入または更新する各ドキュメントの埋め込みを生成します。

  2. この埋め込みをコレクション内のドキュメントと一緒に保存します。

  3. クエリ時に同じモデルを使用して、すべてのクエリの埋め込みを生成します。

  4. クエリ埋め込みを $vectorSearch に提出します。

自動型埋め込みでは、mongot がステップ 1、2、3 を取り扱います。アプリケーション:

  1. テキスト フィールドの autoEmbed フィールド タイプを使用して MongoDB ベクトル検索インデックスを構成します。

  2. ドキュメントを通常に挿入および更新します。

    mongot テキスト フィールドを読み取り、構成された埋め込みモデルを介して埋め込みを生成して保存します。

  3. 事前計算された埋め込みではなく、クエリ テキストで $vectorSearch クエリを発行します。

    mongot クエリテキストの埋め込みを生成します。

自己管理型 mongot 自動埋め込みは、Voyage AI 埋め込みモデルと統合されています。

モデル
説明

voyage-4

推奨。一般的なテキスト検索のバランスの取れたパフォーマンス。

voyage-4-lite

大規模でコストに敏感なアプリケーション。

voyage-4-large

複雑なセマンティック関係の最大精度。

voyage-code-3

コード検索と技術ドキュメントに特殊化されています。

埋め込み生成にはコストが発生します。詳しくは、自動埋め込みの請求を管理する を参照してください。

Automated 埋め込みを使用するには、以下の前提条件を満たしている必要があります:

  • mongot 自己管理型配置(Community tarballまたはコンテナ、ローカル開発、およびKubernetes Operatorを通じたエンタープライズ版)における1.70.1以降。

  • スタンドアロン配置の場合は MongoDB 8.2 以降、Kubernetes 演算子 マネージド配置の場合は MongoDB 8.3 以降。詳細については、「mongot の互換性と要件」を参照してください。

  • 2 つの Voyage AI API キー。

    インデックス時の埋め込み生成用とクエリ時間用の 2 つの別々のキーを使用します。別々のキーにより、クエリワークロードがインデックスワークロードから分離され、独立したレート制限の計算が可能になります。詳細については、「レート制限」を参照してください。

  • mongot から埋め込みエンドポイントとなる接続されたデバイスへのアウトバウンド ネットワーク アクセス。

    デフォルトのエンドポイントは https://ai.mongodb.com/v1/embeddings です。このエンドポイントは、Atlas UI を使用して生成されたキーのために、MongoDB マネージド課金で Voyage AI のプロキシを実行します。Voyage AI から直接 API キーを生成した場合は、https://api.voyageai.com/v1/embeddings を使用して Voyage AI に直接アクセスすることもできます。

1

Voyage AI API キーは、次のいずれかの方法で生成できます。

  • (推奨)Atlas アカウントを使用します。Atlas は、組み込みのレート制限構成とともに API キーのマネジメントを提供します。キーは Atlas クラスターに結び付けられていません。詳しくは、「API キーの管理」を参照してください。

  • Voyage AI を通じて、voyageai.comで直接。

例えば mongot-prod-indexmongot-prod-query のように、2 つのキーを生成し、分かりやすい名前を付けます。キーを安全な秘密ストレージに保存します。

2

構成は配置パスによって異なります。配置のタブを選択します。

自動埋め込みには preview ローカル開発イメージ (mongodb/mongodb-atlas-local:preview) が必要です。preview イメージには、自動型埋め込み統合を含む mongot の Community ビルドがバンドルされています。

docker run を使用してコンテナを直接起動する場合は、VOYAGE_API_KEY 環境変数で Voyage AI API キーを渡し、:preview タグを使用します。

docker run \
-e VOYAGE_API_KEY=<your-voyage-api-key> \
-p 27017:27017 \
mongodb/mongodb-atlas-local:preview

Atlas を介さずに Voyage AI を通じて Voyage AI キーを直接発行した場合は、デフォルトのエンドポイントを上書きします。

docker run \
-e VOYAGE_API_KEY=<your-voyage-api-key> \
-e EMBEDDING_PROVIDER_ENDPOINT=https://api.voyageai.com/v1/embeddings \
-p 27017:27017 \
mongodb/mongodb-atlas-local:preview

注意

ローカル開発では、Voyage AI API キーを1つだけ受け入れ、インデックス作成時とクエリ実行時の両方の埋め込み生成に使用します。開発用としては、キーは1つで十分です。インデックス作成時とクエリ実行時のキーを個別に必要とする本番環境の配置では、Community Edition または Kubernetes Operator 配置パスを使用します。

embedding ブロックをmongot 構成ファイルに追加します。

embedding:
queryKeyFile: /etc/mongot/secrets/voyage-api-query-key
indexingKeyFile: /etc/mongot/secrets/voyage-api-indexing-key
providerEndpoint: https://ai.mongodb.com/v1/embeddings

各キー ファイルには、API キーが唯一のコンテンツとして含まれています。ファイルのパーミッションを 0600 に設定し、ファイルの所有者を mongot プロセスを実行するユーザーに設定します。

3

Voyage AI API キーで mongot を構成した後、autoEmbed フィールドタイプを使用する MongoDB ベクトル検索インデックスを定義します。インデックス定義には、mongot が埋め込むテキスト フィールドと使用するモデルが指定されます。また、インデックスの作成方法、量子化、その他のパラメータも指定されます。

db.movies.createSearchIndex(
"movie-semantic-index",
"vectorSearch",
{
"fields": [
{
"type": "autoEmbed",
"modality": "text",
"path": "plot",
"model": "voyage-4",
"numDimensions": 1024,
"similarity": "cosine",
"indexingMethod": "hnsw",
"hnswOptions": {
"maxEdges": 16,
"numEdgeCandidates": 50
},
"quantization": "scalar"
},
{
"type": "filter",
"path": "genre"
}
]
}
)

次の表では、autoEmbed インデックス定義フィールドを説明しています。

フィールド
目的

type: "autoEmbed"

フィールドを自動埋め込みの対象としてマークします。

modality: "text"

データ モダリティ。text は、サポートされている唯一のモダリティです。

path

埋め込むコレクションのフィールド。

model

Voyage AI モデル名。モデルは、API キーでアクセスできるものである必要があります。

numDimensions

埋め込みベクトルの次元数。モデルによって、サポートされる次元が決定されます。

similarity

ベクトル検索に使用する類似度関数。サポートされている関数は cosinedotProducteuclidean です。

indexingMethod

使用するインデックスの作成方法。サポートされている方法は flathnsw です。

hnswOptions

(任意) HNSWインデックスオプション。indexingMethodhnswの場合は必須です。

quantization

(任意)使用する量子化の種類。サポートされているタイプはfloatscalarbinarybinaryNoRescoreです。

同じインデックスで autoEmbed フィールドと filter フィールドを混合することができます。同じパス上の生のベクトルフィールドとautoEmbedを混合することはできません。フィールドごとに1つのアプローチを選択します。

4

事前計算された埋め込みではなく、クエリテキストを提出します。mongotがクエリ埋め込みを生成します。

db.movies.aggregate([
{
"$vectorSearch": {
"index": "movie-semantic-index",
"path": "plot",
"query": "a heist gone wrong in a rainy city",
"model": "voyage-4",
"numCandidates": 100,
"limit": 10
}
},
{
"$project": {
"_id": 0,
"title": 1,
"score": { $meta: "vectorSearchScore" }
}
}
])

To learn more, see Run Vector Search ANN and ENN Queries.

mongot クラスター上の専用の内部データベースに埋め込みを持続します。mongot は、ソース コレクションに埋め込みを保存しません。mongot は、ソース テキストから埋め込みを再生成できますが、埋め込み生成には料金が発生します。

埋め込みモデル、出力ディメンション、または量子化の変更は、影響を受けるインデックスの完全な再埋め込みをtriggerします。この場合、埋め込み生成に対する課金が発生します。「mongotが埋め込みを再生成するとき。」を参照してください。

詳細については、「生成された埋め込みコレクション」を参照してください。

mongot 次のいずれかが発生した場合、autoEmbed フィールドの埋め込みを再生成します。

  • ドキュメントを挿入します。

  • ドキュメントの埋め込みフィールドを変更します。mongot は、変更ストリームを介して変更を検出します。

  • インデックス定義で埋め込みモデルを変更します。

  • 埋め込み出力の次元またはデータ型を変更します。

  • テキストフィールドパスを変更します。

最後の3つの項目のいずれかを変更すると、mongotはインデックス全体をゼロから再構築します。再構築は大規模なコレクションにとっては高コストになる可能性があります。モデルの変更は慎重に計画します。

MongoDB では、モデル固有の料金で 100 万トークンごとに課金されます。インデックスの作成コストは、コレクション全体のインデックスフィールドの合計テキスト量に比例します。クエリコストは、クエリテキストの量に比例します。

Atlas アカウントを使用して作成した Voyage AI API キーを使用する場合は、Atlas UI で API キーの使用状況とレート制限を表示できます。詳しくは、Embedding and Reranking API の請求を管理するを参照してください。Voyage AI から直接作成されたキーを使用する場合は、Voyage AI ダッシュボードで使用状況とレート制限をモニターする必要があります。

Voyage AI 側のレート制限エラーは、mongot ログと、影響を受けたインデックスの失敗したドキュメント指示子として表示されます。これらのエラーによってインデックスが無効になることはありませんが、新しいドキュメントのインデックスの作成が遅延する可能性があります。

シンボリック
考えられる原因
アクション

インデックスは数分間を過ぎても PENDING ステータスのままです。

mongot 埋め込みエンドポイントにアクセスできません。または、API キーが無効です。

埋め込みエンドポイントに対する HTTP エラーについては、mongot ログを確認してください。

インデックスの遅延が断続的に発生します。

Voyage AI 側のレート制限。

レート制限を引き上げるか、インデックスの作成時の埋め込みの負荷を軽減します。

インデックスに対するクエリは、埋め込みに関するエラーを返します。

クエリ API キーが無効です、または有効期限が切れています。

queryKeyFile の内容を確認します。

インデックスに対するすべてのクエリは空の結果を返します。

インデックスが再構築され、コーパスの再埋め込みが続行している可能性があります。

db.collection.getSearchIndexes() を使用してインデックスのステータスを確認します。

自動埋め込みには次の制限が適用されます。

  • プレビューステータス。自動埋め込みが一般提供される前に、構成の形状、サポートされるモデル、およびデフォルトのエンドポイントが変更される可能性があります。

  • フィールドごとに 1 つの埋め込みモデル。混合モデル インデックスはサポートされていません。

  • 埋め込みモデルのフェイルオーバーはありません。Voyage AI エンドポイントに接続できない場合、新しいドキュメントのインデックスの作成が停滞します。

  • クロスプラットフォームの概念的な概要については、自動埋め込みの概要を参照してください。

  • 完全な mongot 構成の参照については、mongot の構成を参照してください。