Azure Cosmos DB NoSQL のベクトル検索とストレージ機能を構成する

完了

Azure Cosmos DB for NoSQL には、高次元ベクトルの保存とクエリのための堅牢な方法を提供するベクトル検索機能が含まれています。 この機能は、統合ベクトル検索機能を必要とする生成 AI アプリケーションに不可欠です。 Azure Cosmos DB for NoSQL のベクトル データベースを使用すると、埋め込みを元のデータと共に格納、インデックス作成、クエリを実行できます。つまり、データベース内の各ドキュメントに高次元ベクトルと従来のスキーマフリー データを含めることができます。 ベクトル埋め込みとそれらが表す元のデータを一緒に保存すると、マルチモーダル データ操作が向上し、データの一貫性、スケール、パフォーマンスが向上します。 また、データ管理、AI アプリケーション アーキテクチャ、ベクトルベースの操作の効率も簡素化されます。

Azure Cosmos DB for NoSQL でベクトル検索を有効にする

Azure Cosmos DB で Vector Search for NoSQL API 機能を有効にするには、 Azure portal または Azure コマンド ライン インターフェイス (Azure CLI) を使用します。

Azure portal の [ 機能] の下に表示されます。

Azure Cosmos DB NoSQL データベースの [機能] ページのスクリーンショットが表示され、機能一覧で [Vector Search for NoSQL API] 機能が強調表示されています。

機能の説明を確認したら、 Vector Search for NoSQL API 機能を有効にして、アカウントで使用できるようにします。

[Vector Search for NoSQL API enrollment]\(NoSQL API 登録のベクター検索\) ダイアログのスクリーンショット。

または、次のコマンドを実行して、Azure CLI を使用してベクトル検索を有効にすることもできます。

az cosmosdb update \
 --resource-group <resource-group-name> \
 --name <cosmos-db-account-name> \
 --capabilities EnableNoSQLVectorSearch

コンテナー ベクトル ポリシーを定義する

Azure Cosmos DB for NoSQL アカウントでベクトル検索機能が有効になったら、ベクトルを格納するコンテナーのベクトル埋め込みポリシーを定義する必要があります。 このポリシーは、VectorDistance システム関数でベクトル プロパティを処理する方法を Azure Cosmos DB クエリ エンジンに通知します。 また、ベクトル インデックス作成ポリシーを指定した場合には、そのポリシーに必要な詳細情報も指示します。

📝 ベクトル検索機能は現在、既存のコンテナーではサポートされていないため、新しいコンテナーを作成し、コンテナーの作成時にコンテナー レベルのベクトル埋め込みポリシーとベクトル インデックス作成ポリシーを指定する必要があります。

コンテナー ベクトル ポリシーには、次の情報が含まれています。

  • path: ベクトル埋め込みを含むプロパティのパス。
  • datatype: ベクトル内の要素の型。 既定値は Float32です。
  • dimensions: このプロパティは、各ベクトルの次元数または長さであり、埋め込みの作成に使用されるモデルによって駆動されます。
  • distanceFunction: ベクトル間の距離または類似性を計算するために使用される手法。 使用できるオプションは、ユークリッド (既定)、コサイン、ドット積です。

ベクトル検索では、距離関数によって、多次元空間内での類似ベクトルまたは異なるベクトルの数が決まります。 一般的な方法としては、ユークリッド距離、コサイン類似性、マンハッタン距離などがあり、それぞれが独自の方法でベクトルを比較します。

ベクトル インデックス作成を使用してベクトル検索の効率を向上させる

Azure Cosmos DB for NoSQL では、格納されている埋め込みの上にベクトル検索インデックスを作成できます。 ベクトル検索インデックスは、潜在的な空間内のベクトルのコンテナーであり、その中に含まれるすべてのデータ (ベクトル) に対するセマンティック類似性検索を可能にします。 ベクトル インデックスは、高次元ベクトル データに特化されており、Azure Cosmos DB for NoSQL の VectorDistance システム関数を使用してベクトル検索の実行効率を向上させます。 次の種類のベクトル インデックス ポリシーがサポートされています。

タイプ 説明 最大ディメンション
flat 他のインデックス プロパティと同じインデックスにベクトルを格納します。 505
quantizedFlat インデックスに格納する前にベクトルを量子化 (圧縮) します。 このポリシーにより、精度が若干犠牲になりますが、待機時間とスループットが向上します。 4096
diskANN 高速かつ効率的な近似検索のために、DiskANN に基づいてインデックスを作成します。 4096

ベクトル インデックスを使用すると、ベクトル検索によって待機時間が短縮され、スループットが向上し、RU 消費量が削減されます。 ベクトル インデックス検索では、インデックスから意味的に関連する情報を取得する事前処理ステップを実行でき、その情報を使用して LLM (大規模言語モデル) が推論するための事実に基づいた正確なプロンプトを生成できます。 このプロセスにより、LLM に知識の拡張とドメイン固有の焦点を与えることができます。 ベクトル検索インデックスでは、ベクトル フィールドが受信メッセージと意味的に似ているドキュメントの一覧が返されます。 同じドキュメント内に格納されている元のテキストは、LLM のプロンプトを補強し、LLM はそれを使用して提供された情報に基づいて要求元に応答します。