Créer une recherche de contenu basée sur l'IA avec l'agent Docs

La recherche d'informations est l'une des utilisations les plus courantes des modèles génératifs d'intelligence artificielle (IA). Créer une interface de recherche conversationnelle pour votre contenu à l'aide de l'IA permet à vos utilisateurs de poser des questions spécifiques et d'obtenir des réponses directes.

Ce tutoriel explique comment créer une interface de recherche conversationnelle optimisée par l'IA pour votre contenu. Il est basé sur l'agent Docs, un projet Open Source qui utilise l'API Google Gemini pour créer une interface de recherche conversationnelle, sans entraîner un nouveau modèle d'IA ni effectuer de réglage de modèle avec des modèles Geniaux. Vous pouvez donc créer rapidement cette fonctionnalité de recherche et l'utiliser pour des ensembles de contenu petits et grands.

Pour obtenir une présentation vidéo du projet et de la manière de l'étendre, y compris les insights de ses développeurs, regardez cette vidéo : AI Content Search | Build with Google AI. Sinon, vous pouvez commencer à prolonger le projet en suivant les instructions ci-dessous.

Présentation

Le projet d'agent Docs fournit une interface de recherche conversationnelle pour un ensemble de contenu spécifique. Il s'appuie sur l'API Google Gemini et des modèles génératifs. Les utilisateurs peuvent poser une question détaillée dans un style conversationnel et obtenir une réponse détaillée en fonction d'un ensemble de contenu spécifique. En arrière-plan, l'agent Docs répond à la question et effectue une recherche dans une base de données vectorielle du contenu, puis crée une requête détaillée pour le modèle génératif, avec des extraits de texte pertinent. Le modèle génératif génère une réponse à la question, tandis que l'agent Docs la met en forme et la présente à l'utilisateur.

Schéma fonctionnel de l'agent Docs Figure 1. Schéma fonctionnel de l'application de projet de l'agent Docs.

Pour que l'agent Docs puisse répondre aux questions concernant votre contenu, il est essentiel de créer une base de données vectorielle de ce contenu. Vous séparez votre contenu en morceaux de texte logiques et générez un vecteur pour chacun d'eux. Ces vecteurs sont des représentations numériques des informations contenues dans chaque fragment et sont générés avec une fonction de représentation vectorielle continue de texte par IA à partir des modèles génératifs de Google.

Lorsqu'un utilisateur pose une question, l'agent Docs utilise la même fonction de représentation vectorielle continue de texte pour créer une représentation numérique de cette question, et utilise cette valeur pour effectuer une recherche dans la base de données vectorielle et trouver le contenu associé. Il prend les meilleurs résultats et ajoute ces informations à une requête pour le modèle génératif. Le modèle d'IA prend la question et les informations contextuelles supplémentaires, puis génère une réponse.

Configuration du projet

Ces instructions vous guident dans la configuration du projet de l'agent Docs pour le développement et les tests. Les étapes générales consistent à installer des logiciels prérequis, à définir quelques variables d'environnement, à cloner le projet à partir du dépôt de code et à exécuter l'installation de la configuration. Le projet de code utilise Python Poetry pour gérer les packages et l'environnement d'exécution Python.

Installer les prérequis

Le projet Agent Docs utilise Python 3 et Python Poetry pour gérer les packages et exécuter l'application. Les instructions d'installation suivantes concernent une machine hôte Linux.

Pour installer le logiciel requis:

  1. Installez Python 3 et le package d'environnement virtuel venv pour Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Installez Python Poetry pour gérer les dépendances et le packaging du projet.
    curl -sSL https://install.python-poetry.org | python3 -
    

Vous pouvez utiliser Python Poetry pour ajouter d'autres bibliothèques Python si vous étendez le projet.

Définir des variables d'environnement

Définissez quelques variables d'environnement requises pour permettre l'exécution du projet de code de l'agent Docs, y compris une clé API Google Gemini et un paramètre Python Poetry. Si vous utilisez Linux, vous pouvez ajouter ces variables à votre fichier $HOME/.bashrc pour en faire des paramètres par défaut pour vos sessions de terminal.

Pour définir les variables d'environnement:

  1. Obtenez une clé API Google Gemini et copiez la chaîne de la clé.
  2. Définissez la clé API en tant que variable d'environnement. Sur les hôtes Linux, exécutez la commande suivante :
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Résolvez un problème connu concernant Python Poetry en définissant le paramètre PYTHON_KEYRING_BACKEND. Sur les hôtes Linux, exécutez la commande suivante.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Cloner et configurer le projet

