Docs Menu
Docs Home
/
Atlas

MongoDB ベクトル検索 の概要

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

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

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

注意

MongoDB ベクトル検索 は、 MongoDB v6.0.11 、v7.0.2 、またはそれ以降を実行中クラスターでの ANN 検索と、 MongoDB v..6 0167010、v を実行中クラスターでの ENN 検索をサポートしています。.7 3、v..2 、またはそれ以降

ベクトル検索は、データのセマンティックまたは基礎となる意味に基づいて結果を返す検索メソッドです。 テキスト一致を検索する従来の全文検索とは異なり、ベクトル検索は多次元空間内の検索クエリに近いベクトルを検索します。 ベクトルがクエリに近づくほど、それらの意味は大きくなります。

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

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

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

  • セマンティック検索: ANN または ENN 検索アルゴリズムを使用して、セマンティック類似性に基づいてベクトル埋め込みをクエリします。

    詳細については、「セマンティック検索の実行方法」および「ベクトル検索クエリの実行方法 」を参照してください。

  • ハイブリッド検索:ベクトル検索や全文検索など、複数の検索クエリの結果を組み合わせます。詳しくは、「ハイブリッド検索の実行方法」を参照してください。

  • 生成系検索 : MongoDB ベクトル検索を使用して、検索拡張生成 (RAG)(RAG) を実装し、生成系AIアプリケーションに関連するデータを検索します。

    RG の実装方法については、 「 MongoDB ベクトル検索での RAM 」を参照してください。エージェント RAG の実装を含む、ベクトル検索でAIエージェントを構築する方法については、 「 MongoDBでAIエージェントを構築 」を参照してください。

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

詳細については、「MongoDBとAIテクノロジーの統合」を参照してください。

ベクトル

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

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

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

ベクトル埋め込み

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

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

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

埋め込みモデル

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

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

埋め込みモデルは、モデルがどのように訓練されたかによって異なります。したがって、データとユースケースに応じて、異なるモデルには異なる利点が得られます。詳細については、「 埋め込みモデルの選択 」を参照してください。最先端の埋め込みモデルには、投票AIを使用します。

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

また、 MongoDB ベクトル検索クエリを実行したいコレクション内の追加フィールドにインデックスを作成して、データを事前にフィルタリングすることもできます。ブール値、date、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 ベクトル検索コース と次のページのチュートリアルをお試しください。

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

ルール バッジを取得する

「Vector Search の基礎」を無料で習得できます。

詳細

項目一覧