Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

ベクトル検索のためのベクトル埋め込みのインデックス作成方法

項目一覧

  • knnVector 型の制限を確認する
  • knnVector 型のインデックスを定義する
  • knnVectorフィールド プロパティを構成する
  • knnVector 型の例を試す

knnVector 型を使用してベクトル埋め込みをインデックスできます。ベクトル フィールドは、次の型の 番号の配列として表すことができます。

  • BSON int32knnBeta演算子を使用してクエリを実行するための、 int64 、またはdouble データ型。

  • BSON double $vectorSearch ステージを使用してクエリを行うためのデータ型。

現在非推奨となっている knnBeta 演算子と、集計パイプラインの $vectorSearch ステージを使用して、 knnVector としてインデックスのフィールドをクエリできます。

注意

Atlas UI の Atlas Search Visual Editor を使用して、knnVector 型のフィールドを設定することはできません。代わりに、Atlas Search JSON Editor を使用して、knnVector 型のフィールドを構成します。

Atlas Vector Search は、Atlas CLI を使用して作成したローカル Atlas 配置で使用することもできます。 詳細については、「 Atlas 配置のローカル配置の作成 」を参照してください。

ドキュメントの配列内のフィールド、またはオブジェクトの配列内のフィールド(Atlas Search embeddedDocuments 型)を knnVector 型としてインデックスすることはできません。

以下は、knnVector 型の JSON 構文です。デフォルトのインデックス定義を以下のように置き換えます。フィールドの詳細については、「フィールド プロパティ」を参照してください。

1{
2 "mappings": {
3 "name": "<index-name>",
4 "dynamic": true|false,
5 "fields": {
6 "<field-name>": {
7 "type": "knnVector",
8 "dimensions": <number-of-dimensions>,
9 "similarity": "euclidean | cosine | dotProduct"
10 }
11 }
12 }
13}

knnVector 型には、次のオプションがあります。

オプション
タイプ
必要性
目的
type
string
必須
このフィールド型を識別する、人間が判読できるラベル。値はknnVectorでなければなりません。
dimensions
整数
必須
Atlas Search がインデックス作成時およびクエリ時に強制されるベクトル次元の数。この値は 4096 より大きくすることはできません。
similarity
string
必須

上位 K 近傍の検索に使用するベクトル類似度関数。値は次のいずれかになります。

  • euclidean - ベクトルの端点間の距離を測定します。これにより、さまざまな次元に基づいて類似性を測定できます。詳しくは、 Euclidean を参照してください。

  • cosine - ベクトル間の角度に基づいて類似性を測定します。これにより、大きさによってスケールされない類似性を測定できます。cosine では絶対値ゼロのベクトルは使用できません。コサイン類似度を測定するには、ベクトルを正規化し、代わりに dotProduct を使用することをお勧めします。詳しくは、「コサイン」を参照してください。

  • dotProduct - cosineと同様の類似性を測定しますが、ベクトルの大きさを考慮します。 これにより、角度と大きさの両方に基づいて類似性を効率的に測定できます。 詳しくは、「 ドット積 」を参照してください。

    大きさを正規化すると、類似性の測定において cosinedotProduct はほぼ同じになります。

sample_mflix.embedded_movies コレクションの次のインデックス定義は、コレクション内のすべての動的にインデックス可能なフィールドを動的にインデックスされ、plot_embedding フィールドを knnVector 型として静的にインデックスされます。plot_embedding フィールドには、OpenAI の text-embedding-ada-002 埋め込みモデルを使用して作成された埋め込みが含まれます。インデックス定義では、1536 ベクトル次元を指定し、 euclidean を使用して類似性を測定します。

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "knnVector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

サンプル データをクラスターにロードし、このコレクションに対して前述の Atlas Search インデックスを作成すると、このコレクションに対して $vectorSearch クエリを実行できます。実行できるサンプル クエリの詳細については、「$vectorSearch の例」を参照してください。

戻る

geo