Créer un système de recherche de qualité Google avec Vertex AI

1. Avant de commencer

Voici quelques points à noter avant de poursuivre cet atelier de programmation.

Prérequis

  • Connaissances de base sur les LLM
  • Connaissances de base sur les systèmes RAG

Points abordés

  • Créer un moteur de recherche de qualité Google capable de répondre à vos questions à partir des données que vous importez
  • Créer un datastore Vertex AI
  • Créer des agents Vertex AI
  • Utiliser Cloud Run pour déployer l'application

Prérequis

  • Un compte Google Cloud
  • Un projet Google Cloud
  • Un IDE avec un terminal

Introduction

La recherche Google est un outil puissant qui utilise un index massif de pages Web et d'autres contenus afin de fournir des résultats pertinents aux requêtes des utilisateurs. Cela est rendu possible par une technique appelée "génération augmentée par récupération" (RAG), qui est une technique clé de l'IA moderne.

Le RAG fonctionne en récupérant d'abord les passages pertinents d'un corpus de documents. Pour ce faire, nous utilisons diverses méthodes, telles que la mise en correspondance des mots clés, la similarité sémantique et le machine learning. Une fois les passages pertinents récupérés, ils sont utilisés pour générer un résumé ou une réponse à la requête de l'utilisateur.

L'avantage principal de la génération augmentée par récupération est qu'elle permet aux modèles de langage d'éviter les hallucinations. L'hallucination est un terme utilisé pour décrire la génération de texte qui n'est pas étayée par les preuves du corpus de documents. Cela peut se produire lorsque les modèles de langage ne sont pas capables de faire la distinction entre des informations pertinentes et non pertinentes.

Le RAG permet d'éviter les hallucinations en s'assurant que le texte généré est toujours basé sur des preuves issues du corpus de documents. Il s'agit donc d'une source d'informations plus fiable.

Le RAG est une technique puissante utilisée dans diverses applications, y compris les moteurs de recherche, les chatbots et les systèmes de réponse aux questions. Il est susceptible de jouer un rôle de plus en plus important dans l'IA dans les années à venir.

Voici quelques exemples d'utilisation du RAG dans la pratique:

  • De nombreux systèmes de recherche utilisent la RAG pour générer des résultats de recherche pertinents par rapport à la requête de l'utilisateur.
  • Les chatbots utilisent le RAG pour générer des réponses aux questions des utilisateurs qui sont informatives et attrayantes.
  • Les systèmes de questions-réponses utilisent la génération augmentée de récupération pour générer des réponses précises et complètes aux questions des utilisateurs.

La génération aléatoire de texte est une technique polyvalente qui peut être utilisée pour générer du texte dans divers domaines et applications. Il s'agit d'un outil puissant qui contribue à rendre l'IA plus intelligente et plus informative.

Dans cet atelier de programmation, nous allons créer un système de génération augmentée de récupération qui peut vous aider à répondre à vos questions à l'aide du corpus que vous avez importé. La plate-forme RAG prête à l'emploi appelée Vertex AI Search/Agent Builder vous aide à accélérer la création de systèmes RAG, ce qui vous évite de collecter manuellement les documents, d'analyser, de diviser, de générer des embeddings, d'étendre les requêtes, de récupérer des candidats et de les classer. Si le système de RAG prêt à l'emploi vous aide à démarrer rapidement, Google Cloud fournit également des API discrètes pour chaque processus afin de créer vos propres systèmes de RAG personnalisés, ce qui vous aide à affiner vos systèmes de RAG en fonction des exigences de votre entreprise.

Objectifs de l'atelier

À la fin de cet atelier de programmation, vous aurez déployé un système de RAG opérationnel qui pourra vous aider à répondre à vos questions avec des informations factuelles, étayées et citées avec les bonnes références.

