Présentation
Recherche vectorielle BigQuery : la recherche vectorielle vous permet de trouver les éléments les plus similaires dans votre ensemble de données en comparant les représentations mathématiques de leurs caractéristiques, appelées embeddings, plutôt que de vous fier à des correspondances exactes de mots clés.
Vous est-il déjà arrivé de faire des achats en ligne et d'être impressionné par la capacité d'un site Web à recommander des produits très similaires à ceux que vous recherchez, même si vous ne parvenez pas tout à fait à les décrire avec des mots ? Cette approche repose souvent sur la recherche vectorielle, une technique qui va au-delà de la simple mise en correspondance de mots clés. Au lieu de se contenter de rechercher du texte, la recherche vectorielle analyse les caractéristiques et fonctionnalités sous-jacentes d'un élément, ce qui lui permet de trouver des éléments conceptuellement ou visuellement similaires. Dans cet atelier, vous allez vous exercer à utiliser les fonctionnalités de recherche vectorielle puissantes et évolutives intégrées directement à BigQuery.
Pour un marchand mondial comme Cymbal E-commerce, cette technologie change la donne en termes d'expérience client. Imaginons qu'un client recherche une "veste légère pour la randonnée". Une recherche traditionnelle par mot clé pourrait passer à côté du produit idéal si sa description utilise le terme "coupe-vent" au lieu de "veste". Grâce à la recherche vectorielle, Cymbal peut analyser les embeddings, qui sont des représentations numériques des images et des descriptions de produits, pour renvoyer une liste de tous les vêtements d'extérieur pertinents, quelle que soit la terminologie exacte utilisée. Cela aide les clients à trouver plus rapidement les produits qu'ils recherchent, ce qui les satisfait et augmente les ventes. C'est parti !
Dans cet atelier, vous allez apprendre à utiliser BigQuery pour effectuer des recherches vectorielles.
** Remarque : Dans cet atelier, pour des raisons de confidentialité, vous utiliserez une base de données de brevets publique plutôt que des fiches produits et des descriptions détaillées propriétaires de Cymbal. Le processus est le même. Il vous suffit de modifier les noms de l'ensemble de données, de la table et des colonnes pour qu'ils correspondent à vos données sources.
Objectifs de l'atelier
- Utiliser un modèle de ML pour générer des embeddings
- Créer un index vectoriel
- Utiliser la fonction
VECTOR_SEARCH sur les représentations vectorielles continues que vous avez créées
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Conditions requises
Pour réaliser cet atelier, vous devez :
- avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- disposer de suffisamment de temps pour effectuer l'atelier en une fois.
Remarque : Si vous possédez votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.
Remarque : Si vous utilisez un Pixelbook, veuillez exécuter cet atelier dans une fenêtre de navigation privée.
Se connecter à la console Google Cloud
- Dans l'onglet ou la fenêtre de navigateur que vous utilisez pour cet atelier, copiez les données de Username (Nom d'utilisateur) indiqué dans le panneau Connection Details (Détails de connexion), puis cliquez sur le bouton Open Google Console (Ouvrir la console Google).
Remarque : Si vous êtes invité à choisir un compte, cliquez sur Use another account (Utiliser un autre compte).
- Collez les données de Username (Nom d'utilisateur) et de Password (Mot de passe) lorsque vous y êtes invité :
- Cliquez sur Next (Suivant).
- Acceptez les conditions d'utilisation.
Comme il s'agit d'un compte temporaire auquel vous aurez accès uniquement pendant la durée de cet atelier :
- n'ajoutez pas d'options de récupération ;
- ne vous inscrivez pas à des essais sans frais.
- Une fois la console ouverte, affichez la liste des services en cliquant sur le menu de navigation (
) en haut à gauche.

Vérifier ou activer les API requises
-
Dans la console Google Cloud, saisissez API BigQuery dans la barre de recherche en haut de l'écran.
-
Dans les résultats, cliquez sur API BigQuery sous Marketplace.
-
Si l'API n'est pas déjà activée, cliquez sur Activer.
-
Répétez les étapes 1 à 3 pour l'API BigQuery Connection, puis pour l'API Vertex AI.
Tâche 1 : Créer un modèle distant pour la génération d'embeddings textuels
Dans cette tâche, vous allez créer un modèle génératif d'embeddings textuels Vertex AI, qui est nécessaire pour effectuer une recherche vectorielle et créer les embeddings pour la base de données.
Créer un modèle d'IA
-
Dans le menu de navigation (
) de la console Google Cloud, accédez à BigQuery > Studio.
-
Sélectionnez l'onglet Requête sans titre.
-
Saisissez le code ci-dessous :
CREATE OR REPLACE MODEL `bqml_lab.embedding_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (ENDPOINT = 'text-embedding-005');
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un modèle de ML
-
Cliquez sur Exécuter. L'exécution de la requête prend quelques minutes. Si vous obtenez une erreur concernant un compte de service manquant, réexécutez simplement la même requête.
-
Remplacez la requête par le code suivant :
CREATE OR REPLACE TABLE `bqml_lab.embeddings` AS
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_lab.embedding_model`,
( SELECT
title,
url,
abstract AS content
FROM
`bqml_lab.patent_data`
LIMIT 200000))
WHERE LENGTH(ml_generate_embedding_status) = 0;
-
Cliquez sur Exécuter. L'exécution de la requête prendra environ cinq minutes.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer une table nommée "embeddings" à l'aide d'un modèle BigQuery ML
-
Remplacez la requête par le code suivant :
CREATE OR REPLACE VECTOR INDEX my_index
ON `bqml_lab.embeddings`(ml_generate_embedding_result)
OPTIONS(index_type = 'IVF',
distance_type = 'COSINE',
ivf_options = '{"num_lists":500}');
-
Cliquez sur Exécuter. L'exécution de la requête prend quelques minutes.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un index vectoriel sur la table "embeddings"
-
Saisissez le code suivant pour vérifier l'état de l'index :
SELECT table_name,
index_name,
index_status,
coverage_percentage,
last_refresh_time,
disable_reason
FROM `{{{project_0.project_id | "Project ID"}}}.bqml_lab.INFORMATION_SCHEMA.VECTOR_INDEXES`;
-
Cliquez sur Exécuter. L'index est prêt à être utilisé lorsque la valeur de la colonne coverage_percentage est supérieure à 0 et que la valeur de la colonne last_refresh_time n'est pas NULL. Si l'index n'est pas prêt la première fois que vous exécutez la requête ci-dessus, réexécutez-la de temps en temps pour vérifier l'état de l'index. Poursuivez l'atelier lorsque les résultats indiquent que l'index est prêt à être utilisé.
Effectuer une recherche de similarité textuelle à l'aide de l'index vectoriel
Vous allez utiliser la fonction VECTOR_SEARCH pour rechercher les entrées correspondant à votre terme de recherche, qui est la phrase "improving online shopper search results" dans cet exemple. Le modèle que vous utilisez pour générer les embeddings dans cette requête doit être le même que celui utilisé pour générer les embeddings dans la table à comparer, sinon les résultats de la recherche ne seront pas précis.
-
Dans l'onglet "Requête" de BigQuery, remplacez le code par le code suivant :
SELECT query.query, base.title, base.content
FROM VECTOR_SEARCH(
TABLE `bqml_lab.embeddings`, 'ml_generate_embedding_result',
(
SELECT ml_generate_embedding_result, content AS query
FROM ML.GENERATE_EMBEDDING(
MODEL `bqml_lab.embedding_model`,
(SELECT 'improving online shopper search results' AS content))
),
top_k => 5, options => '{"fraction_lists_to_search": 0.01}');
-
Cliquez sur Exécuter.
-
Facultatif : Si vous souhaitez essayer d'autres recherches, remplacez improving online shopper search results dans le code par une autre recherche.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Effectuer une recherche de similarité textuelle à l'aide de l'index vectoriel
Félicitations !
Vous avez créé un modèle d'IA, des embeddings pour vos données et un index vectoriel. Vous avez ensuite utilisé l'index pour trouver les éléments les plus étroitement liés à votre terme de recherche.