ベクトル索引を使用した近似類似検索の理解

大きいベクトル空間で検索速度を高速化するには、ベクトル索引を使用して近似類似検索を使用できます。

類似検索にベクトル索引を使用することは、近似検索と呼ばれます。近似検索ではベクトル索引が使用され、パフォーマンスのために精度がトレードオフされます。

大きいベクトル空間での近似検索

検索品質が最優先で検索速度があまり重要でない場合は、完全類似検索が適切なオプションです。検索速度は、小さいベクトル空間や、高パフォーマンスのサーバーで検索を実行する場合には関係ありません。ただし、MLアルゴリズムでは、多くの場合、何十億もの埋込みを持つベクトル空間で類似検索が実行されます。たとえば、Deep1Bデータセットには、畳み込みニューラル・ネットワーク(CNN)によって生成された1Bイメージが含まれています。コーパス内のすべてのベクトルを使用してベクトル距離を計算し、Top-K一致を100%の精度で検出すると非常に遅くなります。

幸いなことに、ベクトル索引を使用して実行できる近似検索には多くのタイプがあります。ベクトル索引の精度は低くなりますが、消費するリソースは少なくなり、より効率的になる場合があります。従来のデータベース索引とは異なり、ベクトル索引は、ヒューリスティック・ベースのアルゴリズムを使用して作成および検索を実行します。

100%の精度はヒューリスティックでは保証できないため、ベクトル索引検索ではターゲット精度が使用されます。内部的には、索引作成と索引検索の両方に使用されるアルゴリズムで、可能なかぎり正確になるように最善が尽くされます。ただし、ターゲット精度を指定することによって、これらのアルゴリズムに影響を与えることができます。索引の作成時または検索時に、使用する索引タイプに応じて、パーセント値を指定するか、内部パラメータ値を指定することによって、デフォルト以外のターゲット精度値を指定できます。

ターゲット精度の例

ターゲットの精度の意味をよりよく理解するには、次の図を参照してください。最初の図は、各ベクトルが小さいクロスで表されるベクトル空間を示しています。赤色のベクトルは問合せベクトルを表しています。



そのコンテキストで上位5件の完全類似検索を実行すると、2番目の図に示す5つのベクトルが返されます。



ベクトル索引の作成方法に応じて、そのコンテキストで上位5位の近似類似検索を実行すると、3番目の図に示す5つのベクトルが返される可能性があります。これは、索引作成プロセスでヒューリスティックが使用されているためです。したがって、ベクトル索引を検索すると、完全検索と比較して異なる結果になる可能性があります。



ご覧のように、取得されたベクトルが異なっており、この場合は1つのベクトルが異なります。つまり、完全検索と比較して、類似検索では5件のベクトルのうち4件が正しく取得されたということです。類似検索の精度は、完全類似検索と比較して80%です。4番目の図にこれを示します。



ベクトル索引が近似検索構造であるため、上位Kの類似検索で返される行がK行未満である可能性があります。

ベクトル索引の設定方法の詳細は、「ベクトル索引の作成」を参照してください。