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 vous explique comment créer une interface de recherche conversationnelle optimisée par l'IA pour votre contenu. Il est basé sur Docs Agent, 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 du modèle avec des modèles Gemini. Vous pouvez ainsi créer rapidement cette fonctionnalité de recherche et l'utiliser pour de petits et grands ensembles de contenus.

Pour une présentation vidéo du projet et des moyens de l'étendre, y compris des insights de ses créateurs, consultez Recherche de contenu par IA | Créer avec l'IA de Google. Sinon, vous pouvez commencer à étendre le projet en suivant les instructions ci-dessous.

Présentation

Le projet Agent Docs fournit une interface de recherche conversationnelle pour un ensemble de contenus spécifique, basée sur l'API Google Gemini et les 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 basée sur un ensemble de contenus spécifique. En coulisses, l'agent Docs prend 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, y compris des extraits de texte pertinents. Le modèle génératif génère une réponse à la question, et 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 du projet Docs Agent.

Pour que l'agent Docs puisse répondre aux questions sur votre contenu, vous devez créer une base de données vectorielle de ce contenu. Vous séparez votre contenu en blocs logiques de texte et générez un vecteur pour chacun d'eux. Ces vecteurs sont des représentations numériques des informations de chaque segment et sont générés à l'aide d'une fonction d'encapsulation de texte basée sur l'IA à partir des modèles génératifs de Google.

Lorsqu'un utilisateur pose une question, l'agent Docs utilise la même fonction d'encapsulation de texte pour créer une représentation numérique de cette question, puis utilise cette valeur pour rechercher dans la base de données de vecteurs et trouver du 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 expliquent comment configurer le projet de l'agent Docs pour le développement et les tests. Les étapes générales consistent à installer des logiciels préalables, à 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 Docs Agent utilise Python 3 et Python Poetry pour gérer les paquets et exécuter l'application. Les instructions d'installation suivantes s'appliquent à 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. Vous pouvez ajouter ces variables à votre fichier $HOME/.bashrc si vous utilisez Linux pour en faire les paramètres par défaut de vos sessions de terminal.

Pour définir les variables d'environnement:

  1. Obtenez une clé API Google Gemini et copiez la chaîne de clé.
  2. Définissez la clé API en tant que variable d'environnement. Sur les hôtes Linux, utilisez la commande suivante.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Résolvez un problème connu pour Python Poetry en définissant le paramètre PYTHON_KEYRING_BACKEND. Sur les hôtes Linux, utilisez 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 des versions git pour récupérer le code source du projet. external Pour télécharger et configurer le code du projet:

  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 également configurer votre dépôt Git local pour utiliser un "checkout" clairsemé 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 Docs Agent est conçu pour fonctionner avec du contenu textuel. Il inclut des outils spécialement conçus pour les sites Web qui utilisent Markdown comme format source. Si vous travaillez avec le contenu d'un site Web, vous devez conserver (ou répliquer) la structure d'annuaire du site Web diffusé pour permettre à la tâche de traitement du contenu de mapper et de créer des liens vers ce contenu.

Selon le format et les détails de votre contenu, vous devrez peut-être le nettoyer pour supprimer les informations non publiques, les notes internes ou d'autres informations que vous ne souhaitez pas que les utilisateurs puissent rechercher. Vous devez conserver la mise en forme de base, comme les titres et les titres, qui permettent de créer des coupures de texte logiques, ou des segments, lors de l'étape de traitement du contenu.

Pour préparer le contenu à être traité:

  1. Créez un répertoire pour le contenu que vous souhaitez que l'agent d'IA recherche.
    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 inclure 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 les documentations pour les développeurs Flutter.

Pour obtenir la documentation pour les développeurs Flutter:

  1. Accédez au répertoire de contenu pour le contenu que vous souhaitez que l'agent d'IA recherche.
    cd docs-agent/content/
    
  2. Clonez la documentation 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 recherche 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 embedding textuel. Les embeddings de texte sont des représentations numériques du contenu textuel. Ils approximaient la signification sémantique du texte en tant qu'ensemble de nombres. 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 d'encapsulation de texte, puis de trouver des informations associées sous la forme d'un calcul mathématique, à l'aide d'un algorithme de voisins les plus proches (k-NN).

