Docs Menu
Docs Home
/ /

ベクトルフィールドのインデックス方法

vector型を使用してベクトル埋め込みをインデックスできます。ベクトルフィールドには、次の型の 番号の配列が含まれている必要があります。

  • BSON int32int64、または double データ型

  • BSON double データ型

集計パイプラインでは、 $searchステージと同様に$vectorSearch vectorSearch 演算子を使用して、vector タイプとしてインデックス作成されたフィールドをクエリできます。

次の制限が適用されます。

  • オブジェクトの配列を含むフィールド( MongoDB Search embeddedDocuments 型)を vector 型としてインデックスことはできません。

  • タイプを含むインデックス定義で、 storedSource truevectorincludemongotexcludevectorを に設定することはできません。代わりに、 を使用して に保存するフィールドを指定するか、 を使用して 型フィールドをストレージから除外します。

  • $vectorSearchステージを使用してvector タイプとしてインデックス作成されたフィールドをクエリすることはできません。

MongoDB Search vector 型は次のパラメータを取ります。

オプション
タイプ
必要性
説明

type

vector

必須

このフィールド型を識別する、人間が判読できるラベル。値はvectorでなければなりません。

numDimensions

Int

必須

MongoDB Search がインデックス作成時およびクエリ時に強制されるベクトル次元の数。このフィールドはvector タイプのフィールドにのみ設定できます。 8192 以下の値を指定する必要があります。

量子化ベクトルまたは BinData のインデックス作成には、次のいずれかの値を指定できます。

  • 1 取り込み用の int8 ベクトルの場合は 8192

  • 取り込み用の int1 ベクトルに対する 8 の複数形。

  • 1 自動スカラー量子化の場合は binData(float32) ベクトルは 8192 に、array(float32) ベクトルは

  • 自動バイナリ量子化用の binData(float32) ベクトルと array(float32) ベクトルの 8 の倍数。

選択した埋め込みモデルによってベクトル埋め込みの次元数が決まります。出力の次元数に関して複数のオプションを持つモデルもあります。詳細については、「埋め込みを作成する方法の選択」を参照してください。

similarity

文字列

必須

上位 K 近傍の検索に使用するベクトル類似度関数。このフィールドはvector タイプのフィールドにのみ設定できます。

次のいずれかの値を指定できます。

  • euclidean - ベクトルの端点間の距離を測定します。

  • cosine - ベクトル間の角度に基づいて類似性を測定します。

  • dotProduct - は cosine と同様の類似性を測定しますが、ベクトルの大きさを考慮します。

詳細については、「 類似性関数について 」を参照してください。

quantization

文字列

任意

ベクトルの自動ベクトル量子化のタイプ。埋め込みが float または double ベクトルである場合にのみ、この設定を使用してください。

次のいずれかの値を指定できます。

  • none -ベクトル埋め込みの自動量子化がないことを示します。 取り込み用に事前に量子化されたベクトルがある場合は、この設定を使用します。 省略した場合、これはデフォルト値になります。

  • scalar - 値を 1 バイト整数に変換するスカラー量子化を示します。

  • binary - 値を単一ビットに変換する バイナリ量子化を示します。この値を使用するには、numDimensions は 8 の倍数である必要があります。

    精度が重要な場合は、binary の代わりに none または scalar を選択します。

詳細については、「 ベクトル量子化 」を参照してください。

hnswOptions

オブジェクト

任意

Hierarchical Navigable Small Worldsグラフの構築に使用するパラメーター。省略した場合、は maxEdges パラメーターと numEdgeCandidates パラメーターにデフォルト値を使用します。

重要: これはプレビュー機能として利用できます。デフォルト値を変更すると、 MongoDB Search のインデックスとクエリに悪影響を影響可能性があります。

hnswOptions.
maxEdges

Int

任意

Hierarchical Navigable Small Worldsグラフでノードが持つことができるエッジ(または接続)の最大数。値は、両端を含む 16 から 64 までです。省略した場合、デフォルトは 16 になります。例、 の値が 16 の場合、各ノードはHierarchical Navigable Small Worldsグラフのレイヤーに最大 60 個の出力エッジを持つことができます。

数値が大きいほど、グラフの接続がより適切になるため、再現率(検索結果の精度)が向上します。ただし、グラフノードごとに評価する近傍の数を増やすことでクエリとインデックスの作成時間も増加するため、 Hierarchical Navigable Small Worldsグラフの各接続の追加ノードを保存するにはより多くのメモリが必要になります。

hnswOptions.
numEdgeCandidates

Int

任意

クエリ時の numCandidates と同様に、このパラメータは、新しいノードに接続する上で最も近い隣接ノードを見つけるため、評価するノードの最大数を制御します。値は、100 から 3200 の範囲で、両端を含みます。省略した場合、デフォルトは 100 になります。

数値が大きいほど接続が高品質のグラフが提供されるため、検索の品質(再現率)は向上しますが、 クエリレイテンシも増加する可能性があります。

次のインデックス定義の例では、サンプルデータのsample_mflix.embedded_movies コレクションを使用しています。コレクションplot_embedding_voyage_3_large を読み込んだ後、vector vectorSearch( MongoDB検索演算子)を使用してクエリを実行中ために、 例を 型としてインデックスできます。このインデックスに対して実行するサンプルクエリについては、「 例 」を参照してください。

このインデックス定義は、デフォルトの を使用してすべての動的にインデックス可能なフィールドを自動的にインデックス化し、 typeSetplot_embedding_voyage_3_largeフィールドも次の設定でvector タイプとしてインデックス化します。

  • 2048 次元数

  • dotProduct 類似関数

  • scalar 量子化

戻る

uuid

項目一覧