Compila una búsqueda de contenido de IA con el Agente de Documentos

La búsqueda de información es uno de los usos más comunes de los modelos generativos de inteligencia artificial (IA). Compilar una interfaz de búsqueda conversacional para tu contenido mediante IA permite que los usuarios hagan preguntas específicas y obtengan respuestas directas.

En este instructivo, se muestra cómo compilar una interfaz de búsqueda conversacional potenciada por IA para tu contenido. Se basa en el Agente de Documentos, un proyecto de código abierto que usa la API de Google Gemini para crear una interfaz de búsqueda conversacional, sin entrenar un nuevo modelo de IA ni realizar ajustes de modelos con los modelos de Gemini. Eso significa que puedes compilar esta capacidad de búsqueda rápidamente y usarla para conjuntos de contenido pequeños y grandes.

Para obtener una descripción general en video del proyecto y cómo extenderlo, incluidas las estadísticas de las personas que lo crearon, consulta: AI Content Search | Build with Google AI. De lo contrario, puedes comenzar a extender el proyecto siguiendo las instrucciones que se indican a continuación.

Descripción general

El proyecto del Agente de Documentos proporciona una interfaz de búsqueda conversacional para un conjunto de contenido específico, respaldada por la API de Google Gemini y los modelos generativos. Los usuarios pueden hacer una pregunta detallada de estilo conversacional y obtener respuestas detalladas en función de un conjunto de contenido específico. En segundo plano, el agente de Documentos toma las preguntas y las búsquedas en una base de datos de vectores del contenido, y crea una instrucción detallada para el modelo generativo, que incluye fragmentos de texto relevante. El modelo generativo genera una respuesta a la pregunta, y el agente de Documentos le da formato a la respuesta y se la presenta al usuario.

Diagrama funcional del agente de Documentos Figura 1: Diagrama funcional de la app del proyecto del agente de Documentos.

La clave para hacer que el Agente de Documentos pueda responder preguntas sobre tu contenido es crear una base de datos de vectores de ese contenido. Separas tu contenido en fragmentos de texto lógicos y generas un vector para cada uno de ellos. Estos vectores son representaciones numéricas de la información en cada fragmento y se generan con una función de incorporación de texto de IA a partir de los modelos generativos de Google.

Cuando un usuario hace una pregunta, el Agente de Documentos usa la misma función de incorporación de texto para crear una representación numérica de esa pregunta y usa ese valor para buscar en la base de datos de vectores y encontrar contenido relacionado. Toma los resultados principales y agrega esa información a una instrucción para el modelo generativo. El modelo de IA toma la pregunta y la información de contexto adicional, y genera una respuesta.

Configuración del proyecto

En estas instrucciones, se te guiará a través de la configuración del proyecto del agente de Documentos para el desarrollo y las pruebas. Los pasos generales son instalar un software de requisitos previos, configurar algunas variables de entorno, clonar el proyecto desde el repositorio de código y ejecutar la instalación de la configuración. El proyecto de código usa Python Poetry para administrar paquetes y el entorno de ejecución de Python.

Instala los requisitos previos

El proyecto del agente de Documentos usa Python 3 y Python Poetry para administrar paquetes y ejecutar la aplicación. Las siguientes instrucciones de instalación son para una máquina anfitrión de Linux.

Para instalar el software requerido, sigue estos pasos:

  1. Instala Python 3 y el paquete de entorno virtual venv para Python.
    sudo apt update
    sudo apt install git pip python3-venv
    
  2. Instala Python Poetry para administrar las dependencias y el empaquetado del proyecto.
    curl -sSL https://install.python-poetry.org | python3 -
    

Puedes usar Python Poetry para agregar más bibliotecas de Python si extiendes el proyecto.

Configura las variables de entorno

Configura algunas variables de entorno necesarias para permitir que se ejecute el proyecto de código del agente de Documentos, incluida una clave de API de Google Gemini y la configuración de Python Poetry. Es posible que desees agregar estas variables a tu archivo $HOME/.bashrc si usas Linux, de modo que sean la configuración predeterminada para tus sesiones de terminal.

Para configurar las variables de entorno, haz lo siguiente:

  1. Obtén una clave de API de Google Gemini y copia la cadena de clave.
  2. Configura la clave de API como una variable de entorno. En los hosts de Linux, usa el siguiente comando.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Resuelve un problema conocido de Python Poetry mediante la configuración del parámetro PYTHON_KEYRING_BACKEND. En los hosts de Linux, usa el siguiente comando.
    export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
    

Clona y configura el proyecto

