Présentation des performances des requêtes vectorielles ScaNN

Cette page présente une présentation conceptuelle de l'amélioration des performances des requêtes vectorielles avec l'index ScaNN.

L'index ScaNN utilise une indexation basée sur la quantification arborescente. Dans les techniques de quantification arborescente, les index apprennent un arbre de recherche avec une fonction de quantification (ou hachage). Lorsque vous exécutez une requête, l'arborescence de recherche est utilisée pour élaguer l'espace de recherche, tandis que la quantification permet de compresser la taille de l'index. Cette élagage accélère l'évaluation de la similarité (c'est-à-dire de la distance) entre le vecteur de requête et les vecteurs de la base de données.

Pour obtenir à la fois un taux de requêtes par seconde (RPS) élevé et un rappel élevé avec vos requêtes de voisin le plus proche, vous devez partitionner l'arborescence de votre index ScaNN de la manière la plus adaptée à vos données et à vos requêtes.

Une caractéristique commune de la génération actuelle de modèles d'encapsulation haute dimensionnelle est qu'ils peuvent encore conserver une grande partie des informations avec une dimensionnalité beaucoup plus faible. Par exemple, 90% des informations peuvent être conservées avec seulement 20% des dimensions de l'encapsulation. Pour accélérer ces ensembles de données, AlloyDB SCANN effectue automatiquement une réduction des dimensions à l'aide de l'analyse des composants principaux (voir scann.enable_pca ci-dessous) sur les vecteurs indexés, ce qui réduit encore l'utilisation du processeur et de la mémoire pour la recherche vectorielle. Étant donné que la réduction des dimensions entraîne toujours une perte de rappel mineure dans l'index, AlloyDB SCANN compense cette perte par une étape de classement initiale avec un plus grand nombre de candidats de vecteurs PCA de l'index, puis les classe à nouveau en fonction des vecteurs d'origine (voir scann.pre_reordering_num_neighbors).

Étape suivante