AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

クエリ結果の精度を測定する方法

同じクエリ条件を使用して、DN 検索の結果が量子化ベクトルに対する ENN 検索の結果とどの程度一致しているかを評価することで、 MongoDB ベクトル検索クエリの精度を測定できます。つまり、ANN 検索の結果と ENN 検索の結果を比較し、ANN 検索結果が ENN 検索の結果に最近傍を含む頻度を測定できます。

次のいずれかの場合は、結果の精度を測定することをお勧めします。

  • 量子化されたベクトル

  • 多数のベクトル

  • 低次元ベクトル

このページの例を試すには、次のものが必要です。

  • オプションでサンプルデータセット を持つクラスター。

$vectorSearchクエリ結果の精度を評価するには、次の操作を行う必要があります。

  1. MongoDB ベクトル検索インデックスは、ベクトルフィールドと、データを事前にフィルタリングしたい他のフィールドに作成します。

    ベクトルのストレージとクエリの速度を向上させるために、量子化されたベクトルを使用することをお勧めします。 量子化されたベクトルがない場合は、 vector 型フィールド のインデックスを作成するときに自動量化を有効にできます。

  2. EXN クエリとそれに続く ANN クエリを作成して実行します。

  3. Ann クエリの結果と ENN クエリの結果を比較して、結果の類似性と相違を評価します。

このセクションでは、sample_mflix.embedded_moviesコレクション内のデータに対して前述の 3 手順を実行する方法を示します。 サンプルデータセットを使用しない場合は、自分のデータに対して手順を実行できます。

このセクションでは、 MongoDB ベクトル検索 を実行中ためのMongoDB Vector ベクトル検索インデックスを作成する方法を説明します。

例のENN および ANN クエリ結果の上位 9 ドキュメントは同じであり、スコアも同じです。これは、クエリの上位結果の類似性が高いことを示しています。 ただし、ENT クエリ結果と ANN クエリ結果の 10 番目のドキュメントは異なります。これは、正確な最近傍検索と近似近傍検索のわずかな違いを反映します。

ENN 検索は、可能なすべての候補を検索し、類似性スコアに基づいてクエリに最も近い一致を返します。Ann 検索では近似値を使用して検索を高速化するため、ドキュメントのスコアが変更される可能性があります。ANN numCandidatesクエリで の値を増やすと、結果は ENN クエリ結果とより一致します。ただし、これにより追加の計算リソースが消費され、クエリ速度が低下する可能性があります。 結果の 10 番目のドキュメントは、精度と速度の間のトレードオフを反映します。

ERN フィールドの真実の結果を量的に評価した後、同じ方法で一連の100 クエリをテストし、結果セット間の「ジャーカード類似性」を計算することをお勧めします。Jaccard 類似性は、2 つのセット間の共通部分、つまり重複する項目をセットの合計サイズで割ることで計算できます。 これにより、量子化されたベクトルに対して実行されるクエリを含む、ANN クエリの再現率パフォーマンスが向上します。

ENN ANN numCandidatesのクエリ結果の間に大きな差がある場合は、アプリケーションの精度と速度の理想的なバランスをとるために、 の値を調整することをお勧めします。

理想的な結果を持つ構造化されたクエリリストには、近似最近傍探索クエリまたは厳密最近傍探索グラウンドトゥルース値に対して判断リストを使用することをお勧めします。厳密最近傍探索クエリの結果を基準判定リストとして使用し、この判定リストに対して近似最近傍探索クエリの結果を評価して、再現率、重複率、パフォーマンスを測定します。判断リストは、近似最近傍探索クエリが厳密最近傍探索ベースラインと比較して、望ましい精度または再現率のしきい値を満たしているかどうかを評価する手段を提供します。LLM を使用してクエリ例を生成します。

$vectorSearch の結果の精度を向上させるには、クエリに対する意味的な関連性によって再ランクすることができます。再ランクにより、最も関連性の高いドキュメントに優先順位を付けるように結果の順序が変更されます。再ランカー $rerank$vectorSearchモデルを使用して結果の順序を変更するには、 ステージの後に ステージを適用できます。

詳細については、「$rerank 集計パイプライン ステージ」を参照してください。