Présentation des performances des requêtes vectorielles ScaNN

Sélectionnez une version de la documentation :

Cette page présente un aperçu conceptuel de l'amélioration des performances des requêtes vectorielles avec l'index ScaNN.

L'index ScaNN utilise l'indexation basée sur la quantification d'arbres. Dans les techniques de quantification arborescente, les index apprennent un arbre de recherche avec une fonction de quantification (ou de 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 est utilisée pour compresser la taille de l'index. Cette opération d'élagage accélère la notation 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 voisins les plus proches, vous devez partitionner l'arborescence de votre index ScaNN de la manière la plus appropriée à 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 dimension à l'aide de l'analyse en composantes principales (voir scann.enable_pca below) 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 dimension 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).

Étapes suivantes