Scinder le contenu textuel

La quantité de texte qu'un vecteur d'embedding 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. Vous devez donc diviser votre contenu en segments de moins de 3 000 caractères. Cette section explique comment utiliser un script fourni avec le projet de l'agent Docs pour diviser les fichiers Markdown en plus petits blocs de texte. Pour obtenir des conseils sur l'utilisation d'autres formats de contenu, consultez la section 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 titres et des paragraphes associés. Le traitement peut prendre un certain temps en fonction de la taille de votre contenu.

Créer des vecteurs d'embedding textuel

Après avoir divisé votre contenu en fragments pertinents de taille appropriée, vous pouvez renseigner la base de données vectorielle avec votre contenu à l'aide d'une fonction d'embedding de texte. Le projet de l'agent Docs utilise la base de données vectorielle Chroma pour stocker les vecteurs d'embedding de texte. Ces instructions expliquent comment utiliser le script Docs Agents pour renseigner une base de données vectorielle avec votre contenu fractionné.

Pour générer des embeddings textuels et renseigner la base de données de vecteurs:

  1. Accédez au répertoire du projet docs-agent:
    cd docs-agent/
    
  2. Renseignez la base de données de vecteurs 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 d'embeddings de texte, puis enregistre la sortie dans la base de données de vecteurs. 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 de sites Web au format Markdown. Les auteurs du projet ont créé quelques scripts de conversion pour générer d'autres types de contenus au format Markdown, y compris Google Docs, le format Portable Document Format (PDF) 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. Toutefois, ces méthodes supplémentaires doivent être créées par vous ou d'autres membres de la communauté. Consultez les problèmes et les pull requests du dépôt de code pour trouver des personnes qui développent des solutions similaires.

Le code clé que vous devez créer pour prendre en charge 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 produit un résultat semblable à celui-ci. N'oubliez pas que la sortie de texte finale doit comporter un minimum de mise en forme et d'informations superflues. Si vous utilisez des formats de contenu tels que HTML ou JSON, assurez-vous de supprimer autant que possible le formatage non informatif (balises, script, CSS), afin qu'il ne fausse pas 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 fractionnement pour le format de contenu, vous devriez pouvoir exécuter le script populate_vector_database.py pour renseigner votre base de données de vecteurs. Pour en savoir plus sur le traitement des fichiers à utiliser avec l'agent Docs, consultez le README de prétraitement de l'agent Docs.

Tester l'application

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

Pour exécuter et tester l'interface Web du projet:

  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. Dans votre navigateur Web, accédez à l'adresse Web de l'URL affichée dans la sortie 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 pouvant remplacer des composants de l'implémentation de l'agent Docs, en particulier la variante du modèle Gemini de récupération sémantique et de réponse aux questions attribuées (AQA). Vous pouvez utiliser la fonctionnalité de retrieval 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 embeddings pour votre contenu et de le stocker. Le modèle Gemini AQA est optimisé pour répondre aux questions à l'aide de matériel source fourni dans une requête. Vous utilisez la récupération sémantique avec le modèle AQA pour répondre à des questions sur votre contenu, le tout dans l'API Gemini.

L'agent Docs inclut des options de configuration permettant d'utiliser la fonctionnalité de l'API Semantic Retrieval, le modèle AQA Gemini ou les deux. Pour en savoir plus, consultez le fichier README de l'agent Docs.

Ressources supplémentaires

Pour en savoir plus sur le projet de l'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 pour collaborer, consultez le serveur Discord de la communauté des développeurs Google.

Applications de production

Si vous prévoyez de déployer l'Agent Docs pour une large audience, notez que votre utilisation de l'API Google Gemini peut être soumise à une limitation de 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, consultez les services Google Cloud Vertex AI pour améliorer la scalabilité et la fiabilité de votre application.