同じクエリ条件を使用して、DN 検索の結果が量子化ベクトルに対する ENN 検索の結果とどの程度一致しているかを評価することで、 MongoDB ベクトル検索クエリの精度を測定できます。つまり、ANN 検索の結果と ENN 検索の結果を比較し、ANN 検索結果が ENN 検索の結果に最近傍を含む頻度を測定できます。
ユースケース
次のいずれかの場合は、結果の精度を測定することをお勧めします。
量子化されたベクトル
多数のベクトル
低次元ベクトル
前提条件
このページの例を試すには、次のものが必要です。
オプションでサンプルデータセット を持つクラスター。
手順
$vectorSearchクエリ結果の精度を評価するには、次の操作を行う必要があります。
MongoDB ベクトル検索インデックスは、ベクトルフィールドと、データを事前にフィルタリングしたい他のフィールドに作成します。
ベクトルのストレージとクエリの速度を向上させるために、量子化されたベクトルを使用することをお勧めします。 量子化されたベクトルがない場合は、
vector型フィールド のインデックスを作成するときに自動量化を有効にできます。EXN クエリとそれに続く ANN クエリを作成して実行します。
Ann クエリの結果と ENN クエリの結果を比較して、結果の類似性と相違を評価します。
このセクションでは、sample_mflix.embedded_moviesコレクション内のデータに対して前述の 3 手順を実行する方法を示します。 サンプルデータセットを使用しない場合は、自分のデータに対して手順を実行できます。
MongoDB ベクトル検索インデックスの作成
このセクションでは、 MongoDB ベクトル検索 を実行中ためのMongoDB Vector ベクトル検索インデックスを作成する方法を説明します。
クエリを実行する
結果を比較する
例のENN および ANN クエリ結果の上位 9 ドキュメントは同じであり、スコアも同じです。これは、クエリの上位結果の類似性が高いことを示しています。 ただし、ENT クエリ結果と ANN クエリ結果の 10 番目のドキュメントは異なります。これは、正確な最近傍検索と近似近傍検索のわずかな違いを反映します。
ENN 検索は、可能なすべての候補を検索し、類似性スコアに基づいてクエリに最も近い一致を返します。 Ann 検索では近似値を使用して検索を高速化するため、ドキュメントのスコアが変更される可能性があります。 Ann クエリで numCandidates の値を増やすと、結果は ENN クエリ結果とより一致します。ただし、これにより追加の計算リソースが消費され、クエリ速度が低下する可能性があります。結果の 10 番目のドキュメントは、精度と速度の間のトレードオフを反映します。
ENN フィールドの真実の結果を量的に評価した後、同じ方法で一連の 100 クエリをテストし、「Java カードの類似性」を計算することをお勧めします。結果セットの間Jaccard 類似性は、2 つのセット間の共通部分、つまり重複する項目をセットの合計サイズで割ることで計算できます。これにより、量子化されたベクトルに対して実行されるクエリを含む、ANN クエリの再現率パフォーマンスが向上します。
If you notice large discrepancies between your ENN and ANN query results, we recommend tuning the numCandidates value to strike an ideal balance between accuracy and speed for your application.
近似最近傍探索クエリまたは厳密最近傍探索のグラウンド トゥルース値に対して理想的な結果を得るために、構造化されたクエリのリストには、ジャッジメントリストを使用することをお勧めします。厳密最近傍探索クエリの結果を基準判定リストとして使用し、この判定リストに対して近似最近傍探索クエリの結果を評価して、再現率、重複率、パフォーマンスを測定します。判断リストは、近似最近傍探索クエリが厳密最近傍探索ベースラインと比較して、望ましい精度または再現率のしきい値を満たしているかどうかを評価する手段を提供します。LLM を使用してクエリ例を生成します。
再ランク付けによる精度の向上
$vectorSearch の結果の精度を向上させるには、クエリに対する意味的な関連性によって再ランクすることができます。再ランクにより、最も関連性の高いドキュメントに優先順位を付けるように結果の順序が変更されます。再ランカー $rerank$vectorSearchモデルを使用して結果の順序を変更するには、 ステージの後に ステージを適用できます。
詳細については、「$rerank 集計パイプライン ステージ」を参照してください。