AIエージェントの場合: ドキュメントインデックスはhttps://www.mongodb.com/ja-jp/docs/llms.txt で利用可能です。任意のURLパスに .md を追加することで、すべてのページのマークダウン バージョンが利用できます。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

MongoDB ベクトル検索 の概要

MongoDB をベクトルデータベースとして 使用することで、 MongoDB ベクトル検索 を使用してベクトルデータを他のMongoDBデータと並行してシームレスに検索し、インデックスことができます。MongoDB ベクトル検索 を使用すると、セマンティックな意味に基づいてデータをクエリしたり、ベクトル検索と全文検索を組み合わせたり、コレクション内の他のフィールドでクエリをフィルタリングしたりできるため、ユースケースに最も関連する結果を検索できます。

MongoDB ベクトル検索を使用して、検索拡張生成 (RAG) を実装し、 AIアプリケーションとエージェント システムを強化します。MongoDB ベクトル検索 を一般的なAIフレームワークやサービスと統合して、 AIアプリケーションとエージェントを迅速に構築できます。

自動埋め込みを使用すると、1 回のクリックでセマンティック検索を有効にできます。MongoDB vector embeddings はテキストデータのvector embeddingsを自動的に生成および管理するため、埋め込みコードを記述したりmodel インフラストラクチャを管理したりする必要はありません。

MongoDB ベクトル検索を使い始める

注意

MongoDB ベクトル検索 は、 MongoDB v6.0.11 、v7.0.2 、またはそれ以降を実行中Atlas 60167010732クラスターでの Ann 検索と、 MongoDB v.. 、v. を実行中クラスターでの ENN 検索をサポートしています。 }. 、v.. 、またはそれ以降また、Atlas CLI を使用して作成した、自己管理型またはローカル Atlas 配置でMongoDB ベクトル検索 を使用することもできます。

ベクトル検索は、データの意味、つまり根本的な意味に基づいて結果を返す検索方法です。テキストの一致を検索する従来の全文検索とは異なり、ベクトル検索は多次元空間で検索クエリに近いベクトルを検索します。ベクトルがクエリに近ければ近いほど、意味が類似していることになります。

ベクトル検索では、検索クエリとデータの意味を解釈することで、検索者の意図と検索コンテキストを考慮して、より関連性の高い結果を検索できます。

たとえば、「赤色の結果」という用語を検索した場合、全文検索ではこれらのキーワードを明示的に含むデータのみが返されます。 ただし、セマンティック検索では、リンゴ や いちご のような赤色の植物など、意味において類似したデータが返される場合があります。

MongoDB ベクトル検索 は次のベクトル検索のユースケースをサポートしています。

MongoDB ベクトル検索の 自動埋め込み サービスは、コレクション内のテキスト データのセマンティック検索を有効にする 1 つの方法です。自動埋め込みを使用すると、vector embeddingsを自分で生成、保存、または管理する必要はありません。代わりに、 MongoDB ベクトル検索自動埋め込みサービスは、コレクション内の指定されたtextsフィールドのインデックス作成時とクエリtextsのクエリ時に、Voyage AI embedding modelを使用して埋め込みを生成し、データが変更されたときに埋め込みを同期させます。

自動埋め込みを有効にするには、autoEmbed タイプのMongoDB ベクトル検索インデックスを作成し、embedding modelを選択します。インデックスを作成すると、 MongoDB ベクトル検索 は埋め込み生成、アップデート、クエリをネイティブに処理します。

詳細については、自動埋め込みの概要 を参照してください。

MongoDB ベクトル検索 は、任意のAIプロバイダーの埋め込みモデルと生成モデルで使用できます。MongoDBとその提携パートナーは、 AIアプリケーションでMongoDB ベクトル検索 を活用するための特定の製品統合も提供しています。これらの統合には、ベクトル検索、RAG、 AIエージェントを迅速に実装できるフレームワーク、プラットフォーム、ツールが含まれます。

詳細については、 MongoDB AI統合 を参照してください。

ベクトル

ベクトルは、データを複数の次元で表す数値の配列です。 ベクトルは、テキスト、画像、オーディオを含むデータから非構造化データまで、あらゆるタイプのデータを表すことができます。 セマンティック類似性は、ベクトル間の距離を測定することによって判断されます。

ベクトルの次元は、配列内の要素数を指し、したがってベクトルがプロットされるベクトル空間の次元数を意味します。

具体的には、 MongoDB ベクトル検索では、高密度ベクトルが使用されます。これは、より小さいストレージとセマンティックの豊富性を優先する高次元ベクトルのタイプです。スパース ベクトルとは対照的に、高密度ベクトルにはより多くのデータを格納できるため、 MongoDB ベクトル検索 はより複雑な関係をキャプチャできます。

