Cette page décrit la recherche vectorielle et son fonctionnement dans Spanner.
La recherche vectorielle est une fonctionnalité intégrée hautes performances qui permet d'effectuer des recherches sémantiques et des mises en correspondance de similarités sur des données vectorielles de grande dimension. En stockant et en indexant les embeddings vectoriels directement dans votre base de données transactionnelle, Spanner élimine le besoin de bases de données vectorielles distinctes et de pipelines ETL complexes.
Concepts clés
Cette section présente les concepts clés suivants de la recherche vectorielle :
- Embeddings vectoriels
- Méthodes de recherche (KNN et ANN)
- Fonctions de distance
Embeddings vectoriels
Les embeddings vectoriels sont des représentations numériques de grande dimension de données non structurées. Ils sont générés à partir de données non structurées à l'aide de modèles de machine learning. Par exemple, vous pouvez utiliser l'API Vertex AI Text Embeddings pour générer, stocker et mettre à jour des embeddings de texte pour les données stockées dans Spanner.
Méthodes de recherche
Spanner accepte deux méthodes pour trouver des vecteurs similaires :
K-plus proches voisins (KNN) : effectue une recherche exacte en calculant la distance entre la requête et chaque vecteur de l'ensemble de données. Il offre un rappel plus précis, mais est coûteux en termes de calcul pour les ensembles de données volumineux.
Voisin le plus proche approximatif (ANN) : utilise un index vectoriel (basé sur l'algorithme ScaNN de Google) pour trouver rapidement des correspondances parmi un grand nombre de vecteurs. Il sacrifie une petite partie de la précision (rappel) pour gagner en vitesse et en évolutivité.
Capacités clés
Évolutivité : prend en charge des milliards de vecteurs pour la recherche ANN non partitionnée ou des milliers de milliards de vecteurs pour les charges de travail KNN partitionnées.
Base de données et moteur d'IA unifiés : utilisez la fonction GoogleSQL
ML.PREDICTou PostgreSQLspanner.ML_PREDICT_ROWpour générer des embeddings à partir de modèles Vertex AI directement dans votre flux de requêtes.Filtrage intégré : combinez efficacement la recherche vectorielle avec des filtres de métadonnées structurées (par exemple, "Trouver des images similaires où catégorie = 'chaussures' et prix < 100") sans perdre en performances.
Intégration LangChain : la compatibilité intégrée avec LangChain vous permet de créer des applications de génération augmentée par récupération (RAG) à l'aide de Spanner comme magasin de vecteurs.
Fonctionnalités de recherche hybride
La recherche vectorielle est plus efficace lorsqu'elle est combinée aux autres fonctionnalités de données de Spanner :
| Combinaison | Avantage |
|---|---|
| Recherche vectorielle avec filtrage SQL | Combinez efficacement la recherche vectorielle avec des filtres (par exemple, "Trouver des images similaires où la catégorie est 'chaussures' et le prix est inférieur à 100"). |
| Recherche vectorielle + recherche en texte intégral | Combinez la similarité sémantique et la précision des mots clés à l'aide de la fusion de classement réciproque (RRF) pour une pertinence de recherche supérieure. |
| Vecteur + graphique | Utilisez la recherche vectorielle pour trouver des points d'entrée (nœuds) pertinents dans un graphique de propriétés, puis parcourez des relations complexes. |
Étapes suivantes
- En savoir plus sur Spanner AI
- Découvrez comment obtenir des embeddings textuels Vertex AI.
- Découvrez comment effectuer une recherche des k plus proches voisins (KNN).
- Découvrez comment effectuer une recherche des plus proches voisins approximatifs (ANN).