Descarga el código del proyecto y usa el comando de instalación de Poetry para descargar las dependencias necesarias y configurar el proyecto. Necesitas el software de control de fuente git para recuperar el código fuente del proyecto. Externo Para descargar y configurar el código del proyecto:

  1. Usa el siguiente comando para clonar el repositorio de Git.
    git clone https://github.com/google/generative-ai-docs
    
  2. De manera opcional, configura tu repositorio de Git local para usar la confirmación de compra dispersa, de modo que solo tengas los archivos para el proyecto del agente de Documentos.
    cd generative-ai-docs/
    git sparse-checkout init --cone
    git sparse-checkout set examples/gemini/python/docs-agent/
    
  3. Ve al directorio raíz del proyecto docs-agent.
    cd examples/gemini/python/docs-agent/
    
  4. Ejecuta el comando de instalación de Poetry para descargar dependencias y configurar el proyecto:
    poetry install
    

Prepara el contenido

El proyecto del agente de Documentos está diseñado para trabajar con contenido de texto y, además, incluye herramientas específicamente para trabajar con sitios web que usan Markdown como formato de origen. Si trabajas con contenido de un sitio web, debes conservar (o replicar) la estructura del directorio del sitio web entregado para habilitar la tarea de procesamiento de contenido para asignar y crear vínculos a ese contenido.

Según el formato y los detalles de tu contenido, es posible que debas limpiarlo para quitar información privada, notas internas o cualquier otra información que no desees que se pueda buscar. Debes conservar el formato básico, como títulos y encabezados, que ayudan a crear divisiones lógicas de texto o fragmentos en el paso de procesamiento de contenido.

Sigue estos pasos para preparar el contenido y procesarlo:

  1. Crea un directorio para el contenido que quieres que busque el agente de IA.
    mkdir docs-agent/content/
    
  2. Copia tu contenido en el directorio docs-agent/content/. Si el contenido es un sitio web, preserva (o replica) la estructura del directorio del sitio web entregado.
  3. Limpia o edita el contenido según sea necesario para quitar información privada, o bien otra información que no deseas incluir en las búsquedas.

Usa documentos de Flutter para realizar pruebas

Si necesitas contenido para probar el agente de Documentos, puedes usar los documentos para desarrolladores de Flutter para probarlos.

Para obtener la documentación para desarrolladores de Flutter, haz lo siguiente:

  1. Ve al directorio de contenido del contenido que quieres que busque el agente de IA.
    cd docs-agent/content/
    
  2. Clona los documentos de Flutter en el directorio docs-agent/content/.
    git clone --recurse-submodules https://github.com/flutter/website.git
    

Procesa contenido

Para que el agente de búsqueda busque eficazmente contenido relacionado con las preguntas de los usuarios, debes crear una base de datos de vectores que representen tu contenido. Los vectores se generan con una función del modelo generativo de IA llamada incorporación de texto. Las incorporaciones de texto son representaciones numéricas del contenido de texto. Se aproximan al significado semántico del texto como un conjunto de números. Tener representaciones numéricas de la información permite que el sistema tome la pregunta de un usuario, aproxima su significado con la misma función de incorporación de texto y, luego, encuentre información relacionada como un cálculo matemático, con un algoritmo de vecinos k-más cercanos (k-NN).

Contenido de texto dividido

La cantidad de texto que un vector de incorporación de texto puede representar de manera efectiva es limitada. Este proyecto limita el texto representado en un vector a 3,000 caracteres o menos, por lo que tendrás que dividir el contenido en partes inferiores a ese límite de caracteres. En esta sección, se describe cómo usar una secuencia de comandos proporcionada con el proyecto del Agente de Documentos para dividir los archivos de Markdown en fragmentos de texto más pequeños. Para obtener sugerencias sobre cómo trabajar con otros formatos de contenido, consulta Cómo controlar otros formatos.

Para dividir el contenido del formato Markdown, haz lo siguiente:

  1. Para configurar los parámetros de entrada de la secuencia de comandos de procesamiento, edita el archivo docs-agent/config.yaml. Este ejemplo se orienta a un subconjunto de documentos de Flutter:
    input:
    - path: "content/website/src/ui"
      url_prefix: "https://docs.flutter.dev/ui"
    
  2. Guarda los cambios en este archivo de configuración.
  3. Navega al directorio del proyecto docs-agent:
    cd docs-agent/
    
  4. Ejecuta el comando agent chunk para dividir el contenido fuente de Markdown:
    agent chunk
    

La secuencia de comandos procesa el contenido de entrada, crea archivos de texto de salida en el directorio docs-agent/data y divide el texto según los títulos, los encabezados y los párrafos relacionados. Esto puede tardar un poco según el tamaño del contenido.

Crear vectores de incorporación de texto

