Crea un sistema de búsqueda de calidad de Google con Vertex AI

1. Antes de comenzar

Estos son algunos aspectos que debes tener en cuenta antes de continuar con este codelab.

Requisitos previos

  • Conocimientos básicos de los LLM
  • Conocimientos básicos de los sistemas RAG

Qué aprenderás

  • Cómo crear un motor de búsqueda de calidad de Google que pueda responder tus preguntas a partir de los datos que subas
  • Cómo crear un almacén de datos en Vertex AI
  • Cómo crear agentes de Vertex AI
  • Cómo aprovechar CloudRun para implementar la aplicación

Requisitos

  • Una cuenta de Google Cloud
  • Un proyecto de Google Cloud
  • Un IDE con terminal

Introducción

La Búsqueda de Google es una herramienta potente que usa un índice masivo de páginas web y otro contenido para proporcionar resultados relevantes a las búsquedas de los usuarios. Esto es posible gracias a una técnica llamada generación mejorada por recuperación (RAG), que es una técnica clave en la IA moderna.

La RAG funciona recuperando primero pasajes relevantes de un corpus de documentos. Esto se logra con una variedad de métodos, como la concordancia de palabras clave, la similitud semántica y el aprendizaje automático. Una vez que se recuperan los pasajes relevantes, se usan para generar un resumen o responder la consulta del usuario.

El principal beneficio de la RAG es que permite que los modelos de lenguaje eviten las alucinaciones. Alucinación es un término que se usa para describir la generación de texto que no está respaldada por la evidencia en el corpus de documentos. Esto puede suceder cuando los modelos de lenguaje no pueden distinguir entre información relevante y no relevante.

RAG ayuda a evitar alucinaciones, ya que garantiza que el texto generado siempre se base en la evidencia del corpus de documentos. Esto la convierte en una fuente de información más confiable.

La RAG es una técnica potente que se usa en una variedad de aplicaciones, incluidos los motores de búsqueda, los chatbots y los sistemas de respuesta a preguntas. Es probable que desempeñe un papel cada vez más importante en la IA en los próximos años.

Estos son algunos ejemplos de cómo se usa el método RAG en la práctica:

  • Muchos sistemas de búsqueda usan RAG para generar resultados de búsqueda relevantes para la consulta del usuario.
  • Los chatbots usan la RAG para generar respuestas a las preguntas de los usuarios que son informativas y atractivas.
  • Los sistemas de respuesta a preguntas usan RAG para generar respuestas a las preguntas de los usuarios que sean precisas y completas.

La RAG es una técnica versátil que se puede usar para generar texto en una variedad de dominios y aplicaciones. Es una herramienta poderosa que ayuda a que la IA sea más inteligente y más informativa.

En este codelab, compilaremos un sistema de RAG que pueda ayudarte a responder tus preguntas con el corpus proporcionado que subiste. La plataforma de RAG lista para usar llamada Vertex AI Search/Agent Builder te ayuda a acelerar la compilación de sistemas de RAG, lo que te evita el esfuerzo manual de recopilar los documentos, analizarlos, dividirlos, generar incorporaciones, expandir consultas, recuperar y clasificar candidatos. Si bien el sistema RAG listo para usar te ayuda a comenzar rápidamente, Google Cloud también proporciona APIs discretas para cada proceso para que crees tus propios sistemas RAG de bricolaje, lo que te permite ajustarlos para que se adapten a tus requisitos empresariales.

Qué compilarás

Al final de este codelab, tendrás implementado un sistema de RAG en funcionamiento que puede ayudarte a responder tus preguntas con información fáctica, fundamentada y citada con las referencias correctas.

También comprenderás mejor cómo usar las APIs de búsqueda de Vertex AI para compilar esta arquitectura de RAG en Google Cloud. Además, también aprenderás a implementar esta aplicación de arquitectura RAG (con frontend y backend) en Cloud Run, que es una plataforma sin servidores para implementar aplicaciones como contenedores en Google Cloud.

2d055ded874603a6.png

Cómo funciona la aplicación

  • Sube tus datos: Los usuarios pueden subir su propio corpus de datos, es decir, un archivo PDF como entrada.
  • Hacer consultas en la barra de búsqueda: Los usuarios pueden hacer preguntas en la barra de búsqueda en función del corpus de datos subido.
  • Recuperación de respuestas: Los usuarios pueden recuperar los resultados de la búsqueda o los candidatos y verificar la veracidad o el fundamento de la respuesta que se recupera en función de la relevancia de la búsqueda.

2. Configuración del entorno

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
  3. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud. Para acceder, haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.

1829c3759227c19b.png

  1. Una vez que te conectes a Cloud Shell, verifica que ya te hayas autenticado y que el proyecto esté configurado con tu ID de proyecto con el siguiente comando:
gcloud auth list
  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto.
gcloud config list project
  1. Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:
gcloud config set project <YOUR_PROJECT_ID>
  1. Asegúrate de que las siguientes APIs estén habilitadas:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

