Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

MongoDB ベクトル検索でのビューの使用

ビューでMongoDB ベクトル検索インデックスを作成して、ドキュメントとコレクションを変換することで、コレクションの部分的なインデックス、互換性のないデータ型やデータモデルのサポートなどを行うことができます。

次の例では、付属の sample_mflix サンプルデータベースを使用します。

注意

曖昧さ回避

このページでは標準ビューについて説明します。オンデマンドのマテリアライズドビューの詳細については、「オンデマンドのマテリアライズドビュー」を参照してください。

ビュー タイプの違いについては「オンデマンドのマテリアライズドビューとの比較」を参照してください。

MongoDB 8.0 以降を使用する必要があります。

ビューを編集するには、ユーザー管理者ロールを持ち、collMod データベース コマンドを使用する必要があります。

  • MongoDB ベクトル検索 は、次のステージを持つビューをサポートしています。

  • インデックス名は、ソース コレクションとそのすべてのビューにわたって一意である必要があります。

  • MongoDB Vector Search doesn't support view definitions with operators that produce dynamic results, such as the $$USER_ROLES system variable and the $rand aggregation operator.

  • MongoDB ベクトル検索クエリでは、 ソースコレクションに現れる元のドキュメントが返されます。

ビューを作成するには、createCollection の権限が必要です。

ドキュメントをフィルターして、コレクションに部分的にインデックスを付けることができます。次の例では、sample_mflix.embedded_movies コレクションにビューを作成し、ベクトル埋め込みフィールドを持つドキュメントのみがインデックスされるようにします。

非常に複雑なビュー変換では、インデックスの作成とクエリ時間が増加する可能性があります。これは、インデックス作成(最初の同期と 定常状態のレプリケーション)中にoplogエントリをフィルタリングして変換するとき、およびクエリ時に返されたドキュメントにそれらの変換を適用するときに、mongodはビュー定義を読み取る必要があるためです。

Atlas で余計なレプリケーション負荷を回避するために、 マテリアライズドビューの作成を検討してください。ビュー変換によるクエリレイテンシを回避するために、ソースコレクションを直接クエリすることもできます。

インデックスは次のシナリオで FAILED ステータスに変更されます。

  • MongoDB ベクトル検索と互換性のないビューにインデックスを作成する場合

  • MongoDB ベクトル検索 の互換性要件を満たさない方法でビューを編集する。

  • ビューのソース コレクションを削除または変更します。

    たとえば、1 つのビューが別のビュー上に作成され、親ビューのソースを別のコレクションに変更した場合です。

    注意

    この制限は、ビューが他のビューの子である場合にも適用されます。たとえば、すべての子が由来するソース コレクションを変更または削除することはできません。

インデックスは次のシナリオで STALE ステータスに変更されます。

警告

ビューで定義された集計パイプラインがコレクション内のドキュメントと互換性がない場合、検索レプリケーションは失敗します。たとえば、$toDouble 式が配列を含むドキュメント フィールドに対して操作されると、レプリケーションは失敗します。ビューがコレクション内のすべてのドキュメントでエラーなく動作することを確認してください。

  • インデックスが READY のときにビュー定義によって集計が失敗した場合、インデックスはSTALE になります。ドキュメントを解決するかビュー定義を変更して失敗しないようにすると、インデックスはREADY に戻ります。STALE の場合でも、インデックスは引き続きクエリ可能です。インデックスがoplogから削除されると、インデックスの再構築がトリガーされます。

  • インデックスが BUILDING の時にビュー定義によって集計パイプラインに障害が発生した場合、インデックス構築はそのドキュメントが修正されるまで停止します。ドキュメントを解決するか、ビュー定義を変更すると、インデックスは READY に戻り、失敗しなくなります。

Atlas UIのインデックスステータスの詳細ページでインデックスステータスを表示できます。

このエラーは、8.1 より前のバージョンのMongoDBを使用してビューをクエリすると表示されます。

  • 8.0 より前のバージョンのMongoDBを使用している場合は、ビューを直接クエリするために 8.1+ にアップグレードすることをお勧めします。ソースコレクションをクエリするには、 8.0 にアップグレードします。

  • MongoDB 8.0 を使用する場合は、 ソースコレクションに対してビューインデックスをクエリする必要があります。例、ビューではなくコレクションで .aggregate() を実行します。

ビューでMongoDB ベクトル検索インデックスを作成すると、mongot プロセスは通常のコレクションでMongoDB ベクトル検索インデックスを作成する場合と同じタスクを実行します。mongot プロセス:

  1. コレクションのインデックス定義 のルールに基づいてMongoDB ベクトル検索インデックスを作成します。

  2. MongoDB ベクトル検索インデックスを定義したコレクションのドキュメントとインデックスの現在の状態に関する 変更ストリーム をモニターします。

  3. MongoDB ベクトル検索クエリを処理し、一致するドキュメントのドキュメントID とその他の検索メタデータを mongod に返します。その後、ドキュメント全体が検索され、その結果がクライアントに返されます。

ビューでMongoDB ベクトル検索インデックスを作成すると、ステップ 1 と 2 中にビュー定義が適用され、変換されたドキュメントは検索インデックス定義に基づいてインデックス化され、ディスクに保存されます。

ビューの詳細については、「ビュー」を参照してください。

ビューにMongoDB Searchインデックスを作成するには、 MongoDB Search でビューを使用する を参照してください。

戻る

クエリ結果の説明

ルール バッジを取得する

「Vector Search の基礎」を無料で習得できます。

詳細

項目一覧