重要
自動埋め込みは自己管理型 mongot のプレビューです。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳細については、「プレビュー機能」を参照してください。
このチュートリアルでは、自己管理型 mongot 配置で自動型埋め込みを構成する方法を説明します。自動型埋め込みを使用すると、mongot はインデックス時にテキストデータのベクトル埋め込みを生成し、クエリ時にクエリテキストのベクトル埋め込みを生成します。アプリケーションで別の埋め込みパイプラインを維持する必要はありません。
This tutorial is for developers who are building semantic search or RAG features and want mongot to manage embeddings. For MongoDB Controllers for Kubernetes Operator deployments, see Automated Embedding.
自動埋め込みの機能
自動埋め込みを使用しない場合、アプリケーションは次のことを行います。
挿入または更新する各ドキュメントの埋め込みを生成します。
この埋め込みをコレクション内のドキュメントと一緒に保存します。
クエリ時に同じモデルを使用して、すべてのクエリの埋め込みを生成します。
クエリ埋め込みを
$vectorSearchに提出します。
自動型埋め込みでは、mongot がステップ 1、2、3 を取り扱います。アプリケーション:
テキスト フィールドの
autoEmbedフィールド タイプを使用して MongoDB ベクトル検索インデックスを構成します。ドキュメントを通常に挿入および更新します。
mongotテキスト フィールドを読み取り、構成された埋め込みモデルを介して埋め込みを生成して保存します。事前計算された埋め込みではなく、クエリ テキストで
$vectorSearchクエリを発行します。mongotクエリテキストの埋め込みを生成します。
サポートされている埋め込みプロバイダー
自己管理型 mongot 自動埋め込みは、Voyage AI 埋め込みモデルと統合されています。
モデル | 説明 |
|---|---|
| 推奨。一般的なテキスト検索のバランスの取れたパフォーマンス。 |
| 大規模でコストに敏感なアプリケーション。 |
| 複雑なセマンティック関係の最大精度。 |
| コード検索と技術ドキュメントに特殊化されています。 |
埋め込み生成にはコストが発生します。詳しくは、自動埋め込みの請求を管理する を参照してください。
前提条件
Automated 埋め込みを使用するには、以下の前提条件を満たしている必要があります:
mongot自己管理型配置(Community tarballまたはコンテナ、ローカル開発、およびKubernetes Operatorを通じたエンタープライズ版)における1.70.1以降。MongoDB 8.3 or later for standalone and Kubernetes Operator-managed deployments. To learn more, see Compatibility and Requirements for
mongot.Two Voyage AI API keys.
インデックス時の埋め込み生成用とクエリ時間用の 2 つの別々のキーを使用します。別々のキーにより、クエリワークロードがインデックスワークロードから分離され、独立したレート制限の計算が可能になります。詳細については、「レート制限」を参照してください。
mongotから埋め込みエンドポイントとなる接続されたデバイスへのアウトバウンド ネットワーク アクセス。The default endpoint is
https://ai.mongodb.com/v1/embeddings. This endpoint proxies Voyage AI with MongoDB-managed billing, for keys generated using the Atlas UI. You can also usehttps://api.voyageai.com/v1/embeddingsfor direct Voyage AI access if you generated the API key directly from Voyage AI.
手順
Generate Voyage AI API Keys.
You can generate Voyage AI API keys through either of the following methods:
(Recommended) Through your Atlas account. Atlas provides API key management with built-in rate-limit configuration. The keys are not tied to an Atlas cluster. To learn more, see Manage API Keys.
Through Voyage AI directly at voyageai.com.
例えば mongot-prod-index と mongot-prod-query のように、2 つのキーを生成し、分かりやすい名前を付けます。キーを安全な秘密ストレージに保存します。
Configure mongot for Automated Embedding.
構成は配置パスによって異なります。配置のタブを選択します。
自動埋め込みには preview ローカル開発イメージ (mongodb/mongodb-atlas-local:preview) が必要です。preview イメージには、自動型埋め込み統合を含む mongot の Community ビルドがバンドルされています。
If you launch the container directly with docker run, pass the Voyage AI API key with the VOYAGE_API_KEY environment variable and use the :preview tag:
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
注意
Local Development accepts only a single Voyage AI API key and uses it for both index-time and query-time embedding generation. A single key is acceptable for development. For production deployments that need separate index-time and query-time keys, use the Community Edition or Kubernetes Operator deployment path.
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
Each key file contains the API key as its only content. Set the file permissions to 0600 and set the file owner to the user that runs the mongot process.
自動埋め込みインデックスを作成します。
After you configure mongot with your Voyage AI API keys, define a MongoDB Vector Search index that uses the autoEmbed field type. The index definition specifies which text field mongot embeds and which model it uses. It also specifies the indexing method, quantization, and other parameters.
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 インデックス定義フィールドを説明しています。
フィールド | 目的 |
|---|---|
| フィールドを自動埋め込みの対象としてマークします。 |
| データ モダリティ。 |
| 埋め込むコレクションのフィールド。 |
| The Voyage AI model name. The model must be one that your API key has access to. |
| 埋め込みベクトルの次元数。モデルによって、サポートされる次元が決定されます。 |
| ベクトル検索に使用する類似度関数。サポートされている関数は |
| 使用するインデックスの作成方法。サポートされている方法は |
| (Optional) The HNSW index options. Required if |
| (任意)使用する量子化の種類。サポートされているタイプは |
同じインデックスで autoEmbed フィールドと filter フィールドを混合することができます。同じパス上の生のベクトルフィールドとautoEmbedを混合することはできません。フィールドごとに1つのアプローチを選択します。
自動埋め込みクエリを実行します。
事前計算された埋め込みではなく、クエリテキストを提出します。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" } } } ])
埋め込みストレージ
mongot クラスター上の専用の内部データベースに埋め込みを持続します。mongot は、ソース コレクションに埋め込みを保存しません。mongot は、ソース テキストから埋め込みを再生成できますが、埋め込み生成には料金が発生します。
埋め込みモデル、出力ディメンション、または量子化の変更は、影響を受けるインデックスの完全な再埋め込みをtriggerします。この場合、埋め込み生成に対する課金が発生します。「mongotが埋め込みを再生成するとき。」を参照してください。
詳細については、「生成された埋め込みコレクション」を参照してください。
When mongot Regenerates Embeddings
mongot 次のいずれかが発生した場合、autoEmbed フィールドの埋め込みを再生成します。
ドキュメントを挿入します。
ドキュメントの埋め込みフィールドを変更します。
mongotは、変更ストリームを介して変更を検出します。インデックス定義で埋め込みモデルを変更します。
埋め込み出力の次元またはデータ型を変更します。
テキストフィールドパスを変更します。
最後の3つの項目のいずれかを変更すると、mongotはインデックス全体をゼロから再構築します。再構築は大規模なコレクションにとっては高コストになる可能性があります。モデルの変更は慎重に計画します。
コストとレート制限
MongoDB では、モデル固有の料金で 100 万トークンごとに課金されます。インデックスの作成コストは、コレクション全体のインデックスフィールドの合計テキスト量に比例します。クエリコストは、クエリテキストの量に比例します。
If you use the Voyage AI API key that you created using your Atlas account, you can view API key usage and rate limits in the Atlas UI. To learn more, see Manage Billing for the Embedding and Reranking API. If you use keys created directly from Voyage AI, you must monitor your usage and rate limits in the Voyage AI dashboard.
Voyage AI 側のレート制限エラーは、mongot ログと、影響を受けたインデックスの失敗したドキュメント指示子として表示されます。これらのエラーによってインデックスが無効になることはありませんが、新しいドキュメントのインデックスの作成が遅延する可能性があります。
失敗モード
シンボリック | 考えられる原因 | アクション |
|---|---|---|
インデックスは数分間を過ぎても |
| 埋め込みエンドポイントに対する HTTP エラーについては、 |
インデックスの遅延が断続的に発生します。 | Voyage AI 側のレート制限。 | レート制限を引き上げるか、インデックスの作成時の埋め込みの負荷を軽減します。 |
インデックスに対するクエリは、埋め込みに関するエラーを返します。 | The query API key is invalid or expired. |
|
インデックスに対するすべてのクエリは空の結果を返します。 | インデックスが再構築され、コーパスの再埋め込みが続行している可能性があります。 |
|
制限
自動埋め込みには次の制限が適用されます。
プレビューステータス。自動埋め込みが一般提供される前に、構成の形状、サポートされるモデル、およびデフォルトのエンドポイントが変更される可能性があります。
フィールドごとに 1 つの埋め込みモデル。混合モデル インデックスはサポートされていません。
埋め込みモデルのフェイルオーバーはありません。Voyage AI エンドポイントに接続できない場合、新しいドキュメントのインデックスの作成が停滞します。
次のステップ
クロスプラットフォームの概念的な概要については、自動埋め込みの概要を参照してください。
完全な
mongot構成の参照については、mongot の構成を参照してください。