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 la inteligencia artificial (IA). Crear una interfaz de búsqueda de conversación para tu contenido con IA permite que los usuarios hagan preguntas específicas y obtengan respuestas directas.

En este instructivo, se muestra cómo crear una interfaz de búsqueda conversacional potenciada por IA para tu contenido. Se basa en Docs Agent, 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 modelos de Gemini. Esto significa que puedes compilar esta función 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 ampliarlo, incluidas las estadísticas de las personas que lo compilan, consulta Búsqueda de contenido de IA | Compila con la IA de Google. De lo contrario, puedes comenzar a extender el proyecto siguiendo las instrucciones que se indican a continuación.

Descripción general

El proyecto de agente de Documentos proporciona una interfaz de búsqueda conversacional para un conjunto de contenido específico, respaldado por la API de Google Gemini y los modelos generativos. Los usuarios pueden hacer una pregunta detallada en un estilo de conversación y obtener una respuesta detallada según un conjunto de contenido específico. En segundo plano, el agente de Documentos toma la pregunta y la busca en una base de datos vectorial del contenido, y crea una instrucción detallada para el modelo generativo, incluidos fragmentos de texto relevante. El modelo generativo genera una respuesta a la pregunta, y el agente de Documentos le da formato y se la presenta al usuario.

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

La clave para que el Agente de Documentos pueda responder preguntas sobre tu contenido es la creación de una base de datos vectorial de ese contenido. Separas tu contenido en fragmentos lógicos de texto y generas un vector para cada uno de ellos. Estos vectores son representación numérica de la información de cada fragmento y se generan con una función de inclusión de texto de IA 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 contextual adicional y genera una respuesta.

Configura el proyecto

Estas instrucciones te guiarán para configurar el proyecto del agente de Documentos para su desarrollo y pruebas. Los pasos generales son instalar algunos softwares previos, configurar algunas variables de entorno, clonar el proyecto desde el repositorio de código y ejecutar la instalación de configuración. El proyecto de código usa Python Poetry para administrar los paquetes y el entorno de ejecución de Python.

Instala los requisitos previos

El proyecto de Docs Agent 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 Linux.

Para instalar el software necesario, 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.

Configure 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 Poetry de Python. Si usas Linux, te recomendamos que agregues estas variables a tu archivo $HOME/.bashrc para que sean la configuración predeterminada de tus sesiones de terminal.

Para configurar las variables de entorno, sigue estos pasos:

  1. Obtén una clave de API de Google Gemini y copia la cadena de clave.
  2. Establece la clave de API como una variable de entorno. En hosts de Linux, usa el siguiente comando.
    export API_KEY=<YOUR_API_KEY_HERE>
    
  3. Para resolver un problema conocido de Python Poetry, establece el parámetro PYTHON_KEYRING_BACKEND. En 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 requeridas y configurar el proyecto. Necesitas el software de control de código fuente git para recuperar el código fuente del proyecto. Para descargar y configurar el código del proyecto, haz lo siguiente:

  1. Clona el repositorio de Git con el siguiente comando.
    git clone https://github.com/google/generative-ai-docs
    
  2. De manera opcional, configura tu repositorio de git local para usar el control de revisión disperso, de modo que solo tengas los archivos del 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 las dependencias y configurar el proyecto:
    poetry install
    

Prepara el contenido

El proyecto de Docs Agent está diseñado para funcionar con contenido de texto y, además, incluye herramientas específicas para trabajar con sitios web que usan Markdown como formato de origen. Si trabajas con contenido de sitios web, debes preservar (o replicar) la estructura de directorios del sitio web publicado para permitir que la tarea de procesamiento de contenido asigne y cree vínculos a ese contenido.

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

Para preparar el contenido para su procesamiento, sigue estos pasos:

  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, conserva (o replica) la estructura de directorios del sitio web que se entrega.
  3. Limpia o edita el contenido según sea necesario para quitar la información no pública o cualquier otra que no quieras que se incluya en las búsquedas.

Usa la documentación de Flutter para realizar pruebas

Si necesitas un conjunto de contenido para probar el agente de Documentos, puedes usar la documentación para desarrolladores de Flutter.

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

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

Cómo procesar contenido

Para que el agente de búsqueda busque de manera eficaz 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 de modelo generativo de IA llamada incorporación de texto. Las incorporaciones de texto son representaciones numéricas del contenido de texto. Aproximan el 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, aproxime 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 k-vecinos más cercanos (k-NN).

Cómo dividir el contenido de texto

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, lo que significa que debes dividir tu contenido en fragmentos que no superen ese límite de caracteres. En esta sección, se describe cómo usar una secuencia de comandos proporcionada con el proyecto de agente de Documentos para dividir archivos de Markdown en fragmentos de texto más pequeños. Si deseas obtener sugerencias para trabajar con otros formatos de contenido, consulta Cómo controlar otros formatos.

Para dividir el contenido en 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. En este ejemplo, se segmenta un subconjunto de la documentación 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. Para dividir el contenido fuente de Markdown, ejecuta el comando agent chunk:
    agent chunk
    

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

Crea vectores de incorporación de texto

Después de dividir tu contenido en fragmentos significativos de tamaño adecuado, puedes propagar la base de datos de vectores 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 de 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, haz lo siguiente:

  1. Navega al directorio del proyecto docs-agent:
    cd docs-agent/
    
  2. Completa la base de datos de vectores con tu contenido usando 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 de tu contenido.

Cómo controlar otros formatos

El proyecto de Docs Agent está diseñado para funcionar con el contenido de sitios web en formato Markdown. Los autores del proyecto crearon 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 otros miembros de la comunidad deben compilar esos métodos adicionales. Consulta los problemas y las solicitudes de extracción del repositorio de código para ver si hay personas que compilan soluciones similares.

El código clave que debes compilar para admitir otros formatos de contenido es una secuencia de comandos de 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 a esta secuencia de comandos. Recuerda que el resultado de texto final debe tener un formato mínimo y la menor cantidad posible de información adicional. Si usas formatos de contenido, como HTML o JSON, asegúrate de quitar la mayor cantidad posible de formato no informativo (etiquetas, secuencias de comandos, CSS) para que no sesgue los valores de las incorporaciones de texto que generas a partir de ellos.

Una vez que hayas creado una secuencia de comandos de 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 usarlos con el agente de Documentos, consulta el Instructivo de procesamiento previo del agente de Documentos.

Prueba la app

Cuando hayas terminado de propagar tu base de datos de vectores, el proyecto estará listo para probarse. El proyecto proporciona una función de empaquetado para que puedas ejecutarlo de forma local.

Para ejecutar y probar la interfaz web del proyecto, sigue estos pasos:

  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. En tu navegador web, navega a la dirección web de la 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 variante del modelo de Gemini de recuperación semántica y respuesta a preguntas atribuidas (AQA). Puedes usar la función Búsqueda semántica de la API de Gemini para reemplazar la base de datos de vectores independiente. La función de recuperación semántica te permite generar incorporaciones para tu contenido y almacenarlo. El modelo Gemini de AQA está ajustado para responder preguntas con el material de origen proporcionado en una instrucción. Usas la recuperación semántica junto con el modelo de AQA para responder preguntas sobre tu contenido en la API de Gemini.

El agente de Documentos incluye opciones de configuración para usar la función de la API de Semantic Retrieval, el modelo de AQA Gemini o ambos. Para obtener más información, consulta el 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 Discord de la comunidad de Google Developers.

Aplicaciones de producción

Si planeas implementar el Agente de Documentos para un público amplio, ten en cuenta que el uso de la API de Google Gemini puede estar sujeto al límite 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.