ベクトル埋め込み

ベクトル埋め込みは、データを表すために使用するベクトルです。これらの埋め込みは、データ内の意味のある関係をキャプチャし、セマンティック検索や取得などのタスクを有効にします。埋め込みモデルにデータを渡すことでベクトル埋め込みを作成し、これらの埋め込みをドキュメントのフィールドとしてMongoDBコレクションに保存できます。

MongoDB ベクトル検索 は、クエリベクトルに最も近い距離にあるベクトル埋め込みを識別することにより、セマンティック類似性を判断します。

詳細については、 「ベクトル埋め込みを手動で作成する方法」 を参照してください。

埋め込みモデル

埋め込みモデルは、データをベクトル埋め込みに変換するために使用するアルゴリズムです。 これを行うために、埋め込みモデルは、大規模なデータコーパスでトレーニングされた機械学習モデルである LLM を使用して、データのセマンティックな意味をキャプチャするベクトル埋め込みを生成します。

選択した埋め込みモデルによって、ベクトル埋め込みの次元が決まります。これらの次元はMongoDB ベクトル検索インデックスのフィールドとして指定する必要があります。

埋め込みモデルは、モデルがどのようにトレーニングされたかによって異なります。したがって、データとユースケースに依存して、異なるモデルは異なる利点を提供します。詳細については、「埋め込みモデルの選択」を参照してください。最先端の埋め込みモデルには、Voyage AI をご利用ください。

MongoDBのデータに対してベクトル検索を実行するには、 MongoDB ベクトル検索インデックスを作成する必要があります。MongoDB ベクトル検索インデックスは他のデータベースインデックスとは別であり、クエリ時にベクトル埋め込みを含むドキュメントを効率的に検索するために使用されます。MongoDB ベクトル検索インデックス定義では、埋め込みを含むコレクション内のフィールドにインデックス、それらのフィールドに対するベクトル検索を有効にします。MongoDB ベクトル検索 は、長さが 8192 次元未満の埋め込みをサポートしています。

また、 MongoDB ベクトル検索クエリを実行したいコレクション内の追加フィールドにインデックスを作成して、データを事前にフィルタリングすることもできます。ブール値、日付、ObjectId、数値、string、および UUID 値(これらの型の配列を含む)をフィルタリングできます。 データをフィルタリングすると、検索の範囲が絞り込まれ、特定のベクトル埋め込みが比較の対象から除外されます。

MongoDB ベクトル検索 のフィールドにインデックス方法については、 「 ベクトル検索のフィールドにインデックスを作成する方法 」を参照してください。

MongoDB ベクトル検索 は、 Hierarchical Navigable Small Worlds アルゴリズムによる近似最近傍( ANN )検索と、完全最近傍( ENN )検索をサポートしています。

最も類似したベクトルを検索するために、 MongoDB ベクトル検索 はすべてのベクトル埋め込みをスキャンせずに ANN 検索を実行し、すべてのインデックス作成されたベクトル埋め込みに対して完全に ENN 検索を実行します。詳細については、vectorSearch 定義を参照してください。

MongoDB ベクトル検索クエリは集計パイプラインステージで構成されており、$vectorSearchステージはパイプラインの最初のステージです。基本的なMongoDB ベクトル検索クエリのプロセスは次のとおりです。

  1. [ANN] または [ENN ] 検索のいずれかを選択し、クエリ ベクトル (検索クエリを表すベクトル埋め込み)を指定します。

  2. MongoDB ベクトル検索 は、クエリベクトルに最も近いデータ内のベクトル埋め込みを検索します。

  3. MongoDB ベクトル検索 は、最も類似したベクトルを含むドキュメントを返します。

ベクトル検索クエリをカスタマイズするには、サポートされている 比較 または 集計演算子 を含む MQL 一致式を使用して、インデックスを作成したフィールドのデータを事前にフィルター処理できます。また、追加の 集計ステージ を追加して、結果をさらに処理および整理することもできます。

MongoDB ベクトル検索クエリの作成および実行方法については、 「 ベクトル検索クエリの実行 」を参照してください。

MongoDB ベクトル検索インデックスの作成、およびサンプルデータに対してMongoDB ベクトル検索クエリの実行中に関する実践的な情報については、 MongoDB UniversityのMongoDB ベクトル検索コース と次のページのチュートリアルをお試しください。

最適なパフォーマンスを得るには、ワークロード分離のために個別の検索ノードを配置することをお勧めします。検索ノードは、個々のクエリレイテンシを改善するためにクエリの同時実行をサポートします。詳しくは、「配置オプションを検討する」を参照してください。