GSP1289

Présentation
Vous vous inquiétez des hallucinations générées par l'IA ? Bien qu'elle puisse être une ressource précieuse, l'intelligence artificielle génère parfois des réponses inexactes, obsolètes ou trop générales, un phénomène connu sous le nom d'"hallucination". Dans cet atelier, vous allez apprendre à implémenter un pipeline de génération augmentée par récupération (RAG) pour résoudre ce problème. Le RAG améliore les grands modèles de langage (LLM, Large Language Models) comme Gemini en ancrant leurs résultats dans des informations contextuellement pertinentes issues d'un ensemble de données spécifique.
Supposons que vous aidiez Coffee-on-Wheels, une entreprise pionnière spécialisée dans la vente de café dans des camions, à analyser les commentaires des clients sur ses services. Sans accès aux données les plus récentes, Gemini risque de fournir des réponses inexactes. Pour résoudre ce problème, vous décidez de créer un pipeline RAG en trois étapes :
-
Générer des embeddings : convertissez le texte des commentaires des clients en embeddings vectoriels. Il s'agit de représentations numériques des données qui capturent la signification sémantique.
-
Effectuer des recherches dans l'espace vectoriel : créez un index de ces vecteurs, recherchez des éléments similaires et récupérez-les.
-
Générer des réponses améliorées : enrichissez Gemini avec les informations récupérées pour générer des réponses plus précises et pertinentes.
BigQuery permet de se connecter facilement aux modèles d'IA générative distants sur Vertex AI. Il fournit également diverses fonctions pour les embeddings, la recherche vectorielle et la génération de texte directement via des requêtes SQL ou des notebooks Python.
Pour en savoir plus, consultez le cours Créer des embeddings, et utiliser la recherche vectorielle et le RAG avec BigQuery sur Google Cloud Skills Boost.
Points abordés
- Créer une connexion source et accorder des autorisations IAM
- Générer des embeddings et convertir des données textuelles en embeddings vectoriels
- Rechercher des éléments similaires dans l'espace vectoriel et les récupérer
- Générer une réponse améliorée en enrichissant Gemini avec les résultats de recherche
Prérequis
Pour réaliser cet atelier, vous devez être familiarisé avec BigQuery et le codage SQL.
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 une connexion source et accorder des autorisations IAM
Créer une connexion source
Pour utiliser des modèles d'IA générative distants sur Vertex AI dans BigQuery, comme Gemini et un modèle d'embedding, créez une connexion à une source externe.
- Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur BigQuery.
- Accédez à l'Explorateur, cliquez sur + Ajouter, puis sélectionnez Connexions à des sources de données externes.
- Dans le menu déroulant Type de connexion, sélectionnez Modèles distants Vertex AI, fonctions à distance et BigLake (Ressource Cloud).
- Dans le champ ID de connexion, saisissez
embedding_conn
.
- Cliquez sur Créer une connexion.
- Une fois la connexion créée, cliquez sur Accéder à la connexion dans le pop-up de confirmation pour accéder à la connexion, puis copiez la valeur affichée dans le champ ID du compte de service. Vous en aurez besoin pour attribuer des autorisations à ce compte.
Accorder des autorisations IAM
Pour utiliser les données BigQuery et les ressources Vertex AI, accordez au compte de service les autorisations IAM nécessaires.
- Vous devez ensuite accorder des autorisations via IAM. Suivez la procédure ci-dessous :
- Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur IAM et administration > IAM.
- Cliquez sur Accorder l'accès.
- Dans la section Ajouter des comptes principaux :
- Dans le champ de texte Nouveaux comptes principaux, collez la valeur affichée dans ID du compte de service que vous avez copiée précédemment.
- Sous Attribuer un rôle, sélectionnez les rôles suivants (effectuez une recherche si nécessaire) :
- Propriétaire de données BigQuery
- Utilisateur Vertex AI
- Cliquez sur Enregistrer pour appliquer les modifications.
- Accédez à API et services dans le menu de navigation (
), cliquez sur + Activer les API et les services, recherchez API Vertex AI
, puis cliquez sur le bouton Activer.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer une connexion source et accorder des autorisations IAM
Tâche 2 : Générer des embeddings
-
Dans la console Google Cloud, accédez au menu de navigation (
), puis cliquez sur BigQuery.
-
Dans l'Explorateur, cliquez sur les trois points à côté du projet, puis sur Créer un ensemble de données. Dans le champ ID de l'ensemble de données, saisissez CustomerReview
. Laissez la valeur par défaut des autres options et cliquez sur Créer un ensemble de données.
-
Pour vous connecter au modèle d'embedding, exécutez la requête SQL suivante dans l'éditeur de requête :
CREATE OR REPLACE MODEL `CustomerReview.Embeddings`
REMOTE WITH CONNECTION `us.embedding_conn`
OPTIONS (ENDPOINT = 'text-embedding-005');
- Pour importer l'ensemble de données à partir d'un fichier CSV, exécutez la requête SQL suivante :
LOAD DATA OVERWRITE CustomerReview.customer_reviews
(
customer_review_id INT64,
customer_id INT64,
location_id INT64,
review_datetime DATETIME,
review_text STRING,
social_media_source STRING,
social_media_handle STRING
)
FROM FILES (
format = 'CSV',
uris = ['gs://spls/gsp1249/customer_reviews.csv']
);
-
(Facultatif) Pour vérifier les données importées dans le tableau, cliquez sur Accéder à la table. Trouvez le schéma de la table et prévisualisez les données.
-
Pour générer des embeddings à partir des commentaires récents des clients et les stocker dans une table, exécutez la requête SQL suivante dans l'éditeur de requête :
CREATE OR REPLACE TABLE `CustomerReview.customer_reviews_embedded` AS
SELECT *
FROM ML.GENERATE_EMBEDDING(
MODEL `CustomerReview.Embeddings`,
(SELECT review_text AS content FROM `CustomerReview.customer_reviews`)
);
- (Facultatif) Pour examiner les résultats de l'embedding, cliquez sur Accéder à la table. Trouvez le schéma de la table et prévisualisez les données. Notez que les résultats de l'embedding sont des nombres à virgule flottante et qu'ils ne sont pas forcément interprétables tout de suite.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Générer des embeddings
Tâche 3 : Rechercher des éléments similaires dans l'espace vectoriel et les récupérer
- Pour créer un index de l'espace de recherche de vecteurs, exécutez la requête SQL suivante :
Remarque : Pour les ensembles de données contenant moins de 5 000 lignes, comme dans cet atelier, il n'est pas utile de créer un index. Cette étape présente le code à exécuter pour créer un index de l'espace vectoriel lorsque cela est nécessaire pour des ensembles de données plus volumineux.
CREATE OR REPLACE VECTOR INDEX `CustomerReview.reviews_index`
ON `CustomerReview.customer_reviews_embedded`(ml_generate_embedding_result)
OPTIONS (distance_type = 'COSINE', index_type = 'IVF');
- Pour rechercher des éléments similaires dans l'espace vectoriel et les récupérer, exécutez la requête SQL suivante :
CREATE OR REPLACE TABLE `CustomerReview.vector_search_result` AS
SELECT
query.query,
base.content
FROM
VECTOR_SEARCH(
TABLE `CustomerReview.customer_reviews_embedded`,
'ml_generate_embedding_result',
(
SELECT
ml_generate_embedding_result,
content AS query
FROM
ML.GENERATE_EMBEDDING(
MODEL `CustomerReview.Embeddings`,
(SELECT 'service' AS content)
)
),
top_k => 5,
options => '{"fraction_lists_to_search": 0.01}'
);
- (Facultatif) Pour vérifier les résultats de la requête, cliquez sur Accéder à la table. Trouvez le schéma de la table et prévisualisez les données.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Rechercher des éléments similaires dans l'espace vectoriel et les récupérer
Tâche 4 : Générer une réponse améliorée
-
Pour vous connecter au modèle Gemini, exécutez la requête SQL suivante :
CREATE OR REPLACE MODEL `CustomerReview.Gemini`
REMOTE WITH CONNECTION `us.embedding_conn`
OPTIONS (ENDPOINT = 'gemini-pro');
-
Pour améliorer les réponses de Gemini, fournissez-lui des données pertinentes et récentes récupérées à partir de la recherche vectorielle en exécutant la requête suivante :
SELECT
ml_generate_text_llm_result AS generated
FROM
ML.GENERATE_TEXT(
MODEL `CustomerReview.Gemini`,
(
SELECT
CONCAT(
'Summarize what customers think about our services',
STRING_AGG(FORMAT('review text: %s', base.content), ',\n')
) AS prompt
FROM
`CustomerReview.vector_search_result` AS base
),
STRUCT(
0.4 AS temperature,
300 AS max_output_tokens,
0.5 AS top_p,
5 AS top_k,
TRUE AS flatten_json_output
)
);
- Vérifiez les résultats générés par Gemini dans la section Résultats de la requête sous l'éditeur de requête.
Questions pour vous :
1. Comment déterminer si Gemini génère de meilleures réponses avec le RAG ? Essayez de le tester avec du code.
2. Comment améliorer le code ? Par exemple, au lieu d'enregistrer les résultats de la recherche vectorielle dans une table (tâche 3), ce processus pourrait-il être intégré directement à la génération de réponses (tâche 4) pour une récupération en temps réel ?
Penchez-vous sur ces questions pendant le temps qu'il vous reste à la fin de l'atelier. Bonne chance !
Cliquez sur Vérifier ma progression pour valider l'objectif.
Générer la réponse améliorée avec les données récupérées à partir de la recherche vectorielle
Félicitations !
Pour aider Coffee-on-Wheels à exploiter les commentaires des clients sur ses services, vous avez implémenté un pipeline RAG dans BigQuery et fourni ainsi à Gemini des informations pertinentes et à jour. Vous vous êtes connecté à des modèles d'IA générative distants, y compris à un modèle d'embedding et à Gemini, et vous avez suivi trois étapes : créer des embeddings, faire des recherches dans un espace vectoriel et générer une réponse améliorée. L'objectif est de vous permettre d'appliquer cette même approche pour résoudre vos propres problèmes d'hallucinations d'IA.
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 : 22 janvier 2025
Dernier test de l'atelier : 22 janvier 2025
Copyright 2025 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.