Vous comprendrez également mieux comment utiliser les API de recherche Vertex AI pour créer cette architecture de RAG sur Google Cloud. Vous apprendrez également à déployer cette application à architecture RAG (avec un frontend et un backend) sur Cloud Run, une plate-forme sans serveur permettant de déployer des applications en tant que conteneurs sur Google Cloud.

2d055ded874603a6.png

Fonctionnement de l'application

  • Importer vos données: les utilisateurs peuvent importer leur propre corpus de données (fichier PDF, par exemple) en entrée.
  • Poser des requêtes dans la barre de recherche: les utilisateurs peuvent poser des questions dans la barre de recherche en fonction du corpus de données importées.
  • Récupérer des réponses: les utilisateurs peuvent récupérer les résultats de recherche/candidats et vérifier la véracité/l'exactitude de la réponse récupérée en fonction de la pertinence de la requête.

2. Configuration de l'environnement

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud. Pour y accéder, cliquez sur "Activer Cloud Shell" en haut de la console Google Cloud.

1829c3759227c19b.png

  1. Une fois connecté à Cloud Shell, vérifiez que vous êtes déjà authentifié et que le projet est défini sur votre ID de projet à l'aide de la commande suivante:
gcloud auth list
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
  1. Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
  1. Assurez-vous que les API suivantes sont activées:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

L'alternative à l'utilisation de la commande gcloud consiste à passer par la console à l'aide de ce lien. Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.

3. Étape 1: Créer un bucket GCP

  • Accédez à la console, puis dans la barre de recherche, saisissez "Cloud Storage".
  • Sélectionnez Cloud Storage dans les résultats suggérés. 21d2bc910e71f7ec.png
  • Cliquez sur "Créer un bucket".

adf5c0382f6c3540.png

  • Attribuez un nom unique au bucket
  • Cliquez sur "Continuer".
  • Dans le champ "Type d'emplacement", sélectionnez "Multirégional".
  • Dans le menu déroulant, assurez-vous de sélectionner l'option us (multiple regions in United States).

731aead7d8497725.png

  • Cliquez sur "Créer un bucket".

f7ac409ed9c4af21.png

4. Étape 2: Créez un data store Vertex AI

  • Dans la barre de recherche de la page de la console, saisissez "Vertex AI Agent Builder".
  • Sélectionnez le premier produit, "Agent Builder".

c4a67b92bb7900e3.png

  • Sur la page de l'outil de création d'agents, cliquez sur "Data stores" (Datastores), comme indiqué dans la barre de navigation de gauche.

f86f67d344d398fb.png

  • Cliquez sur "Créer un datastore".

e64e771f33543f46.png

  • Sélectionner Cloud Storage comme datastore
  • Cliquez sur "Sélectionner" sous l'icône Cloud Storage.

3a8d22888e7eedc2.png

  • Dans l'onglet situé sous l'option "Dossier", cliquez sur le bouton "Parcourir".
  • Sélectionnez le bucket que vous avez créé à l'étape 1.
  • Parmi les options ci-dessous, veillez à sélectionner "Documents non structurés liés (JSONL avec métadonnées)".
  • Cliquez sur "Continuer".

13876b5d12dbe1fb.png

  • Sur la page "Configuration", sélectionnez "global" comme emplacement de votre data store.
  • Attribuez un nom identifiable à votre data store
  • Cliquez sur "Créer".

618b7a456fbffad4.png

Brownie :

  • Juste au-dessus du bouton "Créer", vous pouvez voir l'option de traitement des documents.
  • Vous pouvez tester différents analyseurs, comme l'analyseur numérique, l'analyseur OCR ou l'analyseur de mise en page.
  • Vous pouvez également activer la fragmentation avancée et fournir vos propres limites de taille de fragment personnalisées.

38471c1d3411610d.png

