Présentation des performances des requêtes vectorielles ScaNN

L'index ScaNN (Scalable Nearest Neighbors) dans AlloyDB for PostgreSQL accélère les requêtes de similarité vectorielle tout en réduisant l'utilisation de la mémoire grâce à l'indexation par quantification arborescente. Dans les techniques de quantification arborescente, les index apprennent une arborescence de recherche avec une fonction de quantification (ou de hachage). Lorsque vous exécutez une requête, l'arborescence de recherche élague l'espace de recherche, tandis que la quantification compresse la taille de l'index, ce qui accélère l'attribution de scores de similarité entre le vecteur de requête et les vecteurs de votre base de données.

Pour obtenir à la fois un taux de requêtes par seconde (RPS) élevé et un rappel élevé pour vos requêtes de voisins les plus proches, vous devez partitionner l'arborescence de votre index ScaNN de la manière la plus appropriée pour vos données et vos requêtes.

Une caractéristique commune de la génération actuelle de modèles d'embedding de grande dimension est qu'ils peuvent encore conserver une grande partie des informations à une dimensionnalité beaucoup plus faible. Par exemple, 90% des informations peuvent être conservées avec seulement 20% des dimensions de l'embedding. Pour accélérer le traitement de ces ensembles de données, AlloyDB ScaNN effectue automatiquement une réduction de la dimensionnalité à l'aide de l'analyse en composantes principales (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 de la dimensionnalité entraîne toujours une légère perte de rappel dans l'index, AlloyDB ScaNN compense cette perte par une étape de classement initiale avec un plus grand nombre de candidats vecteurs PCA de l'index, puis en les reclassant par les vecteurs d'origine (voir scann.pre_reordering_num_neighbors).

Étape suivante