Después de dividir el contenido en fragmentos significativos del tamaño adecuado, puedes propagar la base de datos vectorial con tu contenido mediante una función de incorporación de texto. El proyecto del agente de Documentos usa la base de datos de vectores Chroma para almacenar vectores de incorporación de texto. En estas instrucciones, se explica cómo usar la secuencia de comandos de los Agentes de Documentos para propagar una base de datos de vectores con tu contenido dividido.

Para generar incorporaciones de texto y propagar la base de datos de vectores:

  1. Navega al directorio del proyecto docs-agent:
    cd docs-agent/
    
  2. Propaga la base de datos de vectores con tu contenido mediante el comando agent populate:
    agent populate
    

Esta secuencia de comandos usa la API de Google Gemini para generar vectores de incorporación de texto y, luego, guarda el resultado en la base de datos de vectores. El procesamiento puede tardar un poco según el tamaño del contenido.

Cómo procesar otros formatos

El proyecto del agente de Documentos está diseñado para trabajar con contenido de sitios web en formato Markdown. Los autores del proyecto compilaron algunas secuencias de comandos de conversión para generar otros tipos de contenido en formato Markdown, incluidos Documentos de Google, formato de documento portátil (PDF) y Gmail. Para obtener más información sobre el uso de estos convertidores, consulta el directorio docs-agent/apps_script del repositorio de código.

Cómo convertir otros formatos de contenido

Puedes usar otros formatos de contenido con el proyecto; sin embargo, tú o algún otro miembro de la comunidad deben compilar esos métodos adicionales. Consulta los problemas y las solicitudes de extracción del repositorio de código para quienes crean soluciones similares.

El código de clave que necesitas compilar para admitir otros formatos de contenido es una secuencia de comandos divisor, como la secuencia de comandos files_to_plain_text.py. Intenta compilar una secuencia de comandos o un programa que cree un resultado similar al de esta secuencia de comandos. Recuerda que la salida de texto final debe tener un formato mínimo y la información irrelevante. Si usas formatos de contenido como HTML o JSON, asegúrate de quitar la mayor cantidad posible del formato no informativo (etiquetas, secuencias de comandos, CSS), para que no sesguen los valores de las incorporaciones de texto que generes a partir de ellos.

Una vez que hayas compilado una secuencia de comandos divisor para el formato de contenido, deberías poder ejecutar la secuencia de comandos populate_vector_database.py para propagar tu base de datos de vectores. Para obtener más información sobre el procesamiento de archivos para usar con el agente de Documentos, consulta Preprocesar archivos Readme del agente de Documentos.

Prueba la app

Cuando hayas terminado de propagar tu base de datos de vectores, el proyecto estará listo para probarlo. El proyecto proporciona una función de empaquetado que te permite ejecutar el proyecto de forma local.

Para ejecutar y probar la interfaz web del proyecto, haz lo siguiente:

  1. Navega al directorio del proyecto docs-agent:
    cd docs-agent/
    
  2. Ejecuta la secuencia de comandos de inicio de la aplicación web:
    agent chatbot
    
  3. Con el navegador web, ve a la dirección web URL que se muestra en el resultado de la secuencia de comandos de inicio y prueba la aplicación.
    * Running on http://your-hostname-here:5000
    

Opciones de implementación

La API de Gemini proporciona herramientas de programación que pueden reemplazar componentes de la implementación del agente de Documentos, específicamente: la recuperación semántica y la variante del modelo Gemini de respuesta de preguntas atribuidas (AQA). Puedes usar la función Recuperación semántica de la API de Gemini para reemplazar la base de datos de vectores separada. La función de recuperación semántica te permite generar incorporaciones de tu contenido y almacenarlo. El modelo AQA Gemini está ajustado para responder preguntas con el material de origen proporcionado en una instrucción. La recuperación semántica se usa junto con el modelo de AQA para responder preguntas sobre tu contenido dentro de la API de Gemini.

El Agente de Documentos incluye opciones de configuración para usar la función de la API de recuperación semántica, ese modelo AQA Gemini o ambos. Para obtener más información, consulta el archivo readme del agente de Documentos.

Recursos adicionales

Para obtener más información sobre el proyecto del agente de Documentos, consulta el repositorio de código. Si necesitas ayuda para compilar la aplicación o buscas colaboradores desarrolladores, consulta el servidor de Google Developers Community Discord.

Aplicaciones de producción

Si planeas implementar el Agente de Documentos para un público grande, ten en cuenta que el uso de la API de Google Gemini puede estar sujeto a límites de frecuencia y a otras restricciones de uso. Si estás considerando compilar una aplicación de producción con la API de Gemini, como el Agente de Documentos, consulta los servicios de Vertex AI de Google Cloud para aumentar la escalabilidad y la confiabilidad de tu app.