Présentation de la recherche vectorielle

Ce document présente 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 de vecteurs 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 :

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 de représentation vectorielle.

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 dissimilarité sémantique est importante.

BigQuery offre une expérience de bout en bout pour générer des embeddings, indexer du contenu et effectuer des recherches vectorielles. Vous pouvez effectuer chacune de ces tâches de manière indépendante ou dans un seul parcours. Pour suivre un tutoriel qui vous explique comment effectuer toutes ces tâches, consultez Effectuer une recherche sémantique et une génération augmentée de récupération.

Pour effectuer une recherche vectorielle à l'aide de SQL, vous utilisez la fonction VECTOR_SEARCH. Vous pouvez éventuellement créer un index vectoriel à l'aide de l'instruction CREATE VECTOR INDEX. Lorsqu'un index vectoriel est utilisé, VECTOR_SEARCH utilise 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, VECTOR_SEARCH utilise 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.

Ce document se concentre sur l'approche SQL, mais vous pouvez également effectuer des recherches vectorielles à l'aide de BigQuery DataFrames dans Python. Pour obtenir un notebook illustrant l'approche Python, consultez Créer une application de recherche vectorielle à l'aide de BigQuery DataFrames.

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 produits alternatifs en fonction du comportement des clients et de la similarité des produits.
  • Analyse des 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 des enregistrements d'informations permettant d'identifier personnellement l'utilisateur (IPI), ou une entreprise immobilière peut identifier les adresses postales correspondantes.

Tarifs

La fonction VECTOR_SEARCH et l'instruction CREATE VECTOR INDEX utilisent la tarification du calcul BigQuery.

  • Fonction VECTOR_SEARCH : la recherche par similarité 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 requis pour exécuter 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.

  • 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 vue INFORMATION_SCHEMA.VECTOR_INDEXES.

Quotas et limites

Pour en savoir plus, consultez la section Limites des index vectoriels.

Limites

Les requêtes contenant la fonction VECTOR_SEARCH ne sont pas accélérées par BigQuery BI Engine.

Étapes suivantes