Téléchargez le code du projet et utilisez la commande d'installation de Poetry pour télécharger les dépendances requises et configurer le projet. Vous avez besoin du logiciel de contrôle du code source git pour récupérer le code source du projet. externe Pour télécharger et configurer le code du projet, procédez comme suit:

  1. Clonez le dépôt git à l'aide de la commande suivante.
    git clone https://github.com/google/generative-ai-docs
    
  2. Vous pouvez éventuellement configurer votre dépôt Git local pour utiliser le paiement creux afin de n'avoir que les fichiers du projet de l'agent Docs.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Accédez au répertoire racine du projet docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. Exécutez la commande d'installation de Poetry pour télécharger les dépendances et configurer le projet:
    poetry install
    

Préparer le contenu

Le projet de l'agent Docs est conçu pour fonctionner avec du contenu textuel. Il inclut des outils spécifiquement conçus pour fonctionner avec les sites Web qui utilisent Markdown comme format source. Si vous utilisez le contenu d'un site Web, vous devez conserver (ou répliquer) la structure des répertoires du site Web diffusé pour permettre à la tâche de traitement du contenu de mapper et de créer des liens vers ce contenu.

En fonction du format et des détails de votre contenu, vous devrez peut-être nettoyer votre contenu pour supprimer les informations non publiques, les remarques internes ou d'autres informations qui ne doivent pas être incluses dans l'index de recherche. Vous devez conserver la mise en forme de base, telle que les titres et les en-têtes, qui permettent de créer des divisions de texte logiques (segments) lors de l'étape de traitement du contenu.

Pour préparer le contenu à traiter:

  1. Créez un répertoire pour le contenu que l'agent IA doit rechercher.
    mkdir docs-agent/content/
    
  2. Copiez votre contenu dans le répertoire docs-agent/content/. Si le contenu est un site Web, conservez (ou répliquez) la structure de répertoires du site Web diffusé.
  3. Nettoyez ou modifiez le contenu si nécessaire pour supprimer les informations non publiques ou d'autres informations que vous ne souhaitez pas voir incluses dans les recherches.

Utiliser la documentation Flutter pour les tests

Si vous avez besoin d'un ensemble de contenus pour tester l'agent Docs, vous pouvez utiliser la documentation Flutter pour les développeurs à des fins de test.

Pour obtenir la documentation pour les développeurs Flutter:

  1. Accédez au répertoire du contenu que l'agent IA doit rechercher.
    cd docs-agent/content/
    
  2. Clonez les documents Flutter dans le répertoire docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Traiter le contenu

Pour que l'agent de recherche puisse rechercher efficacement du contenu lié aux questions des utilisateurs, vous devez créer une base de données de vecteurs représentant votre contenu. Les vecteurs sont générés à l'aide d'une fonction de modèle génératif d'IA appelée représentation vectorielle continue de texte. Les représentations vectorielles continues de texte sont des représentations numériques du contenu textuel. Ils ont une approximation du sens sémantique du texte sous la forme d'un ensemble de nombres. Le fait de disposer de représentations numériques des informations permet au système de prendre la question d'un utilisateur, d'en estimer la signification à l'aide de la même fonction de représentation vectorielle continue de texte, puis de rechercher des informations connexes sous la forme d'un calcul mathématique, à l'aide d'un algorithme de k-voisins les plus proches (k-NN).

Scinder le contenu du texte

La quantité de texte qu'un vecteur de représentation vectorielle continue de texte peut représenter efficacement est limitée. Ce projet limite le texte représenté dans un vecteur à 3 000 caractères ou moins, ce qui signifie que vous devez diviser votre contenu en fragments inférieurs à cette limite de caractères. Cette section explique comment utiliser un script fourni avec le projet de l'agent Docs pour diviser des fichiers Markdown en fragments de texte plus petits. Pour obtenir des conseils sur l'utilisation d'autres formats de contenu, consultez Gérer d'autres formats.

Pour diviser le contenu au format Markdown:

  1. Configurez les paramètres d'entrée du script de traitement en modifiant le fichier docs-agent/config.yaml. Cet exemple cible un sous-ensemble de la documentation Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Enregistrez les modifications apportées à ce fichier de configuration.
  3. Accédez au répertoire du projet docs-agent:
    cd docs-agent/
    
  4. Divisez le contenu source Markdown en exécutant la commande agent chunk:
    agent chunk
    

Le script traite le contenu d'entrée et crée des fichiers texte de sortie dans le répertoire docs-agent/data, en divisant le texte en fonction des titres, des en-têtes et des paragraphes associés. Le traitement peut prendre un certain temps en fonction de la taille de votre contenu.

Créer des vecteurs de représentation vectorielle continue de texte

