MongoDB ベクトル検索を構成して、Atlas クラスター内のテキスト データのベクトル埋め込みを自動的に生成および管理できます。自動埋め込みを有効にすると、 MongoDB ベクトル検索 は、コレクション内の指定されたテキストフィールドのインデックス時にと、クエリ内のテキスト string のクエリ時に、指定された Vyage AI埋め込みモデルを使用して埋め込みを自動的に生成します。
自動埋め込み により、セマンティック検索を構築するプロセスが簡素化されます。ベクトル埋め込みを自分で生成、保存、または管理する必要はありません。 Atlas は埋め込みの生成、アップデート、クエリをネイティブに処理します。
注意
オートスケーリングを有効にする必要があるのは、M10 クラスターと M20 クラスターの最大インスタンスサイズが M30 以上で、オートスケーリングを有効にする必要があります。他のすべてのクラスター階層では、自動埋め込みはデフォルトで有効になっています。
MongoDB ベクトル検索を配置し、 MongoDB ベクトル検索インデックスへの 自動埋め込み により、テキストデータに対してAIを使用したインテリジェントなセマンティック検索を有効にできます。MongoDB の自動埋め込み機能により、ベクトル検索実装の従来の複雑なプロセスが単一ステップのソリューションに変換されます。埋め込みインフラストラクチャ、モデル選択、統合コードを個別に管理する代わりに、簡単なフィールド構成でセマンティック検索を実装できるようになりました。
MongoDB Vector Searchインデックスを構成すると、選択した最新の Voyage AI埋め込みモデルを使用して、コレクション内のテキスト データのベクトル埋め込みが自動的に生成され、データが変更されるたびに埋め込みが同期されます。また、自然言語テキスト クエリの使用もサポートします。これらのベクトル埋め込みは、データ内の意味のある関係をキャプチャし、キーワードではなく意向に基づいて検索を可能にします。
自動埋め込みの有効化と使用
自動埋め込みを有効にするには、autoEmbed タイプを使用してMongoDB ベクトル検索インデックスを作成します。 autoEmbed タイプは、自動埋め込みを有効にするフィールドと使用する埋め込みモデルを指定します。 1 つ以上のフィールドを含めて、filter タイプを使用してデータを事前にフィルタリングすることもできます。
1 { 2 "fields": [ 3 { 4 "type": "autoEmbed", 5 "modality": "text", 6 "path": "<field-to-index>", 7 "model": "<embedding-model>" 8 }, 9 { 10 "type": "filter", 11 "path": "<field-to-index>" 12 }, 13 ... 14 ] 15 }
インデックス構文とフィールドの詳細については、 ベクトル検索のフィールドにインデックスを作成する方法 を参照してください。
MongoDB ベクトル検索 は、挿入またはアップデートした既存と新規のドキュメントの埋め込みを自動的に生成します。
インデックスを 作成 したら、クエリを実行できます。 MongoDB ベクトル検索 は、インデックスで指定したのと同じ埋め込みモデルを使用して、クエリテキストの埋め込みを自動的に生成します。オプションで、model $vectorSearchパイプラインステージで オプションを使用して別の埋め込みモデルを指定できますが、指定された埋め込みモデルは、インデックス時に使用される埋め込みモデルと互換性がある必要があります。
1 [ 2 { 3 "$vectorSearch": { 4 "index": "<index-name>", 5 "path": "<field-to-index>", 6 "query": "<query-text>", 7 "model": "<embedding-model>" 8 } 9 }, 10 { 11 "$project": { 12 "_id": 0, 13 "<field-to-index>": 1, 14 "score": { "$meta": "vectorSearchScore" } 15 } 16 } 17 ]
詳細については、「ベクター検索クエリの実行」を参照してください。
注意
簡単な構成変更により、埋め込みコードを記述したり、モデル インフラストラクチャを管理したり、ベクトルパイプラインを処理したりせずに、 AIエージェントのセマンティック検索、RARG、メモリを有効にできます。つまり、 MongoDB Community Edition をMongoDB Search およびベクトル検索プロセス で配置する場合、埋め込みの生成に使用するためのmongot Vyage AI APIキーを提供できます。理想的には、インデックス操作用で、もう 1 つは別のプロジェクトのクエリ操作用です。
配置後:
コレクションから、セマンティック検索を有効にするテキストフィールドを選択します。
使用可能な埋め込みモデルのリストから、埋め込みモデルを選択します。
MongoDB Vector Searchインデックス定義で、
autoEmbedタイプを使用して自動埋め込みを構成します。
自動埋め込み用のMongoDB ベクトル検索インデックスの構成の詳細については、 「 ベクトル検索のフィールドにインデックスを作成する方法 」を参照してください。
MongoDB Vector Search は、 MongoDB Community Edition の初期化時に指定した APIキーを使用して、挿入またはアップデートする既存と新規のドキュメント用の埋め込みを自動的に生成します。
query.text$vectorSearchクエリには、 パイプラインステージで オプションを使用します。 MongoDB ベクトル検索 は、インデックス定義で同じ埋め込みモデルを使用してテキストクエリの埋め込みを生成します。model $vectorSearchパイプラインステージで オプションを使用して別の埋め込みモデルを指定できますが、指定された埋め込みモデルは、インデックス時に使用される埋め込みモデルと互換性がある必要があります。 MongoDB ベクトル検索 は、 MongoDB Community の初期化中に提供したクエリAPIキーを使用して、クエリ時に埋め込みを生成します。詳細については、 「 ベクトル検索クエリの実行 」を参照してください。
APIキーを使用して埋め込みを生成すると料金が発生します。詳しくは、「 請求の管理 」を参照してください。
埋め込みを自動化し、サンプルクエリを実行するには、 「 MongoDB ベクトル検索クイック スタート 」を参照してください。
Voyage AI APIキー
インデックス時とクエリ時に単一のAPIキーを使用して埋め込みを生成できますが、クエリ操作がインデックスの作成操作に悪影響を与えないようにするために、個別のAPIキーを使用することをお勧めします。
APIキーは、次の方法で生成できます。
(推奨) Atlas アカウントの使用により、Atlas UIから Voyage AI埋め込みモデルAPIキーを管理できます。
レート制限( TPM と RPM の組み合わせ)の構成やAPIキーの使用状況のモニタリングなど、 APIキーの生成と管理の詳細については、「 モデルAPIキー 」を参照してください。
Voyage AIから作成されたAPIキーの管理の詳細については、「APIキー」を参照してください。
キーの作成後、 MongoDB Community Edition を使用した配置中に mongot を構成するときに、自動埋め込みに使用するキーを指定する必要があります。MongoDB Vector Search は、mongot の配置中に提供した Voyage AI API キーを使用して、インデックス時にデータの埋め込みを自動的に生成し、クエリ時にクエリテキストの埋め込みを自動的に生成します。
埋め込みストレージ
自動埋め込みインデックスはベクトル埋め込みを非同期に生成し、別の 予約データベース上のMongoDBクラスターに永続化します。各自動埋め込みインデックスには、対応する生成された埋め込みコレクションが 1 つだけあります。生成された埋め込みコレクションは、同じクラスター上の専用の内部データベースに保存されます。
詳細については、「 生成された埋め込みコレクション 」を参照してください。
利用可能なモデル
MongoDB Vector Search は、それぞれ特定のユースケースに合わせて最適化された、Voyage AI の最新の埋め込みモデルと統合します。
埋め込みモデル | 説明 | 1M トークンあたりの価格 |
|---|---|---|
| 大規模でコストのかかるアプリケーションに最適化されます。 | $0.02 |
| (推奨)一般的なテキスト検索のバランスの取れたパフォーマンス。 | $0.06 |
| 複雑なセマンティック関係の最大精度。 | $0.12 |
| コード検索と技術ドキュメントに特殊化されています。 | $0.18 |
詳細については、「 自動埋め込みのモデル 」を参照してください。
重要な概念
- 埋め込みモデル
埋め込みモデルは、データのセマンティックまたは基礎となる意味を取得するベクトル埋め込みにデータを変換するアルゴリズムです。これらのベクトルによりベクトル検索が可能になります。
自動埋め込みの埋め込みモデルの詳細については、「 利用可能なモデル 」を参照してください。
- ベクトル埋め込み
ベクトル埋め込みは数値の配列であり、各次元はデータの異なる機能または属性を表します。ベクトルは、テキスト、画像、ビデオから非構造化データまで、任意のタイプのデータを表すために使用できます。埋め込みモデルにデータを渡すことでベクトル埋め込みを作成し、これらの埋め込みをMongoDBのようなベクトル埋め込みをサポートするデータベースに保存できます。
自動埋め込みの埋め込みストレージの詳細については、「 生成された埋め込みコレクション 」を参照してください。
- tokens
埋め込みモデルと LVM のコンテキストでは、トークンとは、埋め込みの作成やテキストの生成のためにモデルが処理する単語、サブワード、文字などのテキストの基本単位です。トークンは、埋め込みモデルと LM の使用量に対して課金される方法を示します。
自動埋め込みのトークンの詳細については、「 自動埋め込みの請求の管理 」を参照してください。
- レート制限
レート制限は、ユーザーが特定の時間枠内で実行できるリクエスト数に対してAPIプロバイダーによって課せられる制限であり、1 分あたりのトークン(TPM)または 1 分あたりのリクエスト数(RPM)で測定されます。これらの制限により、均等な使用が確保され、不正を防ぎ、すべてのユーザーに対してサービスの安定性とパフォーマンスが維持されます。
自動埋め込みのレート制限の詳細については、「 レート制限 」を参照してください。
- 量子化
量子化によりベクトル埋め込みの精度が低下することで、メモリとストレージの使用量が削減されますが、検索精度がトレードオフされます。自動埋め込みの場合、 MongoDB ベクトル検索 は次の量子化タイプをサポートします。
量子化タイプ説明floatベクトル埋め込みを 32 ビットの浮動小数値として保存します。
scalar各ベクトル次元を 32 ビット浮動小数点数から 8 ビット整数に縮小します。
binary各ベクトル次元を 1 ビットに縮小し、上位結果を再スコア付けします。
binaryNoRescore各ベクトル次元を再スコアリングせずに 1 ビットに縮小します。
自動埋め込みの量子化の詳細については、「 量子化について 」を参照してください。
- 次元数
次元数は、各ドキュメントの埋め込みベクトルの長さ(配列内の数値の数)を指定します。次元が大きいほど、よりセマンティックな詳細がキャプチャされ、一般的に検索精度が向上しますが、ストレージとコンピューティングのコスト(インデックスサイズ、 RAM使用量、場合によってはレイテンシ)が増加します。
- 類似
類似性関数は、2 つのベクトル間の類似性、またはクエリベクトルがインデックス内のベクトルに近接していることを測定するために使用されます。 MongoDB ベクトル検索 は次の類似性関数をサポートしています。
cosine- ベクトル間の角度に基づいて類似性を測定します。dotProduct- はcosineと同様の類似性を測定しますが、ベクトルの大きさを考慮します。この類似性関数は、フル忠実度またはscalar量子化に推奨されます。euclidean- ベクトルの端点間の距離を測定します。この類似度関数は、ベクトルが圧縮され、アセットまたはユークリッド空間の距離が適切なシグナルである、binaryまたはbinaryNoRescoreの量子化に推奨します。
自動埋め込みの類似性関数の詳細については、「 類似性関数について 」を参照してください。