La alternativa al uso del comando gcloud es acceder a la consola mediante este vínculo. Consulta la documentación para ver los comandos y el uso de gcloud.

3. Paso 1: Crea un bucket de GCP

  • Ve a la consola y, en la barra de búsqueda, escribe Cloud Storage.
  • Selecciona Cloud Storage en los resultados sugeridos. 21d2bc910e71f7ec.png
  • Haz clic en Crear bucket.

adf5c0382f6c3540.png

  • Proporciona un nombre único a nivel global para el bucket
  • Haz clic en Continuar.
  • En Tipo de ubicación, selecciona Multirregión.
  • En el menú desplegable, asegúrate de seleccionar la opción us (multiple regions in United States).

731aead7d8497725.png

  • Haz clic en Crear bucket.

f7ac409ed9c4af21.png

4. Paso 2: Crea un almacén de datos de Vertex AI

  • En la barra de búsqueda de la página de la consola, escribe “Vertex AI Agent Builder”.
  • Selecciona el primer producto, "Agent Builder".

c4a67b92bb7900e3.png

  • En la página Agent Builder, haz clic en "Data Stores" (almacenes de datos), como se muestra en la barra de navegación del lado izquierdo.

f86f67d344d398fb.png

  • Haz clic en "Crear almacén de datos".

e64e771f33543f46.png

  • Selecciona Cloud Storage como tu almacén de datos
  • Haz clic en "Seleccionar" debajo del ícono de Cloud Storage.

3a8d22888e7eedc2.png

  • En la pestaña debajo de la opción "Carpeta", haz clic en el botón "Explorar".
  • Selecciona el bucket que creaste en el paso 1.
  • En las siguientes opciones, asegúrate de seleccionar "Documentos no estructurados vinculados (JSONL con metadatos)".
  • Haz clic en Continuar.

13876b5d12dbe1fb.png

  • En la página Configuración, selecciona “global” como la ubicación de tu almacén de datos.
  • Proporciona un nombre identificable a tu almacén de datos
  • Haz clic en Crear.

618b7a456fbffad4.png

Brownie:

  • Justo encima del botón “Crear”, puedes ver la opción de procesamiento de documentos.
  • Puedes experimentar con diferentes analizadores, como los digitales, los de OCR o los de diseño.
  • También puedes habilitar la fragmentación avanzada y proporcionar tus propios límites de tamaño de fragmentos personalizados.

38471c1d3411610d.png

5. Paso 3: Crea un agente

  • Una vez que crees tu almacén de datos, haz clic en la app de la barra de navegación de la izquierda y elige "Apps".
  • Haz clic en el botón "Crear aplicación".
  • Selecciona el tipo de app como "Búsqueda" (también puedes crear agentes, bots de conversación, recomendaciones, etcétera).

ae5294e33f63567c.png

  • Asegúrate de seleccionar "Genérico" en Contenido. También puedes seleccionar Contenido multimedia o Recomendaciones según el almacén de datos y el tipo de datos y sistemas que deseas crear.
  • Asegúrate de activar las funciones de la edición Enterprise y las funciones avanzadas de LLM.
  • Proporciona el nombre de tu aplicación
  • Proporciona el nombre de tu empresa

f8a41c9751f7a8d3.png

  • Asegúrate de seleccionar la región como “global”.
  • Haz clic en “Continuar”. ed17b18e094ba59a.png
  • En la siguiente pantalla, selecciona el almacén de datos que creaste en el paso 2.
  • Haz clic en “Crear”.

bc77006e0025ae9e.png

6. Paso 4: Aloja tu aplicación en un contenedor de Docker

  • Abre la terminal en la consola de Google Cloud
  • Clona el repositorio <sample_repository_link> con el siguiente comando:

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Cambia el directorio y navega al repositorio clonado con el siguiente comando:

