Choisir un index vectoriel dans AlloyDB AI

En sélectionnant la bonne stratégie de recherche vectorielle et le bon index dans AlloyDB AI, vous pouvez équilibrer la latence des requêtes et la précision de la recherche pour votre charge de travail. Par défaut, AlloyDB for PostgreSQL utilise la recherche exacte des k plus proches voisins (KNN) pour trouver des vecteurs similaires. Lorsque vous créez un index vectoriel, AlloyDB AI utilise la recherche approximative du voisin le plus proche (ANN) pour accélérer les performances des requêtes à grande échelle tout en échangeant une quantité configurable de rappel.

Le rappel mesure l'efficacité avec laquelle une recherche récupère tous les éléments pertinents pour une requête donnée. Supposons, par exemple, que vous disposez de 100 embeddings, chacun représentant une entité dans votre base de données. Vous interrogez vos embeddings avec un vecteur cible et vous le limitez à 10 résultats. Une recherche vectorielle KNN trouve les 10 vecteurs les plus proches exacts à l'aide d'une méthode de calcul par force brute, ce qui donne un rappel de 100 %. AlloyDB AI utilise cette méthode par défaut si aucun index de recherche vectorielle n'est créé ni sélectionné. Lorsque vous créez un index vectoriel dans AlloyDB, il utilise généralement ANN, qui peut partitionner les vecteurs en fonction de leur similarité pour faciliter une récupération plus rapide. Par conséquent, en utilisant ANN, les 10 vecteurs renvoyés dans l'exemple précédent ne sont peut-être pas exactement les 10 vecteurs les plus proches en termes de distance. Si 9 des 10 vecteurs récupérés sont les plus proches de votre vecteur de requête, votre rappel est de 90%. Pour en savoir plus, consultez Mesurer le rappel des requêtes vectorielles.

La latence des requêtes définit la vitesse à laquelle les résultats de recherche sont générés. Par exemple, la latence est calculée en fonction du temps passé sur une recherche pour renvoyer les vecteurs après l'envoi d'une requête.

Choisir votre stratégie de recherche

Lorsque vous effectuez une recherche vectorielle dans AlloyDB, choisissez l'une des stratégies de recherche suivantes :

Stratégie de recherche Description Cas d'utilisation
K plus proches voisins (KNN)

Algorithme qui trouve les points de données des k plus proches voisins d'un point de données de requête donné Lorsque vous effectuez une recherche vectorielle sans créer d' index, une recherche KNN est effectuée par défaut.

Pour améliorer encore les performances de la recherche KNN, ajoutez votre colonne d'embedding et d'autres colonnes associées à votre requête au magasin de colonnes dans le moteur de données en colonnes. Vous pouvez ajouter les colonnes manuellement ou à l'aide de l'organisation automatique en colonnes.

  • Votre application est très sensible à la précision et vous avez besoin des correspondances les plus proches.
  • Vous disposez de dizaines de milliers de vecteurs.
Voisin le plus proche approximatif (ANN) Algorithme qui trouve approximativement les points de données les plus proches. ANN divise les points de données client existants en petits groupes en fonction de leurs similarités.
  • Votre application nécessite une faible latence.
  • Vous disposez de plus de 100 000 vecteurs.

Les deux types d'index vectoriels courants basés sur ANN pour AlloyDB sont ScaNN et HNSW. Suivez les consignes ci-dessous pour déterminer le type d'index le plus adapté à votre cas d'utilisation :

Type d'index Quand l'utiliser ? Avantages Accélération du moteur de données en colonnes
ScaNN

Généralement adapté aux données de faible dimensionnalité ou aux ensembles de données volumineux qui dépassent la mémoire.

Évolue bien jusqu'à 10 milliards de vecteurs.

Offre plusieurs avantages par rapport à HNSW sur PostgreSQL standard :

  • Requêtes vectorielles jusqu'à 6 fois plus rapides et requêtes de recherche vectorielle filtrée jusqu'à 10 fois plus rapides
  • Création d'index jusqu'à 16 fois plus rapide
  • Débit en écriture jusqu'à 24 fois plus élevé
  • Utilise jusqu'à 4 fois moins de mémoire
La recherche vectorielle avec l'index ScaNN peut être accélérée par le moteur de données en colonnes AlloyDB. Pour en savoir plus, consultez Accélérer la recherche vectorielle avec le moteur de données en colonnes.
HNSW

Généralement adapté aux données de dimensionnalité plus élevée qui s'intègrent en grande partie dans le cache en mémoire.

Évolue bien jusqu'à 10 à 20 millions de vecteurs.

L'index HNSW accéléré par le moteur de données en colonnes pgvector dans AlloyDB offre des requêtes vectorielles jusqu'à 4 fois plus rapides que PostgreSQL standard. La recherche vectorielle avec l'index HNSW peut être accélérée par le moteur de données en colonnes AlloyDB. Pour en savoir plus, consultez Accélérer la recherche vectorielle avec le moteur de données en colonnes.

Google vous recommande de créer un index vectoriel pour optimiser les performances de vos requêtes de recherche vectorielle. Pour en savoir plus sur l'utilisation de l'index ANN pour les recherches de similarité, consultez Créer des index à l'aide de ScaNN.

Pour accélérer votre recherche KNN filtrée, utilisez le moteur de données en colonnes.

Étape suivante