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

1. Avant de commencer

Voici quelques points à prendre en compte avant de poursuivre cet atelier de programmation.

Conditions préalables

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

Points abordés

  • Comment 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
  • Déployer l'application à l'aide de Cloud Run

Ce dont vous aurez besoin

  • Un compte Google Cloud
  • Un projet Google Cloud
  • Un IDE avec 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 grâce à une technique appelée Génération augmentée de récupération (RAG, Retrieval Augmented Generation), 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, différentes méthodes sont utilisées, comme la 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.

Le principal avantage de la RAG est qu'elle permet aux modèles de langage d'éviter les hallucinations. Le terme "hallucination" est 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.

La RAG permet d'éviter les hallucinations en garantissant que le texte généré se base toujours sur des preuves issues du corpus de documents. ce qui en fait une source d'informations plus fiable.

La RAG est une technique puissante utilisée dans diverses applications, y compris les moteurs de recherche, les chatbots et les systèmes de questions-réponses. Elle va probablement jouer un rôle de plus en plus important dans l'IA dans les années à venir.

Voici quelques exemples d'utilisation de la 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 la RAG pour générer des réponses aux questions des utilisateurs à la fois informatives et engageantes.
  • Les systèmes de réponse aux questions utilisent la RAG pour générer des réponses précises et complètes aux questions des utilisateurs.

La RAG est une technique polyvalente qui peut être utilisée pour générer du texte dans divers domaines et applications. C'est un outil puissant qui contribue à rendre l'IA plus intelligente et plus informative.

Dans cet atelier de programmation, nous créerons un système RAG qui pourra vous aider à répondre à vos questions à l'aide du corpus fourni tel que vous l'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 les tâches manuelles de collecte des documents, d'analyse, de fragmentation, de génération de représentations vectorielles continues, d'extension des requêtes, de récupération de candidats et de classement. 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 pour répondre aux exigences de votre entreprise.

Objectifs de l'atelier

À la fin de cet atelier de programmation, vous aurez déployé un système RAG fonctionnel qui pourra vous aider à répondre à vos questions avec des informations factuelles, fondé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. En outre, vous apprendrez à déployer cette application d'architecture RAG (avec interface 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 l'application

  • Importer vos données: les utilisateurs peuvent importer leur propre corpus de données (c'est-à-dire un fichier PDF) en 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ées.
  • Récupération des réponses: les utilisateurs peuvent récupérer les résultats de recherche et les candidats, et vérifier la véracité et le caractère fondé de la réponse obtenue 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 en savoir plus sur les commandes gcloud et leur utilisation.

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

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

adf5c0382f6c3540.png

  • Indiquez un nom unique pour le bucket
  • Cliquez sur "Continuer".
  • Dans Type d'emplacement, sélectionnez Multirégional
  • Veillez à sélectionner l'option us (multiple regions in United States) dans le menu déroulant.

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 "Data stores" (magasins de données) comme indiqué dans la barre de navigation de gauche.

f86f67d344d398fb.png

  • Cliquez sur "Créer un data store".

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.
  • Dans les options ci-dessous, veillez à sélectionner "Documents non structurés associé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:

  • L'option de traitement du document s'affiche juste au-dessus du bouton "Créer".
  • Vous pouvez tester différents analyseurs (numérique, OCR, mise en page, etc.)
  • 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 à 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 datastore, et du type de données et de 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

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

bc77006e0025ae9e.png

6. Étape 4: Rendre votre application dans un conteneur Docker

  • 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

  • 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 : intégrera une implémentation d'API basée sur Python qui permettra de créer des points de terminaison reposants avec lesquels votre interface pourra interagir.
  • Interface : contient une application basée sur des réactions et diffuse l'interface utilisateur. Il contiendra également les appels au niveau de l'application nécessaires au backend via des points de terminaison REST.
  • Dockerfile : ce fichier contiendra toutes les commandes permettant de 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: assurez-vous d'utiliser l'indicateur - - platform lorsque vous créez des conteneurs Docker dans des MacBooks utilisant des puces Apple Silicon telles que M1, M2, etc.). Cet indicateur n'est pas nécessaire si vous utilisez un ordinateur Windows ou si votre architecture de processeur est basée sur Intel.

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

  • Une fois la compilation du conteneur Docker terminée, exécutez la commande suivante pour ajouter des tags appropriés au conteneur et 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 l'ajout de tags à l'image de conteneur Docker effectué, transférez l'image vers Google Artifact Registry (GAR). GAR est une plate-forme entièrement gérée par Google qui vous aide à gérer vos conteneurs Docker et à en contrôler les versions. 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 l'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é
  • Assurez-vous de vérifier si le projet est sélectionné correctement
  • Cliquez sur la flèche pour développer l'accordéon sur le lien de l'image du conteneur déployé
  • Sélectionnez la balise conteneur et développez-la (sélectionnez toujours les dernières balises déployées, avec les dernières balises appropriées, par exemple v1, v2, etc.).
  • Cliquez sur l'image de conteneur affichée sous le nom de la balise 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 (ici, us-central1 ou toute autre région de votre choix).
  • Dans la section
  • 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'autoscaling du service sur 1. (à des fins de 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 laisser la valeur 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 l'application Web déployée, vous pourrez voir l'URL publique qui vous permet d'y accéder

1dfdb007c52581a1.png

8. Comment cela fonctionne-t-il ?

  • 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.
  • Commencez à 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", vous devriez voir toutes les réponses pertinentes issues du document que vous venez d'importer.
  • Vous pouvez jouer à ce jeu 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
  • Ajustement des premiers résultats pour aider le LLM à résumer la réponse (par exemple, Présentation 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 attributs 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 et supprimer.

10. Félicitations

Félicitations ! Vous avez créé un système RAG rapide prêt à l'emploi en utilisant les modèles de pointe fournis par Google et pour fournir des résultats de qualité Google à vos requêtes de recherche. Cet atelier de programmation est fourni à titre de démonstration uniquement. D'autres mécanismes de sécurité et de garde-fous doivent être configurés pour les cas d'utilisation en production. Le lien vers le dépôt complet se trouve ici. En utilisant Google Cloud et en seulement cinq étapes, nous pouvons générer un système RAG de bout en bout capable de 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 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 étape du processus du pipeline.