Présentation des embeddings et de la recherche vectorielle
Ce document offre un aperçu des embeddings et de la recherche vectorielle dans BigQuery. La recherche vectorielle est une technique permettant de comparer des objets similaires à l'aide d'embeddings. Elle est utilisée pour alimenter les produits Google, y compris la recherche Google, YouTube et Google Play. Vous pouvez utiliser la recherche vectorielle pour effectuer des recherches à grande échelle. Lorsque vous utilisez des index vectoriels avec la recherche vectorielle, vous pouvez profiter de technologies fondamentales telles que l'indexation de fichiers inversés (IVF) et l'algorithme ScaNN.
La recherche vectorielle repose sur les embeddings. Les embeddings sont des vecteurs numériques de grande dimension qui représentent une entité donnée, comme un exemple de texte ou un fichier audio. Les modèles de machine learning (ML) utilisent des embeddings pour encoder la sémantique concernant ces entités afin de faciliter leur raisonnement et leur comparaison. Par exemple, une opération courante dans les modèles de clustering, de classification et de recommandation consiste à mesurer la distance entre les vecteurs dans un espace de représentation vectorielle afin de trouver les éléments les plus sémantiquement similaires.
Ce concept de similarité et de distance sémantiques dans un espace de représentation vectorielle est illustré visuellement lorsque vous réfléchissez à la façon dont différents éléments peuvent être représentés. Par exemple, les termes chat, chien et lion, qui représentent tous des types d'animaux, sont regroupés dans cet espace en raison de leurs caractéristiques sémantiques communes. De même, les termes voiture, camion et le terme plus générique véhicule formeraient un autre cluster. Ce processus est illustré dans l'image suivante :
Vous pouvez constater que les clusters d'animaux et de véhicules sont très éloignés les uns des autres. La séparation entre les groupes illustre le principe selon lequel plus les objets sont proches dans l'espace de représentation vectorielle, plus ils sont sémantiquement similaires. Plus les distances sont grandes, plus la dissemblance sémantique est importante.
Cas d'utilisation
La combinaison de la génération d'embeddings et de la recherche vectorielle permet de nombreux cas d'utilisation intéressants. Voici quelques cas d'utilisation possibles :
- Génération augmentée par récupération (RAG) : analysez des documents, effectuez une recherche vectorielle sur le contenu et générez des réponses résumées à des questions en langage naturel à l'aide des modèles Gemini, le tout dans BigQuery. Pour un notebook illustrant ce scénario, consultez Créer une application de recherche vectorielle à l'aide de BigQuery DataFrames.
- Recommander des produits de substitution ou des produits correspondants : améliorez les applications d'e-commerce en suggérant des alternatives de produits en fonction du comportement des clients et de la similarité des produits.
- Analyse de journaux : aidez les équipes à trier de manière proactive les anomalies dans les journaux et à accélérer les investigations. Vous pouvez également utiliser cette fonctionnalité pour enrichir le contexte des LLM afin d'améliorer les workflows de détection des menaces, d'analyse forensique et de dépannage. Pour obtenir un notebook illustrant ce scénario, consultez Détection et investigation des anomalies de journaux avec les embeddings de texte et BigQuery Vector Search.
- Clustering et ciblage : segmentez les audiences avec précision. Par exemple, une chaîne d'hôpitaux peut regrouper des patients à l'aide de notes en langage naturel et de données structurées, ou un responsable marketing peut cibler des annonces en fonction de l'intention de la requête. Pour obtenir un notebook illustrant ce scénario, consultez Create-Campaign-Customer-Segmentation.
- Résolution d'entités et déduplication : nettoyez et consolidez les données. Par exemple, une entreprise publicitaire peut dédupliquer les enregistrements d'informations permettant d'identifier personnellement l'utilisateur (PII), ou une entreprise immobilière peut identifier les adresses postales correspondantes.
Générer des embeddings
Les sections suivantes décrivent les fonctions proposées par BigQuery pour vous aider à générer des embeddings ou à les utiliser.
Générer des embeddings uniques
Vous pouvez utiliser la fonction AI.EMBED avec les modèles d'embedding Vertex AI pour générer un seul embedding de votre entrée.
La fonction AI.EMBED est compatible avec les types d'entrée suivants :
- Données textuelles.
- Données d'image représentées par des valeurs
ObjectRef. (Bêta) - Données d'image représentées par des valeurs
ObjectRefRuntime.
Générer un tableau d'embeddings
Vous pouvez utiliser AI.GENERATE_EMBEDDING pour créer une table contenant les embeddings de toutes les données d'une colonne de votre table d'entrée. Pour tous les types de modèles compatibles, AI.GENERATE_EMBEDDING fonctionne avec les données structurées des tables standards. Pour les modèles d'embedding multimodaux, AI.GENERATE_EMBEDDING fonctionne également avec le contenu visuel provenant de colonnes de tables standards contenant des valeurs ObjectRef ou de tables d'objets.
Pour les modèles distants, toutes les inférences ont lieu dans Vertex AI. Pour les autres types de modèles, toutes les inférences ont lieu dans BigQuery. Les résultats sont stockés dans BigQuery.
Consultez les rubriques suivantes pour essayer la génération d'embeddings dans BigQuery ML :
- Générez du texte, des images ou des vidéos à l'aide de la fonction
AI.GENERATE_EMBEDDING. - Générer et rechercher des embeddings multimodaux
- Effectuer une recherche sémantique et une génération augmentée de récupération
Génération autonome d'embeddings
Vous pouvez utiliser la génération autonome d'embeddings pour simplifier la création, la maintenance et l'interrogation des embeddings. BigQuery conserve une colonne d'embeddings dans votre table en fonction d'une colonne source. Lorsque vous ajoutez ou modifiez des données dans la colonne source, BigQuery génère ou met à jour automatiquement la colonne d'embedding pour ces données à l'aide d'un modèle d'embedding Vertex AI. Cela peut être utile si vous souhaitez que BigQuery gère vos embeddings lorsque vos données sources sont régulièrement mises à jour.
Rechercher
Les fonctions de recherche suivantes sont disponibles :
VECTOR_SEARCH: effectuez une recherche vectorielle à l'aide de SQL.AI.SEARCH(Aperçu) : recherchez les résultats proches d'une chaîne que vous fournissez. Vous pouvez utiliser cette fonction si la génération autonome d'embeddings est activée pour votre table.AI.SIMILARITY(aperçu) : compare deux entrées en calculant la similarité cosinus entre leurs embeddings. Cette fonction est adaptée si vous souhaitez effectuer un petit nombre de comparaisons et que vous n'avez précalculé aucun embedding. Vous devez utiliserVECTOR_SEARCHlorsque les performances sont critiques et que vous travaillez avec un grand nombre d'embeddings. Comparez leurs fonctionnalités pour choisir celle qui convient le mieux à votre cas d'utilisation.
Vous pouvez éventuellement créer un index vectoriel à l'aide de l'instruction CREATE VECTOR INDEX.
Lorsqu'un index vectoriel est utilisé, les fonctions VECTOR_SEARCH et AI.SEARCH utilisent la technique de recherche approximative du voisin le plus proche pour améliorer les performances de la recherche vectorielle, avec le compromis consistant à réduire le rappel et ainsi renvoyer des résultats plus approximatifs. Sans index vectoriel, ces fonctions utilisent la recherche par force brute pour mesurer la distance de chaque enregistrement. Vous pouvez également choisir d'utiliser la force brute pour obtenir des résultats exacts, même lorsqu'un index vectoriel est disponible.
Tarifs
Les fonctions VECTOR_SEARCH et AI.SEARCH, ainsi que l'instruction CREATE VECTOR INDEX, utilisent les tarifs de calcul BigQuery.
Fonctions
VECTOR_SEARCHetAI.SEARCH: la recherche de similarités vous est facturée selon la tarification à la demande ou par édition.- À la demande : vous êtes facturé en fonction du nombre d'octets analysés dans la table de base, l'index et la requête de recherche.
Tarification des éditions : les emplacements nécessaires à l'exécution du job vous sont facturés dans votre édition de réservation. Les calculs de similarité plus volumineux et plus complexes entraînent des frais plus élevés.
Déclaration
CREATE VECTOR INDEX: le traitement requis pour créer et actualiser vos index vectoriels est sans frais tant que la taille totale des données de table indexées est inférieure à votre limite par organisation. Pour accepter l'indexation au-delà de cette limite, vous devez fournir votre propre réservation pour la gestion des jobs de gestion des index.
Le stockage est également un facteur à prendre en compte pour les embeddings et les index. La quantité d'octets stockés sous forme d'intégrations et d'index est soumise aux coûts de stockage actif.
- Les index vectoriels entraînent des coûts de stockage lorsqu'ils sont actifs.
- Vous pouvez trouver la taille de stockage de l'index à l'aide de la vue
INFORMATION_SCHEMA.VECTOR_INDEXES. Si l'index vectoriel n'est pas encore à 100 % de la couverture, vous êtes toujours facturé pour ce qui a été indexé. Vous pouvez vérifier la couverture de l'index à l'aide de la vueINFORMATION_SCHEMA.VECTOR_INDEXES.
Quotas et limites
Pour en savoir plus, consultez les limites des index vectoriels et les limites des fonctions d'IA générative.
Limites
Les requêtes contenant la fonction VECTOR_SEARCH ou AI.SEARCH ne sont pas accélérées par BigQuery BI Engine.
Étapes suivantes
- Apprenez-en plus sur la création d'un index vectoriel
- Découvrez comment effectuer une recherche vectorielle à l'aide de la fonction
VECTOR_SEARCH. - Découvrez comment effectuer une recherche sémantique à l'aide de la fonction
AI.SEARCH. - En savoir plus sur la génération autonome d'intégrations
- Suivez le tutoriel Rechercher des embeddings avec la recherche vectorielle pour apprendre à créer un index vectoriel, puis effectuez une recherche vectorielle d'embeddings avec et sans l'index.
Suivez le tutoriel Effectuer une recherche sémantique et une génération augmentée de récupération pour apprendre à effectuer les tâches suivantes :
- Générer des embeddings textuels.
- Créer un index vectoriel sur les embeddings.
- Effectuer une recherche vectorielle avec les embeddings pour rechercher du texte similaire.
- Effectuer une génération augmentée de récupération (RAG) en utilisant les résultats de la recherche vectorielle pour augmenter la saisie de la requête et améliorer les résultats.
Essayez le tutoriel Analyser des PDF dans un pipeline de génération augmentée par récupération pour découvrir comment créer un pipeline RAG basé sur le contenu PDF analysé.
Vous pouvez également effectuer des recherches vectorielles à l'aide de BigQuery DataFrames dans Python. Pour obtenir un notebook illustrant cette approche, consultez Créer une application de recherche vectorielle à l'aide de BigQuery DataFrames.