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 sémantiques à grande échelle, ou effectuer une recherche hybride qui combine une recherche sémantique et une recherche lexicale (par mot clé). Lorsque vous utilisez des index vectoriels avec Vector Search, vous pouvez profiter de technologies fondamentales telles que l'indexation de fichiers inversés (IVF) et l'algorithme ScaNN.

La recherche vectorielle est basée 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 d'embedding afin de trouver les éléments les plus sémantiquement similaires.

Ce concept de similarité sémantique et de distance dans un espace d'embedding est illustré visuellement lorsque vous considérez comment 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, des termes tels que voiture, camion et le terme plus générique véhicule formeraient un autre cluster. comme illustré dans l'image suivante :

Les concepts sémantiquement similaires, comme _chat_, _chien_ et _lion_, ou _voiture_, _camion_ et _véhicule_, sont proches les uns des autres dans l'espace d'embedding.

Vous pouvez voir que les clusters d'animaux et de véhicules sont é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 d'embedding, plus ils sont sémantiquement similaires, et 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 obtenir un notebook illustrant ce scénario, consultez Créer une application Vector Search à 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 produits alternatifs en fonction du comportement des clients et de la similarité des produits.
  • Analyse de journaux : aidez les équipes à trier les anomalies dans les journaux de manière proactive 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 d'investigation et de dépannage. Pour obtenir un notebook illustrant ce scénario, consultez Détection d'anomalies de journaux avec les embeddings textuels 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 marketeur 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 des 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, 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 ou à utiliser des embeddings.

Générer des embeddings uniques

Vous pouvez utiliser la fonction AI.EMBED avec les modèles d'embedding de Gemini Enterprise Agent Platform pour générer un seul embedding de votre entrée.

La fonction AI.EMBED accepte les types d'entrées suivants :

  • Données textuelles.
  • Données d'image représentées par des valeurs ObjectRef.

Générer une table d'embeddings

Vous pouvez utiliser AI.GENERATE_EMBEDDING pour créer une table contenant des embeddings pour 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 des colonnes de table standards contenant des valeurs ObjectRef ou des tables d'objets.

Pour les modèles distants, toutes les inférences ont lieu dans Agent Platform. Pour les autres types de modèles, toutes les inférences ont lieu dans BigQuery. Les résultats sont stockés dans BigQuery.

Utilisez les rubriques suivantes pour essayer de générer des embeddings dans BigQuery ML :

Génération d'embeddings autonome

Vous pouvez utiliser la génération d'embeddings autonome pour simplifier le processus de création, de maintenance et d'interrogation des embeddings. BigQuery gère 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 des embeddings pour ces données à l'aide d'un modèle d'embedding Agent Platform. Cela est utile si vous souhaitez que BigQuery gère vos embeddings lorsque vos données sources sont mises à jour régulièrement.

Vous pouvez utiliser les fonctions de recherche suivantes pour effectuer une recherche vectorielle sémantique ou une recherche hybride qui combine une recherche sémantique et une recherche lexicale par mot clé :

  • VECTOR_SEARCH : effectuez une recherche vectorielle sémantique ou une recherche hybride à l'aide de SQL.

  • AI.SEARCH : effectuez une recherche sémantique ou hybride pour obtenir des résultats proches d'une chaîne que vous fournissez. Vous pouvez utiliser cette fonction si la génération d'embeddings autonomes est activée pour votre table.

  • AI.SIMILARITY : compare deux entrées en calculant la similarité cosinus entre leurs embeddings. Cette fonction est utile si vous souhaitez effectuer un petit nombre de comparaisons et que vous n'avez pas précalculé d'embeddings. Vous devez utiliser VECTOR_SEARCH lorsque 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.

Gérer l'abandon des modèles d'embedding

Lorsqu'un modèle d'embedding est obsolète, vous devez migrer vos workflows vers un modèle de remplacement compatible avant l'arrêt du modèle obsolète. La date de retrait des modèles suivants est fixée au 1er avril 2027 :

  • text-embedding-005
  • text-embeding-004
  • text-multilingual-embedding-002
  • multimodalembedding@001

Pour en savoir plus sur les dates d'abandon des modèles et les modèles de remplacement, consultez Versions et cycle de vie des modèles.

Les embeddings générés par différents modèles ou par différentes versions du même modèle existent dans des espaces d'embedding distincts et sont généralement incompatibles d'un point de vue mathématique. Cette incompatibilité s'applique même lorsque les vecteurs ont le même nombre de dimensions. La comparaison d'embeddings de différents modèles produit des résultats de recherche et de similarité inexacts.

Pour migrer vers un modèle d'embedding de remplacement, procédez comme suit :

  1. Regénérez les embeddings dans vos tables existantes à l'aide du modèle de remplacement afin que tous les embeddings stockés partagent le même espace d'embedding.
    • Si vous utilisez la fonction AI.EMBED ou AI.GENERATE_EMBEDDING, mettez à jour vos requêtes ou vos modèles distants pour utiliser le modèle de remplacement, puis regénérez les embeddings de votre table.
    • Si vous utilisez la génération d'embeddings autonomes, supprimez la colonne d'embeddings générée existante et ajoutez une colonne d'embeddings générée qui utilise le modèle de remplacement.
  2. Mettez à jour les requêtes ou les pipelines qui génèrent des embeddings au moment de la recherche pour utiliser le même modèle de remplacement que les embeddings de votre table.
  3. Après avoir regénéré les embeddings dans une table, recréez ou recompilez tous les index vectoriels sur la colonne d'embeddings.

Tarifs

Les fonctions VECTOR_SEARCH et AI.SEARCH, ainsi que l'instruction CREATE VECTOR INDEX, utilisent la tarification du calcul BigQuery.

  • Fonctions VECTOR_SEARCH et AI.SEARCH : la recherche de similarité vous est facturée selon la tarification à la demande ou des éditions.

    • À la demande : vous êtes facturé pour la quantité d'octets analysés dans la table de base, l'index et la requête de recherche.
    • Tarification des éditions : les emplacements requis pour effectuer le job dans votre édition de réservation vous sont facturés. Les calculs de similarité plus volumineux et plus complexes entraînent des frais plus élevés.

  • 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 en tant qu'embeddings et index est soumise à des frais 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 tout ce qui a été indexé. Vous pouvez vérifier la couverture de l'index à l'aide de la vue INFORMATION_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.
  • L'élagage des données de préfiltrage dans les requêtes VECTOR_SEARCH et AI.SEARCH n'est optimisé que lors du filtrage sur des colonnes partitionnées ou des colonnes stockées, et non sur des colonnes en cluster. L'utilisation de colonnes en cluster non stockées dans une sous-requête de préfiltre entraîne une analyse complète de la table. Pour en savoir plus, consultez Limites du préfiltrage.

Étapes suivantes