L'un des meilleurs outils pour améliorer la qualité des réponses des grands modèles de langage (LLM) est la génération augmentée par récupération (RAG). Le RAG est le modèle qui consiste à récupérer des données non publiques et à les utiliser pour enrichir la requête envoyée au LLM. Le RAG permet au LLM de générer des réponses plus précises en fonction des données incluses dans la requête.
Vous allez utiliser AlloyDB, la base de données Google Cloud évolutive, performante et compatible avec PostgreSQL pour stocker et rechercher un type particulier de données vectorielles appelées "embeddings vectoriels" (ou "plongements vectoriels"). Les embeddings vectoriels peuvent être récupérés à l'aide d'une recherche sémantique, qui permet de récupérer les données disponibles les plus pertinentes par rapport à la requête en langage naturel de l'utilisateur. Les données récupérées sont ensuite transmises au LLM dans la requête.
Vous allez également utiliser Vertex AI, la plate-forme de développement d'IA unifiée et entièrement gérée de Google Cloud, qui permet de créer et d'utiliser l'IA générative. Votre application utilise Gemini Pro, un modèle de fondation multimodal qui permet d'ajouter des fichiers image, audio, vidéo et PDF dans des requêtes textuelles ou de chat, et qui est capable de comprendre un contexte de grande taille.
Objectifs de l'atelier
Dans cet atelier, vous allez découvrir :
comment le RAG améliore les fonctionnalités LLM en récupérant des informations pertinentes dans une base de connaissances ;
comment utiliser AlloyDB pour trouver des informations pertinentes à l'aide de la recherche sémantique ;
comment utiliser Vertex AI et les modèles de fondation de Google pour fournir des capacités d'IA générative performantes à vos applications.
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Remarque : 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 Qwiklabs 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. Des identifiants temporaires vous sont fournis pour vous permettre de 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 déjà 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.
Démarrer votre atelier et vous connecter à la console
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous verrez un panneau contenant les identifiants temporaires à utiliser pour cet atelier.
Copiez le nom d'utilisateur, puis cliquez sur Ouvrir la console Google.
L'atelier lance les ressources, puis la page Sélectionner un compte dans un nouvel onglet.
Remarque : Ouvrez les onglets dans des fenêtres distinctes, placées côte à côte.
Sur la page "Sélectionner un compte", cliquez sur Utiliser un autre compte. La page de connexion s'affiche.
Collez le nom d'utilisateur que vous avez copié dans le panneau "Détails de connexion". Copiez et collez ensuite le mot de passe.
Remarque : Vous devez utiliser les identifiants fournis dans le panneau "Détails de connexion", et non vos identifiants Google Cloud Skills Boost. Si vous possédez un compte Google Cloud, ne vous en servez pas pour cet atelier (vous éviterez ainsi que des frais vous soient 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 aux essais offerts.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
Cliquez sur Continuer.
Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project =
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Initialiser l'environnement de base de données
Dans cette tâche, vous allez installer un client PostgreSQL et le connecter à l'instance AlloyDB.
Installer un client PostgreSQL
Une machine virtuelle (VM) a été créée. Cette VM héberge l'application. Vous allez également créer le client PostgreSQL sur cette VM.
Pour vous connecter à la VM, exécutez la commande suivante :
gcloud compute ssh app-vm --zone={{{project_0.default_zone | ZONE }}}
Si vous êtes invité à donner votre autorisation, cliquez sur Autoriser.
Pour chaque question posée par la commande gcloud compute ssh, cliquez sur Entrée ou Retour pour spécifier la valeur par défaut.
Après un court délai, vous êtes connecté à la VM.
Pour installer le client PostgreSQL, exécutez les commandes suivantes dans la session de la VM :
sudo apt-get update
sudo apt-get install --yes postgresql-client
Remarque : Il est possible que le client soit déjà installé.
Se connecter à l'instance AlloyDB
Une instance AlloyDB a déjà été créée.
Pour créer les variables de shell requises, exécutez la commande suivante :
Une fois l'installation terminée, vous restez dans l'environnement virtuel Python, avec une invite (.venv).
Si la session SSH de la VM expire ou si l'onglet est fermé, vous pouvez vous reconnecter à la VM via SSH et utiliser la commande source ~/.venv/bin/activate pour redémarrer l'environnement virtuel Python.
Pour vérifier la version de Python, exécutez la commande suivante :
Tâche 4 : Insérer des données dans l'exemple de base de données
Dans cette tâche, vous allez insérer des exemples de données dans la base de données vectorielle dans AlloyDB. Ces données sont utilisées pour l'exemple d'application de chat.
Pour afficher le modèle de données, exécutez la commande suivante :
cd ~/genai-databases-retrieval-app
cat retrieval_service/models/models.py
Les modèles de données Python sont présentés ici. Le modèle inclut les aéroports, les vols, les services disponibles dans les terminaux, les règles et les billets.
Pour voir un exemple de données sur les aéroports, exécutez les commandes suivantes :
head -1 data/airport_dataset.csv; grep SFO data/airport_dataset.csv
Ces commandes affichent l'en-tête CSV qui spécifie les noms de colonne de l'ensemble de données "airport", suivi de la ligne correspondant à l'aéroport international de San Francisco (SFO). Les données du modèle "airport" peuvent être récupérées en fonction du code IATA (International Air Transport Association), ou par pays, ville et nom de l'aéroport. Vous pouvez utiliser la recherche par mots clés pour trouver des lignes dans ce tableau (il n'y a pas d'embeddings vectoriels pour ces données).
Pour voir un exemple de données sur les vols, exécutez les commandes suivantes :
head -1 data/flights_dataset.csv; grep -m10 "SFO" data/flights_dataset.csv
Ces commandes affichent l'en-tête CSV qui spécifie les noms de colonne de l'ensemble de données "flights", suivi des 10 premières lignes de vols à destination ou en provenance de l'aéroport de San Francisco. Les données du modèle "flights" peuvent être récupérées en fonction de la compagnie aérienne et du numéro de vol, ou des codes des aéroports de départ et d'arrivée.
Pour voir un exemple de données sur les services, exécutez la commande suivante :
head -2 data/amenity_dataset.csv
Cette commande affiche l'en-tête CSV qui spécifie les noms de colonne de l'ensemble de données "amenity", suivi du premier service.
Vous remarquerez que le premier service comprend plusieurs valeurs simples (nom, description, emplacement, terminal, catégorie et horaires d'ouverture). La valeur suivante est content, qui intègre le nom, la description et l'emplacement. La dernière valeur est embedding, c'est-à-dire l'embedding vectoriel de la ligne.
L'embedding est un tableau de 768 nombres qui est utilisé lors d'une recherche sémantique. Ces embeddings sont calculés à l'aide d'un modèle d'IA fourni par Vertex AI. Quand un utilisateur effectue une requête, un embedding vectoriel peut être créé à partir de la requête, et les données avec des embeddings vectoriels proches de l'embedding de la recherche peuvent être récupérées.
Les données de règles utilisent également des embeddings vectoriels de manière similaire.
Remarque : Le calcul des embeddings prend un certain temps. Ils sont donc déjà fournis. Vous pouvez examiner le script run_generate_embeddings.py pour voir comment les embeddings sont générés.
Pour créer un fichier de configuration de base de données, exécutez les commandes suivantes :
export PGUSER={{{project_0.startup_script.gcp_alloydb_user | PG_USER}}}
export PGPASSWORD={{{project_0.startup_script.gcp_alloydb_password | PG_PASSWORD}}}
export PROJECT_ID=$(gcloud config get-value project)
export REGION={{{project_0.default_region | REGION }}}
export ADBCLUSTER={{{project_0.startup_script.gcp_alloydb_cluster_name | CLUSTER}}}
export INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
cd ~/genai-databases-retrieval-app/retrieval_service
cp example-config.yml config.yml
sed -i s/127.0.0.1/$INSTANCE_IP/g config.yml
sed -i s/my-user/$PGUSER/g config.yml
sed -i s/my-password/$PGPASSWORD/g config.yml
sed -i s/my_database/assistantdemo/g config.yml
cat config.yml
Le fichier de configuration config.yml est créé avec l'adresse IP de l'instance, le nom d'utilisateur, le mot de passe et la base de données mis à jour. Votre fichier de configuration devrait maintenant se présenter comme suit :
La première commande ajoute tous les packages requis à l'environnement virtuel Python, et la seconde insère les données dans la base de données.
Insérez l'exemple d'ensemble de données dans la base de données.
Tâche 5 : Créer un compte de service pour le service de récupération
Dans cette tâche, vous allez créer un compte de service pour le service de récupération.
Le service de récupération est chargé d'extraire les informations pertinentes de la base de données. Il extrait les informations nécessaires de la base de données en fonction de la requête d'une application d'IA. Ce compte de service est utilisé comme identité de ce service Cloud Run.
Créer un compte de service
L'utilisateur SSH ne dispose pas de l'autorisation nécessaire pour que l'instance de projet attribue le rôle approprié au compte de service. Vous allez créer le compte de service dans un nouvel onglet Cloud Shell.
Pour ouvrir un nouvel onglet dans Cloud Shell, cliquez sur Ouvrir un nouvel onglet (+).
Pour créer un compte de service et lui accorder les privilèges nécessaires, exécutez les commandes suivantes dans le nouvel onglet :
Ce compte de service se voit attribuer le rôle roles/aiplatform.user, qui permet au service d'appeler Vertex AI.
Pour fermer le nouvel onglet, exécutez la commande suivante :
exit
Créez le compte de service "retrieval-identity".
Tâche 6 : Déployer le service de récupération sur Cloud Run
Dans cette tâche, vous allez déployer le service de récupération sur Cloud Run.
Pour déployer le service de récupération, exécutez les commandes suivantes dans l'onglet Cloud Shell SSH de la VM :
export REGION={{{project_0.default_region | REGION }}}
cd ~/genai-databases-retrieval-app
gcloud alpha run deploy retrieval-service \
--source=./retrieval_service/\
--no-allow-unauthenticated \
--service-account retrieval-identity \
--region $REGION \
--network=default \
--quiet
Veuillez patienter quelques minutes jusqu'à la fin du déploiement.
Pour examiner la service, exécutez la commande suivante :
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
Si le message "Hello World" s'affiche, cela signifie que le service est opérationnel et traite les requêtes.
Déployez le service de récupération.
Tâche 7 : Enregistrer l'écran de consentement OAuth
Dans cette tâche, vous allez enregistrer l'écran de consentement OAuth qui s'affiche lorsque les utilisateurs se connectent.
Lorsque vous utilisez OAuth 2.0 pour gérer les autorisations, Google affiche un écran de consentement pour recueillir l'accord de l'utilisateur concernant le partage de ses données avec l'application.
Dans la console Google Cloud, accédez au menu de navigation (), puis cliquez sur API et services > Écran de consentement OAuth.
Cliquez sur Commencer.
Dans le champ Nom de l'application, saisissez Cymbal Air.
Cliquez sur Adresse e-mail d'assistance utilisateur, sur l'adresse e-mail de l'élève, puis sur Suivant.
Dans le champ Audience, sélectionnez Interne, puis cliquez sur Suivant.
Les utilisateurs ayant accès au projet doivent pouvoir se connecter à l'application.
Dans le panneau de gauche des instructions de l'atelier, copiez le nom d'utilisateur.
Dans le champ Coordonnées, collez le nom d'utilisateur copié.
Cliquez sur Suivant.
Cochez la case pour accepter le règlement sur les données utilisateur. Cliquez sur Continuer, puis sur Créer.
L'écran de consentement est maintenant configuré.
Tâche 8 : Créer un ID client pour l'application
Dans cette tâche, vous allez créer un ID client pour l'application.
L'application nécessite un ID client pour utiliser le service OAuth de Google. Vous devez configurer les origines autorisées à effectuer cette requête, ainsi qu'un URI de redirection vers lequel l'application Web est redirigée une fois que l'utilisateur a accepté de se connecter.
Dans la console Google Cloud, accédez au menu de navigation (), puis cliquez sur API et services > Identifiants.
Cliquez sur + Créer des identifiants, puis sur ID client OAuth.
Un ID client sert à identifier une application unique auprès des serveurs OAuth de Google.
Dans le champ Type d'application, sélectionnez Application Web.
Dans le champ Nom, saisissez Cymbal Air.
Vous pouvez générer l'URI d'origine et de redirection JavaScript à l'aide de Cloud Shell.
Pour ouvrir un nouvel onglet dans Cloud Shell, cliquez sur Ouvrir un nouvel onglet (+).
Pour obtenir l'URI d'origine et de redirection, exécutez les commandes suivantes dans le nouvel onglet :
Dans cette tâche, vous allez exécuter un exemple d'application de chat qui utilise le service de récupération.
Exécuter l'application
Pour installer les exigences Python de l'application de chat, exécutez les commandes suivantes dans l'onglet Cloud Shell SSH de la VM :
cd ~/genai-databases-retrieval-app/llm_demo
pip install -r requirements.txt
Avant de démarrer l'application, vous devez configurer certaines variables d'environnement. Les fonctionnalités de base de l'application, y compris l'interrogation des vols et la restitution des services de l'aéroport, nécessitent une variable d'environnement nommée BASE_URL contenant l'URL de base du service de récupération.
Pour spécifier l'URL de base du service de récupération, exécutez les commandes suivantes :
export BASE_URL=$(gcloud run services list --filter="(retrieval-service)" --format="value(URL)")
echo $BASE_URL
L'URL de base est utilisée par l'application locale pour accéder au service de récupération.
Pour exécuter l'application, exécutez la commande suivante :
python run_app.py
Votre réponse doit ressembler à ceci :
(.venv) student-03-b2f40c6c89d6@app-vm:~/genai-databases-retrieval-app/llm_demo$ python run_app.py
INFO: Started server process [32894]
INFO: Waiting for application startup.
Loading application...
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
L'application est maintenant en cours d'exécution.
Se connecter à la VM
Vous avez plusieurs façons de vous connecter à l'application exécutée sur la VM. Par exemple, vous pouvez ouvrir le port 8081 sur la VM en utilisant les règles de pare-feu dans le VPC ou créer un équilibreur de charge avec une adresse IP publique. Dans ce cas, vous allez utiliser un tunnel SSH vers la VM en remplaçant le port 8080 de Cloud Shell par le port 8081 de la VM.
Pour ouvrir un nouvel onglet dans Cloud Shell, cliquez sur Ouvrir un nouvel onglet (+).
Pour créer un tunnel SSH vers le port de la VM, exécutez la commande suivante dans le nouvel onglet :
La commande gcloud connecte le port 8080 dans Cloud Shell au port 8081 sur la VM. Vous pouvez ignorer le message d'erreur indiquant qu'il est impossible d'attribuer l'adresse demandée.
Pour exécuter l'application dans le navigateur Web, cliquez sur Aperçu sur le Web, puis sélectionnez Prévisualiser sur le port 8080.
Un nouvel onglet s'ouvre dans le navigateur et l'application s'exécute. L'application Cymbal Air affiche le message "Bienvenue chez Cymbal Air ! Que puis-je faire pour vous ?".
Saisissez la requête suivante :
Quand est le prochain vol pour Dallas ?
L'application renvoie le prochain vol de SFO à Dallas/Fort Worth.
Saisissez la requête suivante :
Quels sont les restaurants à proximité de la porte d'embarquement ?
L'application comprend le contexte et affiche les restaurants à proximité de la porte d'embarquement à l'aéroport de San Francisco.
Tâche 10 : Se connecter à l'application (facultatif)
Dans cette tâche, vous allez vous connecter à l'application pour réserver le vol.
Cliquez sur Connexion.
Une fenêtre pop-up s'ouvre.
Dans la fenêtre pop-up, sélectionnez l'élève.
Le compte élève est connecté.
Si vous êtes invité à confirmer que vous souhaitez vous connecter en tant qu'élève, cliquez sur Confirmer.
Saisissez la requête suivante :
Réservez-moi ce vol, s'il vous plaît.
L'application présente le vol dont il est question.
Cliquez sur Cela me semble bien. Merci de procéder à la réservation.
Le vol est réservé.
Saisissez la requête suivante :
Quels vols ai-je réservés ?
Le vol que vous venez de réserver s'affiche.
L'application de chat peut aider à répondre à ce type de questions :
Quand est le prochain vol pour Miami ?
Y a-t-il des boutiques de luxe aux environs de la porte D50 ?
Où puis-je prendre un café près de la porte A6 ?
L'application utilise les derniers modèles de fondation de Google pour générer des réponses et les enrichir avec des informations sur les vols et services issues de la base de données opérationnelle AlloyDB. Pour en savoir plus sur cette application de démonstration, consultez la page GitHub du projet.
Félicitations !
Vous avez réussi à créer une application de chat qui exploite les grands modèles de langage (LLM) et la génération augmentée par récupération (RAG) pour créer des conversations engageantes et informatives.
Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.
Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.
Le nombre d'étoiles correspond à votre degré de satisfaction :
1 étoile = très insatisfait(e)
2 étoiles = insatisfait(e)
3 étoiles = ni insatisfait(e), ni satisfait(e)
4 étoiles = satisfait(e)
5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.
Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
Un atelier à la fois
Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci
Utilisez la navigation privée pour effectuer l'atelier
Ouvrez une fenêtre de navigateur en mode 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.
Dans cet atelier, vous allez créer une application de chat qui utilise la génération augmentée par récupération (RAG) pour enrichir les requêtes avec des données récupérées dans AlloyDB.
Durée :
10 min de configuration
·
Accessible pendant 90 min
·
Terminé après 90 min