5. Étape 3: Créez un agent

  • Une fois votre data store créé, cliquez sur l'application dans la barre de navigation de gauche, puis sélectionnez "Applications".
  • Cliquez sur le bouton "Create App" (Créer une application).
  • Sélectionnez le type d'application "Réseau de Recherche" (vous pouvez également créer des agents, des bots de conversation, des recommandations, etc.).

ae5294e33f63567c.png

  • Veillez à sélectionner "Générique" sous "Contenu". Vous pouvez également sélectionner "Médias" ou "Recommandations" en fonction du data store, du type de données et des systèmes que vous souhaitez créer.
  • Veillez à activer à la fois les fonctionnalités Enterprise Edition et Advanced LLM
  • Indiquez le nom de votre application
  • Indiquer le nom de votre entreprise

f8a41c9751f7a8d3.png

  • Veillez à sélectionner la région "global".
  • Cliquez sur "Continuer" ed17b18e094ba59a.png.
  • À l'écran suivant, sélectionnez le datastore que vous avez créé à l'étape 2.
  • Cliquez sur "Créer".

bc77006e0025ae9e.png

6. Étape 4: Dockerisez votre application

  • Ouvrir votre terminal dans la console Google Cloud
  • Clonez le dépôt <sample_repository_link> à l'aide de la commande suivante :

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Changez de répertoire et accédez au dépôt cloné à l'aide de la commande suivante :

cd vertex-ai-search-agent-builder-demo

  • Structure des dossiers
  • Backend : contiendra une implémentation d'API basée sur Python qui vous aidera à créer des points de terminaison RESTful avec lesquels votre frontend pourra interagir.
  • Frontend : contient une application basée sur React et diffuse l'UI. Il contiendra également les appels nécessaires au niveau de l'application au backend via des points de terminaison REST.
  • Dockerfile : ce fichier contiendra toutes les commandes permettant de créer un conteneur Docker
  • Dans la racine du répertoire du dépôt, exécutez la commande suivante pour créer une image Docker (remarque: veillez à utiliser l'indicateur - - platform lorsque vous créez des conteneurs Docker sur des MacBook utilisant des puces Apple Silicon telles que M1, M2, etc. Cet indicateur n'est pas nécessaire si vous effectuez la compilation sur une machine Windows ou si votre architecture de processeur est basée sur Intel)

docker build --platform linux/amd64 -t your-image-name .

  • Une fois la création du conteneur Docker terminée, exécutez la commande suivante pour ajouter les tags appropriés au conteneur afin de vous assurer de fournir une version de votre image. N'oubliez pas qu'il peut y avoir plusieurs versions de l'application, et donc plusieurs versions comme tags dans les conteneurs Docker. S'assurer que la dernière version stable est toujours utilisée est une bonne approche recommandée du point de vue du DevOps.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Une fois le taggage de l'image du conteneur Docker effectué, transférons-la vers Google Artifact Registry (GAR). GAR est une plate-forme entièrement gérée de Google qui vous aide à gérer et à contrôler les versions de vos conteneurs Docker. Exécutez la commande suivante pour transférer le conteneur tagué ci-dessus vers GAR. Pour en savoir plus, consultez le lien suivant : https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling.

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. Étape 5: Déployer votre application sur Cloud Run

  • Réduisez votre terminal. Dans la barre de recherche de la console Google Cloud, recherchez Cloud Run.
  • Cliquez sur le produit Cloud Run suggéré.

592103eb61c16738.png

  • Cliquez sur "Créer un service".
  • Sur la page suivante, assurez-vous que l'option "Déployer une révision à partir d'une image de conteneur existante" est sélectionnée.
  • En dessous, cliquez sur "Sélectionner".
  • Une barre de navigation s'affiche sur la droite.
  • Vérifiez que l'onglet "Artifact Registry" est bien sélectionné
  • Vérifiez que le projet est correctement sélectionné.
  • Cliquez sur la flèche pour développer l'accordéon du lien vers l'image de votre conteneur déployé.
  • Sélectionnez la balise du conteneur et développez-la (toujours sélectionnez les dernières déployées, avec les dernières balises appropriées, par exemple v1, v2, etc.).
  • Cliquez sur l'image du conteneur affichée sous le nom de la balise du conteneur.

