ScaNN インデックスは、木量子化ベースのインデックスを使用します。このインデックスでは、量子化(ハッシュ化)関数とともに検索ツリーを学習します。クエリを実行すると、検索ツリーを使用して検索空間が枝刈りされ、量子化を使用してインデックス サイズが圧縮されます。この枝刈りにより、クエリベクトルとデータベース ベクトルの類似性(距離)のスコアリングが高速化されます。
高い秒間クエリ数(QPS)と最近傍クエリでの高い再現率を両立するには、データとクエリに最も適した方法で ScaNN インデックスのツリーをパーティショニングする必要があります。
高次元エンベディング モデルは、より低い次元数でも多くの情報を保持できます。たとえば、エンベディングの次元の 20% で情報の 90% を保持できます。このようなデータセットを高速化するために、AlloyDB AI ScaNN インデックスは、インデックスに登録されたベクトルに主成分分析(PCA)を使用して、次元削減を自動的に実行します。これにより、ベクトル検索の CPU とメモリの使用量がさらに削減されます。詳細については、scann.enable_pca
をご覧ください。
次元削減によってインデックスで再現率がわずかに低下するため、AlloyDB AI ScaNN インデックスは、インデックスから PCA 変換された多数のベクトル候補を最初のランキング ステップで取得することで、再現率の低下を補正します。次に、ScaNN は PCA 変換されたベクトル候補を元のベクトルで再ランキングします。詳細については、scann.pre_reordering_num_neighbors
をご覧ください。
次のステップ
- ScaNN インデックスのチューニングに関するベスト プラクティスを確認する。
- AlloyDB AI を使用してベクトル エンベディングを使ってみる
- AlloyDB AI ScaNN インデックスの詳細を確認する。