cd vertex-ai-search-agent-builder-demo

  • Estructura de carpetas
  • Backend: Contendrá una implementación de API basada en Python que ayudará a crear extremos REST con los que tu frontend pueda interactuar.
  • Frontend: Contendrá una aplicación basada en reacciones y entregará la IU. También contendrá las llamadas necesarias a nivel de la aplicación al backend a través de extremos de REST.
  • Dockerfile: Este archivo contendrá todos los comandos relevantes para crear un contenedor de Docker.
  • En la raíz del directorio del repositorio, ejecuta el siguiente comando, que te ayudará a compilar una imagen de Docker (nota: asegúrate de usar la marca - - platform cuando compiles contenedores de Docker en MacBooks que usan chips Apple Silicon como M1, M2, etc. Esta marca no es necesaria si compilas con una máquina Windows o si la arquitectura de tu CPU está basada en Intel).

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

  • Una vez que la compilación del contenedor de Docker se realice correctamente, ejecuta el siguiente comando para etiquetar el contenedor con las etiquetas correctas y asegurarte de proporcionar una versión de tu imagen. Recuerda que puede haber varias versiones de la aplicación y, por lo tanto, varias versiones como etiquetas en los contenedores de Docker. Garantizar que siempre se use la versión estable más reciente es un buen enfoque recomendado desde la perspectiva de DevOps.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Una vez que se etiquete correctamente la imagen del contenedor de Docker, enviemos la imagen a Google Artifact Registry (GAR). GAR es una plataforma completamente administrada de Google que ayuda a administrar y controlar la versión de tus contenedores de Docker. Ejecuta el siguiente comando, que enviará el contenedor etiquetado anterior a GAR. Para obtener más información, consulta el siguiente vínculo [ 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. Paso 5: Implementa tu aplicación en Cloud Run

  • Minimiza la terminal. En la barra de búsqueda de la consola de Google Cloud, busca Cloud Run.
  • Haz clic en el producto sugerido de Cloud Run.

592103eb61c16738.png

  • Haz clic en “Crear servicio”.
  • En la siguiente página, asegúrate de que esté seleccionada la opción "Implementar una revisión desde una imagen de contenedor existente".
  • A continuación, haz clic en "Seleccionar".
  • Ahora se te mostrará una barra de navegación a la derecha.
  • Asegúrate de verificar si Artifact Registry está seleccionada como la pestaña
  • Asegúrate de verificar si el proyecto está seleccionado correctamente.
  • Haz clic en la flecha para expandir el acordeón en el vínculo de la imagen del contenedor implementado
  • Selecciona la etiqueta del contenedor y expándela (siempre selecciona las más recientes que se hayan implementado, con las etiquetas más recientes correctas, es decir, v1, v2, etcétera).
  • Haz clic en la imagen del contenedor que se muestra debajo del nombre de la etiqueta del contenedor.

aac35d55d7dd874e.png

  • En el área Configurar
  • Proporciona un nombre de servicio para tu aplicación de Cloud Run (este será parte de la URL cuando implementes la aplicación en Cloud Run).
  • Selecciona la región adecuada (en este caso, us-central1 o cualquier otra que elijas).
  • En la sección Autenticación
  • Asegúrate de que esté seleccionada la opción "Permitir invocaciones no autenticadas".
  • En Asignación de CPU y precios
  • Selecciona “La CPU solo se asigna durante el procesamiento de la solicitud”.
  • Modifica el escalamiento automático del servicio a 1 (para fines de producción, se recomienda tener instancias mínimas en ejecución para controlar el tráfico diario; incluso puedes dejarlo en 0, es decir, cero).
  • Establece el "Control de entrada" en "Todo" para permitir que el tráfico de Internet acceda a tu aplicación.
  • Haz clic en “Crear”.
  • Esto implementará una instancia de Cloud Run, y su aprovisionamiento tardará unos minutos

b8b147265b8d457b.png

  • Una vez que se implemente, podrás ver la URL de acceso público desde la que puedes acceder a tu aplicación web.

1dfdb007c52581a1.png

8. Cómo funciona

  • Cuando estés en la página principal de la aplicación, haz clic en el botón "Subir documento".
  • Sube tu archivo PDF
  • Una vez finalizada la carga
  • Haz clic en la barra de búsqueda en la parte superior de la página web.
  • Comienza a buscar consultas relacionadas con el documento que subiste
  • Una vez que escribas tu consulta y hagas clic en Buscar, se deberían mostrar todas las respuestas relevantes del documento que acabas de subir.
  • Puedes explorar el código del backend y agregar más parámetros de configuración como los siguientes.
  • Agrega fragmentos
  • Agrega segmentos extractivos
  • Cómo agregar respuestas
  • Ajusta los resultados K superior para ayudar al LLM a resumir la respuesta (algo como Resumen de la IA en la Búsqueda de Google).
  • Como complemento, también puedes agregar etiquetas de metadatos mientras subes el documento. Esto ayudará a generar facetas y categorías filtrables.

9. Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en este codelab:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.
  2. En la lista de proyectos, elige el proyecto que deseas borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.
  4. Como alternativa, puedes ir a Cloud Run en la consola, seleccionar el servicio que acabas de implementar y borrarlo.

10. Felicitaciones

¡Felicitaciones! Creaste con éxito un sistema RAG rápido y listo para usar con los modelos de vanguardia de Google y para proporcionar resultados de calidad de Google a tus consultas de búsqueda. Este codelab es solo una demostración. Se deben configurar más medidas de seguridad y barreras de seguridad para casos de uso de producción. Aquí tienes el vínculo al repositorio completo. Aprovechando Google Cloud y con solo 5 pasos, podemos generar un sistema de RAG de extremo a extremo que te brinde resultados de calidad de Google listos para usar en unos minutos. A medida que evolucionan la IA generativa y los modelos de lenguaje grandes, la compilación de esos sistemas de RAG también nos ayuda a evitar las trampas de las alucinaciones y la información no citada que aparece.

Si bien este es solo un punto de partida, podemos hacer maravillas con las APIs de RAG de bricolaje completamente personalizables, que te brindan aún más transparencia, potencia y eficiencia para controlar cada parte del proceso de canalización de manera eficaz.