Docs Menu
Docs Home
/
MongoDB Atlas

Atlas Vector Search の概要

項目一覧

  • ベクトル検索とは
  • ユースケース
  • AI 統合
  • 重要な概念
  • Atlas Vector Search インデックス
  • Atlas Vector Search クエリ
  • 次のステップ

Atlas ベクトル検索を使用して、Atlas に保存されているデータに対してベクトル検索を実行できます。ベクトル検索では、キーワード一致だけでなく、セマンティック意味に基づいてデータをクエリできるため、より関連性の高い検索結果を得ることが役立ちます。これにより、 AI対応アプリケーションは、セマンティック検索、ハイブリッド検索、生成系検索などの のユースケースをサポートできるようになります( RAG を含む)。

Atlas をベクトルデータベースとして使用することで、ベクトルデータと他のデータを Atlas 内の他のデータとともにシームレスにインデックス化できます。これにより、コレクション内のフィールドでフィルタリングし、ベクトルデータに対してベクトル検索クエリを実行できます。また、ベクトル検索と全文検索クエリを組み合わせて、ユースケースに最も関連する結果を返すこともできます。 Atlas ベクトル検索を一般的なAIフレームワークやサービスと統合して、アプリケーションにベクトル検索を簡単に実装できます。

Atlas Vector Search を使い始める

注意

Atlas Vector Search は MongoDB v 6.0.11を実行しているクラスターでのAnn検索をサポートします v 7.0.2以降、MongoDB v 6を実行しているクラスターでの とENN検索。 0 。 16 、 v 7 . 0 。 10 、 v 7 . 3 。 2 、 以降に更新します。

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

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

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

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

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

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

  • ハイブリッド検索: セマンティック検索クエリと全文検索クエリの両方の結果を組み合わせます。 詳細については、「Atlas Vector Search と Atlas Search を使用したハイブリッド検索の実行」を参照してください。

  • 生成系検索 :Atlas をベクトルデータベースとして使用することで、Atlas ベクトル検索を使用して自然言語処理(NFP)、機械学習(ML)、生成系AIアプリケーションを強化できます。具体的には、次の手順で検索拡張生成 (RAG)(RAG)を実装できます。

    1. Atlas にデータを取り込みます。

    2. Atlas ベクトル検索を使用して関連するドキュメントを検索します。

    3. LM を使用してデータに対して応答を生成します。

    詳細については、「 Atlas ベクトル検索での RG 」を参照してください。

Atlas ベクトル検索は、OpenAI、 AWS 、Google などのAIプロバイダーの一般的な埋め込みモデルやチャット モデルで使用できます。 MongoDBとその提携パートナーは、 AIベースのアプリケーションで Atlas ベクトル検索を活用するための特定の製品統合も提供しています。これらの統合には、最初から最後まで RAG を実装できるようにする組み込みツールとライブラリが含まれています。

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

ベクトル

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

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

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

ベクトル埋め込み

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

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

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

埋め込みモデル

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

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

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

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

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

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

Atlas Vector Search は、 Hierarchical Navigable Small Worlds アルゴリズムを使用した近似最近傍(ANN)検索と、厳密最近傍(ENN)検索に対応しています。

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

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

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

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

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

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

Atlas Vector Search クエリの作成および実行方法については、「 Vector Search クエリの実行」を参照してください。

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

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