vector フィールド型とvectorSearch 演算子はプレビュー機能として利用可能です。機能および関連するドキュメントは、プレビュー期間中にいつでも変更される可能性があります。詳細については、「プレビュー機能」を参照してください。vector 型を使用してベクトル埋め込みをインデックスできます。ベクトル フィールドには、以下のいずれかの型の数値の配列を含める必要があります。
BSON
int32、int64、またはdoubleデータ型BSON
doubleデータ型
vectorSearch 演算子を、$vectorSearch ステージと同様に、$search 集計パイプラインで、vector 型としてインデックス付けされたフィールドをクエリするために使用できます。
vector 型の制限
次の制限が適用されます。
オブジェクトの配列を持つフィールド(MongoDB Search
embeddedDocuments型)をvector型としてインデックスすることはできません。vector型を含むインデックス定義では、storedSource をtrueに設定できません。代わりに、includeを使用してmongotに保存するフィールドを指定するか、excludeを使用してvector型のフィールドをストレージから除外してください。$vectorSearchステージを使用して、vector型としてインデックス付けされたフィールドをクエリすることはできません。MongoDB Search Playground では、フィールドを
vectorタイプとしてインデックスできます。
vector型のインデックスを定義する
フィールド プロパティを構成するvector
フィールド プロパティを構成するvector
MongoDB Search vector 型は次のパラメータを取ります。
オプション | タイプ | 必要性 | 説明 |
|---|---|---|---|
|
| 必須 | このフィールド型を識別する、人間が判読できるラベル。値は |
| Int | 必須 | MongoDB Search がインデックス時とクエリ時に強制するベクトルの次元数。このフィールドは 量子化ベクトルまたは BinData のインデックス作成には、次のいずれかの値を指定できます。
選択した埋め込みモデルによってベクトル埋め込みの次元数が決まります。出力の次元数に関して複数のオプションを持つモデルもあります。詳細については、「埋め込みを作成する方法の選択」を参照してください。 |
| 文字列 | 必須 | 上位 K 近傍の検索に使用するベクトル類似度関数。このフィールドは 次のいずれかの値を指定できます。
詳細については、「 類似性関数について 」を参照してください。 |
| 文字列 | 任意 | ベクトルの自動ベクトル量子化のタイプ。埋め込みが 次のいずれかの値を指定できます。
詳細については、「 ベクトル量子化 」を参照してください。 |
| オブジェクト | 任意 | Hierarchical Navigable Small Worldsグラフの構築に使用するパラメーター。省略した場合、は 重要:これはプレビュー機能として利用可能です。デフォルト値を変更すると、MongoDB Search インデックスとクエリに悪影響を与える可能性があります。 |
hnswOptions.maxEdges | Int | 任意 | Hierarchical Navigable Small Worldsグラフでノードが持つことができるエッジ(または接続)の最大数。値は、両端を含む 数値が高いほど、グラフの接続が強化されるため、再現率(検索結果の精度)が向上します。ただし、これにより各グラフ ノードで評価すべき近傍ノードの数が増加するため、クエリ時間およびインデックス作成時間も増加します。また、階層的ナビゲーション可能なスモール ワールドグラフにおいて、各接続ごとに追加ノードを格納するためのメモリも多く必要になります。 |
hnswOptions.numEdgeCandidates | Int | 任意 | クエリ時の 数値が大きいほど、高品質な接続を持つグラフが提供され、検索品質(リコール)が向上しますが、クエリのレイテンシが増加する可能性もあります。 |
vector型の例を試す
以下のインデックス定義例では、サンプルデータのsample_mflix.embedded_moviesコレクションを使用します。コレクションを読み込んだ後は、以下の例を使用して、クエリを実行するためにplot_embedding_voyage_3_large フィールドをvector 型としてインデックス化できます。MongoDB Search の演算子あるvectorSearchを使用します。このインデックスに対して実行するサンプルクエリについては、こちらの例を参照してください。
このインデックス定義は、動的にインデックス可能なすべてのフィールドがデフォルトtypeSetを用いて自動的にインデックスされ、さらにplot_embedding_voyage_3_large フィールドが以下の設定で vector 型としてインデックスされます。
2048次元数dotProduct類似関数scalar量子化