ScaNN ベクトル クエリのパフォーマンスの概要

このページでは、ScaNN インデックスを使用してベクトル クエリのパフォーマンスを向上させるコンセプトの概要について説明します。

ScaNN インデックスは、木量子化ベースのインデックスを使用します。ツリー量子化手法では、インデックスは量子化(ハッシュ化)関数とともに検索ツリーを学習します。クエリを実行すると、検索空間のプルーニングに検索ツリーが使用され、インデックスサイズの圧縮に量子化が使用されます。このプルーニングにより、クエリベクトルとデータベース ベクトルの類似度(距離)のスコアリングが高速化されます。

秒間クエリ数(QPS)と最近傍クエリの再現率の両方を高くするには、データとクエリに最も適した方法で ScaNN インデックスのツリーをパーティショニングする必要があります。

現在の高次元エンベディング モデルの共通の特徴は、エンベディングの次元の 20% で情報の 90% を保持できることです。このようなデータセットの速度を上げるために、AlloyDB ScaNN は、インデックスに登録されたベクトルに主成分分析(下記の scann.enable_pca を参照)を使用してディメンションの削減を自動的に実行します。これにより、ベクトル検索の CPU とメモリの使用量がさらに削減されます。ディメンションの削減によってインデックスで微小な再現率の低下が発生するため、AlloyDB ScaNN は、インデックスからより多くの PCA ベクトル候補を取得して初期ランキング ステップで補正し、元のベクトルによって再ランキングします(scann.pre_reordering_num_neighbors を参照)。

次のステップ