Après avoir divisé votre contenu en fragments significatifs de taille appropriée, vous pouvez insérer votre contenu dans la base de données vectorielle à l'aide d'une fonction de représentation vectorielle continue de texte. Le projet de l'agent Docs utilise la base de données vectorielles Chroma pour stocker les vecteurs de représentation vectorielle continue de texte. Ces instructions expliquent comment utiliser le script des agents Docs pour insérer votre contenu fractionné dans une base de données vectorielle.

Pour générer des représentations vectorielles continues de texte et remplir la base de données vectorielle, procédez comme suit:

  1. Accédez au répertoire du projet docs-agent:
    cd docs-agent/
    
  2. Remplissez la base de données vectorielle avec votre contenu à l'aide de la commande agent populate:
    agent populate
    

Ce script utilise l'API Google Gemini pour générer des vecteurs de représentation vectorielle continue de texte, puis enregistre la sortie dans la base de données vectorielle. Le traitement peut prendre un certain temps en fonction de la taille de votre contenu.

Gérer d'autres formats

Le projet Docs Agent est conçu pour fonctionner avec le contenu d'un site Web au format Markdown. Les auteurs du projet ont créé quelques scripts de conversion pour générer d'autres types de contenu au format Markdown, y compris Google Docs, PDF (Portable Document Format) et Gmail. Pour en savoir plus sur l'utilisation de ces convertisseurs, consultez le répertoire docs-agent/apps_script du dépôt de code.

Convertir d'autres formats de contenu

Vous pouvez utiliser d'autres formats de contenu avec le projet, mais ces méthodes supplémentaires doivent être créées par vous ou d'autres membres de la communauté. Consultez les sections Problèmes et Demandes d'extraction du dépôt de code pour trouver des solutions similaires.

Le code clé que vous devez compiler pour accepter d'autres formats de contenu est un script de séparateur comme le script files_to_plain_text.py. Essayez de créer un script ou un programme qui génère une sortie semblable à celle-ci. N'oubliez pas que la sortie textuelle finale doit avoir une mise en forme minimale et des informations superflues. Si vous utilisez des formats de contenu tels que HTML ou JSON, veillez à supprimer le plus possible la mise en forme non informationnelle (balises, scripts, CSS) afin de ne pas fausser les valeurs des représentations vectorielles continues de texte que vous générez à partir de ces formats.

Une fois que vous avez créé un script de division pour le format de contenu, vous devriez pouvoir exécuter le script populate_vector_database.py pour remplir votre base de données vectorielle. Pour en savoir plus sur le traitement des fichiers à utiliser avec l'agent Docs, consultez le fichier Readme de prétraitement de l'agent Docs.

Tester l'application

Une fois que vous avez rempli votre base de données vectorielle, le projet est prêt à être testé. Le projet fournit une fonction d'empaquetage pour vous permettre d'exécuter le projet localement.

Pour exécuter et tester l'interface Web du projet, procédez comme suit:

  1. Accédez au répertoire du projet docs-agent:
    cd docs-agent/
    
  2. Exécutez le script de lancement de l'application Web:
    agent chatbot
    
  3. À l'aide de votre navigateur Web, accédez à l'adresse Web URL indiquée dans le résultat du script de lancement et testez l'application.
    * Running on http://your-hostname-here:5000
    

Options de mise en œuvre

L'API Gemini fournit des outils de programmation qui peuvent remplacer les composants de l'implémentation de l'agent Docs, en particulier la variante de modèle Gemini de récupération sémantique et de réponse à une question attribuée (AQA). Vous pouvez utiliser la fonctionnalité de récupération sémantique de l'API Gemini pour remplacer la base de données vectorielle distincte. La fonctionnalité de récupération sémantique vous permet de générer des représentations vectorielles continues pour votre contenu et de le stocker. Le modèle Gemini AQA est adapté aux questions à l'aide de ressources sources fournies dans une requête. Vous utilisez la récupération sémantique avec le modèle AQA pour répondre aux questions concernant votre contenu, le tout dans l'API Gemini.

L'agent Docs inclut des options de configuration permettant d'utiliser la fonctionnalité de l'API de récupération sémantique, le modèle AQA Gemini, ou les deux. Pour plus d'informations, consultez le fichier Readme de l'agent Docs.

Ressources supplémentaires

Pour en savoir plus sur le projet d'agent Docs, consultez le dépôt de code. Si vous avez besoin d'aide pour créer l'application ou si vous recherchez des développeurs, consultez le serveur Google Developers Community Discord.

Applications de production

Si vous envisagez de déployer l'agent Docs pour un large public, notez que votre utilisation de l'API Google Gemini peut être soumise à une limitation du débit et à d'autres restrictions d'utilisation. Si vous envisagez de créer une application de production avec l'API Gemini, comme l'agent Docs, découvrez les services Google Cloud Vertex AI pour améliorer l'évolutivité et la fiabilité de votre application.