Atlas Vector Search の概要
Atlas Vector Search を使用して、Atlas 内のデータに対してベクトル検索を実行できます。 コレクションに Atlas Vector Search インデックスを定義すると、ベクトル データと他のデータとともにシームレスにインデックスを作成し、インデックス フィールドに対してベクトル検索クエリを実行できます。
Atlas Vector Search では 、セマンティック検索、ハイブリッド検索、生成検索など、さまざまなユースケースが可能になります。他のデータと一緒にベクトル埋め込みを Atlasに保存することで、コレクション内の他のフィールドでセマンティック検索クエリをフィルタリングし、セマンティック検索と全文検索を組み合わせることができます。Atlas をベクトル データベースとして使用することで、AI アプリケーションでベクトル検索を活用し、一般的な AI フレームワークやサービスと統合することもできます。
Atlas Vector Search は、MongoDB バージョン 6.0.11、7.0.2、またはそれ以降を実行している Atlas クラスター(ANN 検索の場合)、または MongoDB バージョン 6.0.16、7.0.10、7.3.2、またはそれ以降を実行している Atlas クラスター(ENN検索の場合)でサポートされています。
注意
最適なパフォーマンスを得るには、ワークロード分離 のためにの個別の検索ノードを配置することをお勧めします。 検索ノードは、個々のクエリのレイテンシを改善するためにクエリの同時実行をサポートします。 詳しくは、「配置オプションの確認」を参照してください。
ベクトル検索とは
ベクトル検索は、データのセマンティックまたは基礎となる意味に基づいて結果を返す検索メソッドです。 テキスト一致を検索する従来の全文検索とは異なり、ベクトル検索は多次元空間内の検索クエリに近いベクトルを検索します。 ベクトルがクエリに近づくほど、それらの意味は大きくなります。
ベクトル検索では、検索クエリとデータの意味を解釈することで、検索者の意図と検索コンテキストを考慮して、より関連性の高い結果を検索できます。
たとえば、「赤色の結果」という用語を検索した場合、全文検索ではこれらのキーワードを明示的に含むデータのみが返されます。 ただし、セマンティック検索では、リンゴ や いちご のような赤色の植物など、意味において類似したデータが返される場合があります。
重要な概念
- ベクトル
ベクトルは、データを複数の次元で表す数値の配列です。 ベクトルは、テキスト、画像、オーディオを含むデータから非構造化データまで、あらゆるタイプのデータを表すことができます。 セマンティック類似性は、ベクトル間の距離を測定することによって判断されます。
ベクトルの次元数は、その作成に使用される埋め込みモデルによって決まります。 さらに、ベクトルの次元数は、類似性を判断するためにベクトルがプロットされるベクトル空間の次元数と等しくなります。
具体的には、Atlas Vector Search は高密度ベクトルを使用します。これは、より小さいストレージとセマンティックの豊富性を優先する高次元ベクトルのタイプです。 スパースベクトルとは対照的に、高密度ベクトルにはより多くのデータを埋め込むことができるため、Atlas Vector Search はより複雑な関係をキャプチャできます。
- ベクトル埋め込み
ベクトル埋め込み、つまりベクトル化とは、データをベクトルに変換するプロセスです。 これらの埋め込みは、データ内の意味のある関係をキャプチャし、セマンティック検索や取得などのタスクを有効にします。 Atlas をベクトルデータベースとして使用するには、埋め込みモデルにデータを渡して埋め込みを作成し、これらの埋め込みを ドキュメントの フィールドとして保存します。
Atlas Vector Search は、クエリベクトルに最も近い距離にあるベクトル埋め込みを識別することにより、セマンティック類似性を判断します。
詳細については、「ベクトル埋め込みの作成方法」を参照してください。
- 埋め込みモデル
埋め込みモデルは、データをベクトル埋め込みに変換するために使用するアルゴリズムです。 これを行うために、埋め込みモデルは、大規模なデータコーパスでトレーニングされた機械学習モデルである LLM を使用して、データのセマンティックな意味をキャプチャするベクトル埋め込みを生成します。
選択した埋め込みモデルによって、Atlas Vector Search インデックスの構成方法が決まり、埋め込みモデルの訓練結果はクエリ結果に影響します。その結果、異なるモデルでは、データとユースケースに応じて異なる利点が得られます。
詳細については、「埋め込みモデルの選択」を参照してください。
Atlas Vector Search インデックス
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 クエリ
Atlas Vector Search は、 Hierarchical Navigable Small Worlds アルゴリズムを使用した近似最近傍(ANN)検索と、厳密最近傍(ENN)検索に対応しています。
最も類似したベクトルを検索するために、Atlas Vector Search はすべてのベクトル埋め込みをスキャンせずに ANN 検索を実行し、すべてのインデックス作成されたベクトル埋め込みに対して厳密に ENN 検索を実行します。 詳細については、「 vectorSearch 定義」を参照してください。
Atlas Vector Search クエリは集計パイプライン ステージで構成されており、 $vectorSearch
ステージはパイプラインの最初のステージです。 基本的な Atlas Vector Search クエリのプロセスは次のとおりです。
[ANN] または [ENN ] 検索のいずれかを選択し、クエリ ベクトル (検索クエリを表すベクトル埋め込み)を指定します。
Atlas Vector Search は、クエリベクトルに最も近いデータ内のベクトル埋め込みを検索します。
Atlas Vector Search は、最も類似したベクトルを含むドキュメントを返します。
ベクトル検索クエリをカスタマイズするには、サポートされている 比較 または 集計演算子 を含む MQL 一致式を使用して、インデックスを作成したフィールドのデータを事前にフィルター処理できます。また、追加の 集計ステージ を追加して、結果をさらに処理および整理することもできます。
Atlas Vector Search クエリの作成および実行方法については、「 Vector Search クエリの実行」を参照してください。
ユースケース
Atlas Vector Search は次のタイプのベクトル検索クエリをサポートしています。
セマンティック検索: ANN または ENN 検索アルゴリズムを使用して、セマンティック類似性に基づいてベクトル埋め込みをクエリします。
詳細については、「セマンティック検索の実行方法」および「ベクトル検索クエリの実行方法 」を参照してください。
ハイブリッド検索: セマンティック検索クエリと全文検索クエリの両方の結果を組み合わせます。 詳細については、「Atlas Vector Search と Atlas Search を使用したハイブリッド検索の実行」を参照してください。
Atlas をベクトル データベースとして使用することで、Atlas Vector Search を使用して自然言語処理(NFP)、機械学習(ML)、生成系 AI アプリケーションを強化できます。
具体的には、 RAG にデータを保存し、AtlasAtlas Vector Search を使用してデータから関連するドキュメントを検索し、LLM を活用してデータの質問に答えることで、検索拡張生成(RAG )を実装できます。RAG は、ローカルで実装することも、Atlas Vector Search を一般的なフレームワークやサービスと 統合して実装することもできます。詳細については、「 Atlas Vector Search による検索拡張生成(RAG)」を参照してください。
AI 統合
Atlas Vector Search は、OpenAI、Amazon Web Services 、Google などの AI プロバイダーの一般的なチャットおよび埋め込みモデルで使用できます。また、MongoDB とそのパートナーは、AI を活用したアプリケーションで Atlas Vector Search を活用できるよう、特定の製品統合を提供しています。これらの統合には、Atlas をベクトルデータベースとして使用し、生成 AI アプリケーションを構築し、RAG を最初から最後まで実装できる組み込みツールとライブラリが含まれています。
たとえば、Atlas Vector Search を LangChainや LlamaIndex
詳細と開始方法については、「AI テクノロジーとベクトル検索の統合」を参照してください。
次のステップ
Atlas Vector Search インデックスの作成、およびサンプル データに対して Atlas Vector Search クエリの実行に関する実践的な情報については、「 MongoDB University の Atlas Vector Search コース」と次のページのチュートリアルをお試しください。