ベクトル検索のためのベクトル埋め込みのインデックス作成方法
knnVector
型を使用してベクトル埋め込みをインデックスできます。ベクトル フィールドは、次の型の 番号の配列として表すことができます。
BSON
int32
knnBeta演算子を使用してクエリを実行するための、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 配置のローカル配置の作成 」を参照してください。
knnVector
型の制限を確認する
ドキュメントの配列内のフィールド、またはオブジェクトの配列内のフィールド(Atlas Search embeddedDocuments 型)を knnVector
型としてインデックスすることはできません。
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
フィールド プロパティを構成する
knnVector
型には、次のオプションがあります。
オプション | タイプ | 必要性 | 目的 |
---|---|---|---|
type | string | 必須 | このフィールド型を識別する、人間が判読できるラベル。値は knnVector でなければなりません。 |
dimensions | 整数 | 必須 | Atlas Search がインデックス作成時およびクエリ時に強制されるベクトル次元の数。この値は 4096 より大きくすることはできません。 |
similarity | string | 必須 | 上位 K 近傍の検索に使用するベクトル類似度関数。値は次のいずれかになります。
|
knnVector
型の例を試す
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 の例」を参照してください。