GSP1288
Présentation
Imaginez que vos applications effectuent des recherches dans votre base de données Spanner et identifient rapidement les données associées, même si l'expression de recherche fournie n'est pas précisément trouvée dans le texte stocké. C'est désormais possible grâce à la puissance des embeddings textuels Vertex AI, qui permettent d'effectuer des recherches vectorielles dans Spanner.
Spanner est un service de base de données entièrement géré qui offre une cohérence transactionnelle à l'échelle mondiale et une réplication synchrone automatique pour assurer une haute disponibilité. De plus, vous pouvez exploiter la fonctionnalité d'intelligence artificielle (IA) de Spanner pour effectuer des tâches telles que créer des applications d'IA générative et afficher des données dans votre base de données Spanner en fonction de leur pertinence par rapport à vos termes de recherche spécifiques.
La recherche vectorielle est une méthode qui permet de trouver rapidement des éléments similaires en fonction de leur signification sémantique (plutôt que de la correspondance exacte des mots clés). Elle peut être appliquée à de nombreux types de données, y compris l'audio, les images, les vidéos et le texte. Pour le texte en particulier, la recherche vectorielle vous permet de trouver des éléments de texte similaires sans que leur contenu corresponde exactement au texte ou à l'expression utilisés dans la recherche.
Dans cet atelier, vous découvrirez les principes de base de la configuration de la recherche vectorielle dans Spanner. Vous commencerez par générer et stocker des embeddings textuels (des vecteurs contenant des représentations numériques de la signification sémantique du texte), puis vous les utiliserez pour effectuer des recherches de similarité rapides. Cet atelier pratique s'inspire de l'atelier de programmation Premiers pas avec la recherche vectorielle Spanner. Il utilise un ensemble de données de produits de cyclisme pour montrer comment la recherche vectorielle Spanner permet de trouver les produits les plus proches d'une expression de recherche sans qu'il n'y ait de correspondance exacte dans le texte.
Objectifs de l'atelier
Dans cet atelier, vous allez apprendre à :
- créer un modèle d'embeddings dans Spanner et le configurer vers le point de terminaison d'un modèle Vertex AI ;
- créer une table et charger des données dans Spanner ;
- générer et stocker des embeddings textuels dans Spanner ;
- effectuer une recherche vectorielle dans Spanner à l'aide d'embeddings textuels.
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 les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :
- Le bouton "Ouvrir la console Google Cloud"
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
-
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
-
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Tâche 1 : créer un modèle d'embeddings dans Spanner et le configurer vers le point de terminaison d'un modèle Vertex AI
Une instance Spanner nommée cymbal-retail et une base de données nommée cymbal-bicycles ont été provisionnées pour vous dans cet environnement d'atelier.
Dans cette tâche, vous allez démarrer le workflow global dans Spanner en créant et en configurant le modèle d'embeddings utilisé pour générer les embeddings textuels, ce qui lancera automatiquement la création du compte de service Spanner nécessaire pour les tâches ultérieures. Plus précisément, vous allez créer un modèle d'embeddings nommé EmbeddingsModel et le configurer vers un point de terminaison du modèle d'embeddings textuels Vertex AI nommé .
-
Dans la console Google Cloud, accédez au menu de navigation (
) > Afficher tous les produits. Sous Bases de données, cliquez sur Spanner.
-
Sur la page Instances, cliquez sur l'instance nommée Cymbal Retail Spanner Instance pour examiner les détails de l'instance.
-
Sous Bases de données, cliquez sur la base de données nommée cymbal-bicycles.
-
Dans le menu Spanner, sous Bases de données, cliquez sur Spanner Studio.
-
Sur la page Spanner Studio, cliquez sur Nouvel onglet de l'éditeur SQL pour ouvrir une nouvelle fenêtre de requête.
-
Pour créer le modèle d'embeddings et le configurer vers le point de terminaison d'un modèle Vertex AI, copiez et collez la requête suivante dans la fenêtre de requête, puis cliquez sur Exécuter.
CREATE MODEL EmbeddingsModel INPUT(
content STRING(MAX),
) OUTPUT(
embeddings STRUCT<statistics STRUCT<truncated BOOL, token_count FLOAT32>, values ARRAY<FLOAT32>>,
) REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/{{{project_0.project_id |Project ID}}}/locations/{{{project_0.default_region |Region}}}/publishers/google/models/{{{project_0.startup_script.gemini_embedding_model_id | model_name | disablehighlight }}}'
);
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un modèle d'embeddings et le configurer vers le point de terminaison d'un modèle Vertex AI
Une fois la requête exécutée, le message Mise à jour terminée s'affiche.
Restez dans Spanner Studio et passez à la tâche suivante.
Tâche 2 : créer une table et charger les données produit
Maintenant que vous avez créé et configuré le modèle d'embeddings, vous avez besoin des données pour lesquelles générer les embeddings textuels pour la recherche vectorielle.
Dans cette tâche, vous allez créer une table contenant des colonnes qui décrivent les produits (comme les noms de produits et le nombre d'articles dans l'inventaire) pour une entreprise fictive appelée Cymbal Bicycles, ainsi qu'une colonne supplémentaire pour les embeddings vectoriels (ou "plongements vectoriels") des descriptions de produits (qui seront générés dans la prochaine tâche). Enfin, vous allez charger un échantillon des données produit de Cymbal Bicycles dans la table Spanner.
-
Dans l'éditeur de requête Spanner Studio, cliquez sur Effacer (dans la même barre de menu que Exécuter) pour supprimer la requête précédente.
-
Pour créer une table nommée products, copiez et collez la requête suivante dans la fenêtre de requête, puis cliquez sur Exécuter.
CREATE TABLE products (
categoryId INT64 NOT NULL,
productId INT64 NOT NULL,
productName STRING(MAX) NOT NULL,
productDescription STRING(MAX) NOT NULL,
productDescriptionEmbedding ARRAY<FLOAT32>,
createTime TIMESTAMP NOT NULL OPTIONS (
allow_commit_timestamp = true
),
inventoryCount INT64 NOT NULL,
priceInCents INT64,
) PRIMARY KEY(categoryId, productId);
La colonne nommée productDescriptionEmbedding est de type ARRAY<FLOAT32>, ce qui permet de stocker les valeurs vectorielles que vous allez créer dans la tâche suivante.
Une fois la requête exécutée, le message Mise à jour terminée s'affiche.
-
Cliquez à nouveau sur Effacer (dans la même barre de menu que Exécuter) pour supprimer la requête précédente.
-
Pour charger des données dans la table, copiez et collez la requête suivante dans la fenêtre de requête, puis cliquez sur Exécuter.
Notez que cette requête charge un petit échantillon de produits, mais qu'elle inclut toutes les informations nécessaires pour chacun des 10 produits chargés dans la table.
INSERT INTO products (categoryId, productId, productName, productDescription, createTime, inventoryCount, priceInCents)
VALUES (1, 1, "Cymbal Helios Helmet", "Safety meets style with the Cymbal children's bike helmet. Its lightweight design, superior ventilation, and adjustable fit ensure comfort and protection on every ride. Stay bright and keep your child safe under the sun with Cymbal Helios!", PENDING_COMMIT_TIMESTAMP(), 100, 10999),
(1, 2, "Cymbal Sprout", "Let their cycling journey begin with the Cymbal Sprout, the ideal balance bike for beginning riders ages 2-4 years. Its lightweight frame, low seat height, and puncture-proof tires promote stability and confidence as little ones learn to balance and steer. Watch them sprout into cycling enthusiasts with Cymbal Sprout!", PENDING_COMMIT_TIMESTAMP(), 10, 13999),
(1, 3, "Cymbal Spark Jr.", "Light, vibrant, and ready for adventure, the Spark Jr. is the perfect first bike for young riders (ages 5-8). Its sturdy frame, easy-to-use brakes, and puncture-resistant tires inspire confidence and endless playtime. Let the spark of cycling ignite with Cymbal!", PENDING_COMMIT_TIMESTAMP(), 34, 13900),
(1, 4, "Cymbal Summit", "Conquering trails is a breeze with the Summit mountain bike. Its lightweight aluminum frame, responsive suspension, and powerful disc brakes provide exceptional control and comfort for experienced bikers navigating rocky climbs or shredding downhill. Reach new heights with Cymbal Summit!", PENDING_COMMIT_TIMESTAMP(), 0, 79999),
(1, 5, "Cymbal Breeze", "Cruise in style and embrace effortless pedaling with the Breeze electric bike. Its whisper-quiet motor and long-lasting battery let you conquer hills and distances with ease. Enjoy scenic rides, commutes, or errands with a boost of confidence from Cymbal Breeze!", PENDING_COMMIT_TIMESTAMP(), 72, 129999),
(1, 6, "Cymbal Trailblazer Backpack", "Carry all your essentials in style with the Trailblazer backpack. Its water-resistant material, multiple compartments, and comfortable straps keep your gear organized and accessible, allowing you to focus on the adventure. Blaze new trails with Cymbal Trailblazer!", PENDING_COMMIT_TIMESTAMP(), 24, 7999),
(1, 7, "Cymbal Phoenix Lights", "See and be seen with the Phoenix bike lights. Powerful LEDs and multiple light modes ensure superior visibility, enhancing your safety and enjoyment during day or night rides. Light up your journey with Cymbal Phoenix!", PENDING_COMMIT_TIMESTAMP(), 87, 3999),
(1, 8, "Cymbal Windstar Pump", "Flat tires are no match for the Windstar pump. Its compact design, lightweight construction, and high-pressure capacity make inflating tires quick and effortless. Get back on the road in no time with Cymbal Windstar!", PENDING_COMMIT_TIMESTAMP(), 36, 24999),
(1, 9,"Cymbal Odyssey Multi-Tool","Be prepared for anything with the Odyssey multi-tool. This handy gadget features essential tools like screwdrivers, hex wrenches, and tire levers, keeping you ready for minor repairs and adjustments on the go. Conquer your journey with Cymbal Odyssey!", PENDING_COMMIT_TIMESTAMP(), 52, 999),
(1, 10,"Cymbal Nomad Water Bottle","Stay hydrated on every ride with the Nomad water bottle. Its sleek design, BPA-free construction, and secure lock lid make it the perfect companion for staying refreshed and motivated throughout your adventures. Hydrate and explore with Cymbal Nomad!", PENDING_COMMIT_TIMESTAMP(), 42, 1299);
Une fois la requête exécutée, le message Suite à cette instruction, 10 lignes ont été insérées et aucune ligne n'a été renvoyée s'affiche.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer une table et charger les données produit
Tâche 3 : générer et stocker des embeddings textuels pour les données produit
En créant le modèle d'embeddings lors de la tâche 1, vous avez également lancé la création du compte de service Spanner utilisé pour accéder au modèle d'embeddings par le biais du point de terminaison du modèle Vertex AI.
Dans cette tâche, vous allez commencer par vous assurer que ce compte de service dispose du rôle nécessaire pour accéder au point de terminaison Vertex AI. Ensuite, vous exécuterez une requête afin de générer les embeddings pour les descriptions de produits et de les stocker dans la table products.
Attribuer le rôle d'agent de service de l'API Cloud Spanner au compte de service Spanner
-
Dans la console Google Cloud, accédez au menu de navigation (
), puis sélectionnez IAM et administration > IAM.
-
Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez l'ID du compte de service Spanner : service-@gcp-sa-spanner.iam.gserviceaccount.com.
Remarque : Si ce compte de service n'apparaît pas, il se peut qu'il mette plus de temps à être provisionné après la tâche 1. Fermez cette fenêtre et attendez trois minutes avant de répéter les étapes 2 et 3.
-
Pour sélectionner un rôle, recherchez Agent de service de l'API Cloud Spanner à l'aide du filtre et sélectionnez-le pour renseigner la zone Rôle.
-
Cliquez sur Enregistrer.
Remarque : Si vous recevez le message Aucune modification, le compte principal existe déjà dans la stratégie, vous pouvez passer à la section suivante sans essayer d'attribuer le rôle à nouveau.
Mettre à jour la colonne productDescriptionEmbedding pour stocker les embeddings textuels générés
Maintenant que vous avez vérifié que le compte de service Spanner dispose du rôle approprié, vous pouvez générer les embeddings textuels pour les descriptions de produits et les ajouter à la table products.
-
Revenez à Spanner Studio en suivant les étapes 1 à 4 de la tâche 1.
-
Copiez et collez la requête suivante dans la fenêtre de requête pour actualiser la colonne nommée productDescriptionEmbedding avec les embeddings générés, puis cliquez sur Exécuter.
UPDATE products p1
SET productDescriptionEmbedding =
(SELECT embeddings.values from ML.PREDICT(MODEL EmbeddingsModel,
(SELECT productDescription as content FROM products p2 where p2.productId=p1.productId)))
WHERE categoryId=1;
Remarque : Si vous recevez un message d'erreur du type Autorisation refusée sur la ressource, attendez quelques minutes que les autorisations que vous avez attribuées lors des étapes précédentes se propagent entièrement, puis exécutez à nouveau la requête.
Une fois la requête exécutée, le message 10 lignes mises à jour grâce à votre requête s'affiche.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Générer et stocker des embeddings textuels pour les données produit
Restez dans Spanner Studio et passez à la tâche suivante.
Tâche 4 : effectuer une recherche vectorielle à l'aide d'embeddings textuels dans Spanner
Une fois les embeddings textuels des descriptions de produits générés et stockés, vos données sont prêtes pour votre première recherche vectorielle en temps réel.
Dans cette tâche, vous allez exécuter une requête de recherche de similarité basée sur l'expression I'd like to buy a starter bike for my 3 year old child et obtenir rapidement les cinq produits les plus pertinents, bien que les données produit ne contiennent aucun mot clé exact correspondant à la requête.
-
Dans l'éditeur de requête Spanner Studio, cliquez sur Effacer (dans la même barre de menu que Exécuter) pour supprimer la requête précédente.
-
Pour effectuer une recherche vectorielle à l'aide des embeddings textuels, copiez-collez la requête suivante dans la fenêtre de requête, puis cliquez sur Exécuter.
SELECT productName, productDescription, inventoryCount, COSINE_DISTANCE(
productDescriptionEmbedding,
( SELECT embeddings.values
FROM ML.PREDICT(
MODEL EmbeddingsModel,
(SELECT "I'd like to buy a starter bike for my 3 year old child" as content)
)
)
) as distance
FROM products
WHERE inventoryCount > 0
ORDER BY distance
LIMIT 5;
Cette requête utilise les valeurs de la colonne productDescriptionEmbedding pour trouver les cinq lignes de la base de données les plus similaires sémantiquement à l'expression de recherche I'd like to buy a starter bike for my 3 year old child.
Notez que l'embedding pour l'expression de recherche est généré de manière dynamique dans la requête. N'hésitez pas à explorer cette requête plus en détail en remplaçant I'd like to buy a starter bike for my 3 year old child dans le code ci-dessus par un nouveau terme de recherche de votre choix.
Le résultat se présente comme suit :
| productName |
productDescription |
inventoryCount |
distance |
| Cymbal Sprout |
Let their cycling journey begin with the Cymbal Sprout, the ideal balance bike for beginning riders ages 2-4 years… |
10 |
0.3094387191860244 |
| Cymbal Spark Jr. |
Light, vibrant, and ready for adventure, the Spark Jr. is the perfect first bike for young riders (ages 5-8)… |
34 |
0.3412342902117166 |
| Cymbal Helios Helmet |
Safety meets style with the Cymbal children's bike helmet… |
100 |
0.4197863319656684 |
| Cymbal Breeze |
Cruise in style and embrace effortless pedaling with the Breeze electric bike… |
72 |
0.485231776523978 |
| Cymbal Phoenix Lights |
See and be seen with the Phoenix bike lights… |
87 |
0.5251486508206732 |
Cliquez sur Vérifier ma progression pour valider l'objectif.
Effectuer une recherche vectorielle à l'aide d'embeddings textuels dans Spanner
Félicitations !
Dans cet atelier, vous avez appris à créer un modèle d'embeddings dans Spanner et à le configurer vers le point de terminaison d'un modèle Vertex AI, à générer et stocker des embeddings textuels dans une table Spanner et à effectuer une recherche vectorielle dans Spanner à l'aide des embeddings textuels stockés.
Étapes suivantes et informations supplémentaires
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 28 octobre 2025
Dernier test de l'atelier : 28 octobre 2025
Copyright 2026 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.