重要
自動埋め込みは自己管理型 mongot のプレビューです。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳細については、「プレビュー機能」を参照してください。
このチュートリアルでは、自己管理型 mongot 配置で自動型埋め込みを構成する方法を説明します。自動型埋め込みを使用すると、mongot はインデックス時にテキストデータのベクトル埋め込みを生成し、クエリ時にクエリテキストのベクトル埋め込みを生成します。アプリケーションで別の埋め込みパイプラインを維持する必要はありません。
このチュートリアルは、セマンティック検索または RAG 機能を構築しており、埋め込みを管理するために mongot を必要とする開発者向けです。Kubernetes 演算子の MongoDB コントローラーの配置については、自動埋め込みを参照してください。
自動埋め込みの機能
自動埋め込みを使用しない場合、アプリケーションは次のことを行います。
挿入または更新する各ドキュメントの埋め込みを生成します。
この埋め込みをコレクション内のドキュメントと一緒に保存します。
クエリ時に同じモデルを使用して、すべてのクエリの埋め込みを生成します。
クエリ埋め込みを
$vectorSearchに提出します。
自動型埋め込みでは、mongot がステップ 1、2、3 を取り扱います。アプリケーション:
テキスト フィールドの
autoEmbedフィールド タイプを使用して MongoDB ベクトル検索インデックスを構成します。ドキュメントを通常に挿入および更新します。
mongotテキスト フィールドを読み取り、構成された埋め込みモデルを介して埋め込みを生成して保存します。事前計算された埋め込みではなく、クエリ テキストで
$vectorSearchクエリを発行します。mongotクエリテキストの埋め込みを生成します。
サポートされている埋め込みプロバイダー
自己管理型 mongot 自動埋め込みは、Voyage AI 埋め込みモデルと統合されています。
モデル | 説明 |
|---|---|
| 推奨。一般的なテキスト検索のバランスの取れたパフォーマンス。 |
| 大規模でコストに敏感なアプリケーション。 |
| 複雑なセマンティック関係の最大精度。 |
| コード検索と技術ドキュメントに特殊化されています。 |
埋め込み生成にはコストが発生します。詳しくは、自動埋め込みの請求を管理する を参照してください。
前提条件
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 に直接アクセスすることもできます。
手順
Voyage AI API キーを生成します。
Voyage AI API キーは、次のいずれかの方法で生成できます。
(推奨)Atlas アカウントを使用します。Atlas は、組み込みのレート制限構成とともに API キーのマネジメントを提供します。キーは Atlas クラスターに結び付けられていません。詳しくは、「API キーの管理」を参照してください。
Voyage AI を通じて、voyageai.comで直接。
例えば mongot-prod-index と mongot-prod-query のように、2 つのキーを生成し、分かりやすい名前を付けます。キーを安全な秘密ストレージに保存します。
自動埋め込みの mongot を構成します。
構成は配置パスによって異なります。配置のタブを選択します。
自動埋め込みには 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 プロセスを実行するユーザーに設定します。
自動埋め込みインデックスを作成します。
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 インデックス定義フィールドを説明しています。
フィールド | 目的 |
|---|---|
| フィールドを自動埋め込みの対象としてマークします。 |
| データ モダリティ。 |
| 埋め込むコレクションのフィールド。 |
| Voyage AI モデル名。モデルは、API キーでアクセスできるものである必要があります。 |
| 埋め込みベクトルの次元数。モデルによって、サポートされる次元が決定されます。 |
| ベクトル検索に使用する類似度関数。サポートされている関数は |
| 使用するインデックスの作成方法。サポートされている方法は |
| (任意) HNSWインデックスオプション。 |
| (任意)使用する量子化の種類。サポートされているタイプは |
同じインデックスで 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" } } } ])
To learn more, see Run Vector Search ANN and ENN Queries.
埋め込みストレージ
mongot クラスター上の専用の内部データベースに埋め込みを持続します。mongot は、ソース コレクションに埋め込みを保存しません。mongot は、ソース テキストから埋め込みを再生成できますが、埋め込み生成には料金が発生します。
埋め込みモデル、出力ディメンション、または量子化の変更は、影響を受けるインデックスの完全な再埋め込みをtriggerします。この場合、埋め込み生成に対する課金が発生します。「mongotが埋め込みを再生成するとき。」を参照してください。
詳細については、「生成された埋め込みコレクション」を参照してください。
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 ログと、影響を受けたインデックスの失敗したドキュメント指示子として表示されます。これらのエラーによってインデックスが無効になることはありませんが、新しいドキュメントのインデックスの作成が遅延する可能性があります。
失敗モード
シンボリック | 考えられる原因 | アクション |
|---|---|---|
インデックスは数分間を過ぎても |
| 埋め込みエンドポイントに対する HTTP エラーについては、 |
インデックスの遅延が断続的に発生します。 | Voyage AI 側のレート制限。 | レート制限を引き上げるか、インデックスの作成時の埋め込みの負荷を軽減します。 |
インデックスに対するクエリは、埋め込みに関するエラーを返します。 | クエリ API キーが無効です、または有効期限が切れています。 |
|
インデックスに対するすべてのクエリは空の結果を返します。 | インデックスが再構築され、コーパスの再埋め込みが続行している可能性があります。 |
|
制限
自動埋め込みには次の制限が適用されます。
プレビューステータス。自動埋め込みが一般提供される前に、構成の形状、サポートされるモデル、およびデフォルトのエンドポイントが変更される可能性があります。
フィールドごとに 1 つの埋め込みモデル。混合モデル インデックスはサポートされていません。
埋め込みモデルのフェイルオーバーはありません。Voyage AI エンドポイントに接続できない場合、新しいドキュメントのインデックスの作成が停滞します。
次のステップ
クロスプラットフォームの概念的な概要については、自動埋め込みの概要を参照してください。
完全な
mongot構成の参照については、mongot の構成を参照してください。