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 des 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 pour fournir des résultats pertinents aux requêtes des utilisateurs. Cela est possible grâce à une technique appelée génération augmentée par récupération (RAG), qui est une technique clé de l'IA moderne.

Le processus RAG consiste d'abord à récupérer des passages pertinents à partir d'un corpus de documents. Pour ce faire, il utilise différentes méthodes, telles que la mise en correspondance de 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 du RAG est qu'il permet aux modèles de langage d'éviter les hallucinations. Le terme "hallucination" désigne 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 en mesure de faire la distinction entre les 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. Cela en fait une source d'informations plus fiable et plus digne de confiance.

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 au cours des prochaines années.

Voici quelques exemples d'utilisation pratique du RAG :

  • 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 informatives et intéressantes aux questions des utilisateurs.
  • Les systèmes de réponse aux questions utilisent le RAG pour générer des réponses précises et complètes aux questions des utilisateurs.

Le RAG 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 informative.

Dans cet atelier de programmation, nous allons créer un système RAG qui peut vous aider à répondre à vos questions à l'aide du corpus fourni 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 d'avoir à collecter, analyser, segmenter, générer des embeddings, étendre les requêtes, récupérer et classer manuellement les candidats. Bien que le système RAG prêt à l'emploi vous aide à démarrer rapidement, Google Cloud fournit également des API distinctes pour chaque processus afin de vous permettre de créer vos propres systèmes RAG. Vous pouvez ainsi affiner vos systèmes RAG pour les adapter aux besoins de votre entreprise.

Objectifs de l'atelier

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

Vous comprendrez également mieux comment utiliser les API Vertex AI Search pour créer cette architecture RAG sur Google Cloud. Vous apprendrez également à déployer cette application d'architecture RAG (avec frontend et 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 la demande

  • Importer vos données : les utilisateurs peuvent importer leur propre corpus de données (fichier PDF, par exemple) en tant qu'entrée.
  • Poser des questions dans la barre de recherche : les utilisateurs peuvent poser des questions dans la barre de recherche en fonction du corpus de données importé.
  • Récupérer des réponses : les utilisateurs peuvent récupérer les résultats/candidats de recherche et vérifier la factualité/l'ancrage 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

Vous pouvez également passer par la console en utilisant ce lien. Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.

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

  • Accédez à la console et saisissez "Cloud Storage" dans la barre de recherche.
  • 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 "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 datastore 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 Agent Builder, cliquez sur "Datastores" dans la barre de navigation de gauche.

f86f67d344d398fb.png

  • Cliquez sur "Créer un datastore".

e64e771f33543f46.png

  • Sélectionnez 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.
  • Dans les options ci-dessous, assurez-vous de sélectionner "Documents non structurés liés (JSONL avec métadonnées)".
  • Cliquez sur "Continuer".

13876b5d12dbe1fb.png

  • Sur la page de configuration, sélectionnez "global" comme emplacement de votre datastore.
  • Donnez 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 le découpage avancé et définir 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 "Recherche" (vous pouvez également créer des agents, des robots conversationnels, des recommandations, etc.).

ae5294e33f63567c.png

  • Assurez-vous de sélectionner "Générique" sous "Contenu". Vous pouvez également sélectionner "Média" ou "Recommandations" en fonction du datastore, du type de données et des systèmes que vous souhaitez créer.
  • Assurez-vous d'activer les fonctionnalités Enterprise Edition et LLM avancées.
  • Indiquez le nom de votre application.
  • Indiquer le nom de votre entreprise

f8a41c9751f7a8d3.png

  • Assurez-vous de sélectionner la région "Monde".
  • Cliquez sur "Continuer" ed17b18e094ba59a.png.
  • Sur l'écran suivant, sélectionnez le datastore que vous avez créé à l'étape 2.
  • Cliquez sur "Créer".

bc77006e0025ae9e.png

6. Étape 4 : Dockeriser votre application

  • Ouvrez 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

  • Modifiez le 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 : il s'agit d'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 : il s'agit d'une application basée sur React qui sert d'interface utilisateur. Il contiendra également les appels au backend au niveau de l'application via les points de terminaison REST.
  • Dockerfile : ce fichier contient toutes les commandes pertinentes pour créer un conteneur Docker.
  • À 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 équipés de puces Apple Silicon comme M1, M2, etc. Cet indicateur n'est pas nécessaire si vous effectuez la création 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 le conteneur Docker créé, exécutez la commande suivante pour lui attribuer les tags appropriés et vous assurer de fournir une version de votre image. N'oubliez pas qu'il peut exister plusieurs versions de l'application et donc plusieurs versions sous forme de tags dans les conteneurs Docker. Du point de vue des opérations de développement, il est recommandé de toujours utiliser la dernière version stable.

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

  • Une fois le taggage de l'image de conteneur Docker effectué, transférons l'image vers Google Artifact Registry (GAR). GAR est une plate-forme entièrement gérée par 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.
  • Ensuite, cliquez sur "Sélectionner".
  • Une barre de navigation s'affiche sur la droite.
  • Assurez-vous que l'onglet Artifact Registry est sélectionné.
  • Vérifiez que le projet est correctement sélectionné.
  • Cliquez sur la flèche pour développer l'accordéon sur le lien de l'image de conteneur déployée.
  • Sélectionnez le tag de conteneur et développez-le (sélectionnez toujours les derniers déployés, avec les bons tags les plus récents, c'est-à-dire v1, v2, etc.).
  • Cliquez sur l'image du conteneur affichée sous le nom du tag de 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 celle de votre choix).
  • Sous "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".
  • Modifiez le Service Auto Scaling sur 1 (pour la production, il est recommandé d'avoir un nombre minimal d'instances en cours d'exécution pour gérer votre trafic quotidien.Vous pouvez même le laisser sur 0, c'est-à-dire zéro).
  • Définissez "Contrôle d'entrée" sur "Tous" pour autoriser le trafic Internet à accéder à votre application.
  • Cliquez sur "Créer".
  • Cela déploiera une instance Cloud Run. Le provisionnement de cette instance peut prendre 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. Comment ça marche ?

  • Une fois sur la page d'accueil de l'application, cliquez sur le bouton "Upload Document" (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.
  • Commencer à rechercher des requêtes liées au document que vous avez 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 les suivantes :
  • Ajouter des extraits
  • Ajouter des segments extractifs
  • Ajouter des réponses
  • Ajuster les k premiers résultats pour aider le LLM à résumer la réponse (comme l'Aperçu IA dans la recherche Google)
  • En tant que module complémentaire, vous pouvez également ajouter des tags de métadonnées lorsque vous importez le document. Cela permettra de 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 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 RAG prêt à l'emploi à l'aide de modèles de pointe fournis par Google, afin de fournir des résultats de qualité Google à vos requêtes de recherche. Cet atelier de programmation est fourni à des fins de démonstration uniquement. Vous devez configurer davantage de mesures de sécurité et de garde-fous pour les cas d'utilisation en production. Cliquez ici pour accéder au dépôt complet. En tirant parti de Google Cloud et en suivant seulement cinq étapes, nous pouvons générer un système RAG de bout en bout qui peut vous fournir des résultats de qualité Google prêts à l'emploi 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 des hallucinations et des informations non citées.

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