aac35d55d7dd874e.png

  • Dans la zone "Configurer"
  • Indiquez un nom de service pour votre application Cloud Run (il fera partie de l'URL lorsque vous déploierez l'application sur Cloud Run).
  • Sélectionnez la région appropriée (dans ce cas, us-central1 ou toute autre région de votre choix).
  • Sous "Authentication" (Authentification)
  • Assurez-vous que l'option "Autoriser les appels non authentifiés" est sélectionnée
  • Sous "Allocation du processeur et tarification"
  • Sélectionnez "Le processeur n'est alloué que lors du traitement des requêtes".
  • Définissez l'échelle automatique du service sur 1 (à des fins de production, il est recommandé de disposer d'un nombre minimal d'instances en cours d'exécution pour gérer votre trafic quotidien.Vous pouvez même laisser la valeur sur 0, c'est-à-dire zéro).
  • Définissez "Contrôle d'entrée" sur "Tous" pour autoriser le trafic provenant d'Internet à accéder à votre application.
  • Cliquez sur "Créer".
  • Une instance Cloud Run sera déployée, et son provisionnement prendra quelques minutes

b8b147265b8d457b.png

  • Une fois le déploiement effectué, vous pourrez voir l'URL publique à partir de laquelle vous pouvez accéder à votre application Web.

1dfdb007c52581a1.png

8. Fonctionnement

  • Sur la page d'accueil de l'application, cliquez sur le bouton "Importer un document".
  • Importer votre fichier PDF
  • Une fois l'importation terminée
  • Cliquez sur la barre de recherche en haut de la page Web.
  • Rechercher des requêtes associées à votre document importé
  • Une fois que vous avez saisi votre requête et cliqué sur "Rechercher", toutes les réponses pertinentes du document que vous venez d'importer devraient s'afficher.
  • Vous pouvez vous amuser en examinant le code backend et en ajoutant d'autres configurations comme celles-ci :
  • Ajouter des extraits
  • Ajouter des segments extractifs
  • Ajouter des réponses
  • Ajuster les résultats les plus pertinents pour aider le LLM à résumer la réponse (par exemple, la vue d'ensemble de l'IA dans la recherche Google)
  • En tant que module complémentaire, vous pouvez également ajouter des balises de métadonnées lorsque vous importez le document. Cela vous aidera à générer des facettes et des catégories filtrables.

9. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet atelier de programmation ne soient facturées sur votre compte Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
  4. Vous pouvez également accéder à Cloud Run dans la console, sélectionner le service que vous venez de déployer, puis le supprimer.

10. Félicitations

Félicitations ! Vous avez réussi à créer un système de génération augmentée de récupération (RAG) rapide et prêt à l'emploi à l'aide des modèles de pointe de Google, et à fournir des résultats de qualité Google à vos requêtes de recherche. Cet atelier de programmation est destiné à des fins de démonstration uniquement. Des mesures de sécurité et des garde-fous supplémentaires doivent être configurés pour les cas d'utilisation en production. Vous trouverez ici le lien vers le dépôt complet. En exploitant Google Cloud, nous pouvons générer un système de classification RAG de bout en bout en seulement cinq étapes. Vous obtiendrez ainsi des résultats de qualité Google en quelques minutes. À mesure que l'IA générative et les grands modèles de langage évoluent, la création de tels systèmes RAG nous aide également à éviter les pièges liés à l'hallucination et à la mise en avant d'informations non citées.

Bien que ce ne soit qu'un point de départ, nous pouvons faire des merveilles avec les API DIY RAG entièrement personnalisables, qui vous offrent encore plus de transparence, de puissance et d'efficacité pour gérer efficacement chaque partie du pipeline.