正確な最近傍 (ENN) ベクトル検索では、指定した距離メトリックに基づいて最も近い近傍の取得を保証するために、すべてのインデックス付きベクトルに対して包括的な距離計算が実行されます。ENN は、追加コストなしですべてのクラスター 層でサポートされており、登録は必要ありません。
正確な最近傍 (ENN) ベクトル検索とは何か
ENN ベクター検索では、クエリ ベクターとデータセット内のすべてのベクターの包括的な比較が行われます。 この方法により、次の内容が保証されます。
- 保証された精度: 選択した距離メトリック (ユークリッド距離、コサイン類似性など) に従って、真の最も近い近傍を取得します。
- 計算負荷の増加: その完全な性質により、ENN はより多くのリソースを消費し、特に大規模なデータセットではクエリ時間が長くなる可能性があります。
逆に、近似最近傍 (ANN) 検索では、階層ナビゲーション可能 Small World (HNSW)、反転ファイル (IVF)、DiskANN などの インデックス作成 手法を使用して検索を高速化します。 ANN は応答時間の短縮とスケーラビリティの向上を提供しますが、常に最も近い絶対近隣を返すわけではありません。
ENN ベクター検索を使用する必要がある場合
次のシナリオでは、ENN ベクター検索の使用を検討してください。
- 高精度要件:機密性の高いレコメンデーションシステムや科学的研究など、正確なトップkの結果が重要なアプリケーションの場合、ENNは最大限の精度を保証します。
- 管理可能なデータセット サイズ: より小さなデータセットを処理する場合、またはパフォーマンスの制約が厳しくない場合は、ENN の完全な性質が実現可能です。
- 低選択度フィルタリング: データのサブセットが比較的小さいフィルターを適用する場合、ENN はこのサブセット内で包括的な比較を効率的に実行できます。
たとえば、テナントごとに分類された数百万のドキュメントを含む大規模なデータセットでは、特定のテナント内でベクター検索を実行すると (数千のベクターで構成されます)、ENN によって効果的に処理できます。
ENN ベクター検索を使用する方法
ENN ベクター検索を使用する前に、関連するパスの ベクター インデックス (IVF、HNSW、DiskANN など) が作成されていることを確認します。 ベクター インデックスが既に存在する場合は、検索メソッドを切り替えるときに再構築する必要はありません。ENN はクエリの実行中にこれらのインデックスとは独立して動作するためです。
ENN を有効にするには、クエリで "exact": true
を設定します。 例えば次が挙げられます。
{
"$search": {
"cosmosSearch": {
"path": "myVectorField",
"exact": true, // Enables ENN
"query": [0.2, 0.4, 0.9], // Query vector
"k": 10, // Number of results to return
"filter": {
"tenant_id": { "$eq": "tenant123" }
}
}
}
}
ENN ベクター検索とフィルターの組み合わせ
ENN ベクター検索を属性フィルターまたは地理空間フィルターと組み合わせて、検索の範囲をデータの特定のサブセットに絞り込むことができます。 フィルターを適用した後、検索エンジンはフィルター選択されたサブセットに対して包括的な距離計算を実行し、フィルター条件を満たす最も近い上位 k の近傍を返します。
ユース ケース シナリオ
クライアントは約 300,000 個のドキュメントのコレクションを保持し、それぞれにベクター フィールド、 tenant_id
フィールド (数千のテナントを表す)、およびその他の属性が含まれています。 tenant_id
フィルターを使用した ANN ベクター検索の速度が遅いことが確認されました。
同じフィルターを維持しながら ENN Vector Search に切り替えることで、クライアントは クエリ パフォーマンスを 50% 向上 させ、 100% のリコール精度を達成しました。
よく寄せられる質問
ENN は大規模化した場合にどのように性能を発揮するのか?
- 大規模なデータセットのパフォーマンス: すべてのベクターを評価する必要があるため、選択的なフィルター処理を行わないと、大規模なデータセットの場合、ENN が遅くなる可能性があります。
- 計算コストの増加: ENN では、クエリ ベクターをすべての (またはフィルター処理された) ベクターと比較して、大規模なデータセットのリソース使用量が増加します。
ANN と ENN: 違いは何ですか?
- Exact Nearest Neighbor (ENN) Vector Search は、クエリ ベクターをすべてのインデックス付きベクターと完全に比較することで、100% の精度を提供します。正確な結果を必要とするアプリケーションや、より小さなデータセットやフィルター処理されたサブセットを処理する場合に適しています。
- Approximate Nearest Neighbor (ANN) Search では、特殊なインデックス作成手法を利用して、大規模なデータセットに対して高速な応答とスケーラビリティを提供しますが、精度がわずかに損なわれる可能性があります。