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 sobre los sistemas RAG

Qué aprenderás

  • Cómo desarrollar un motor de búsqueda de calidad de Google que pueda responder tus preguntas a partir de los datos que subes
  • 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 utiliza 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 de aumento de recuperación (RAG), que es una técnica clave en la IA moderna.

Para trabajar con RAG, primero se recuperan pasajes relevantes de un corpus de documentos. Esto se hace utilizando 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 una respuesta a 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 ocurrir cuando los modelos de lenguaje no pueden distinguir entre información relevante e irrelevante.

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.

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

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

  • Muchos sistemas de búsqueda usan la RAV para generar resultados 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 de preguntas usan la RAG para generar respuestas a las preguntas de los usuarios que son precisas y completas.

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 también informativa.

En este codelab, crearemos un sistema RAG que pueda ayudarte a responder tus preguntas con el corpus proporcionado que subiste. La plataforma RAG lista para usar, llamada Vertex AI Search/Agent Builder, te ayuda a acelerar la compilación de sistemas RAG y, así, evita tener que recopilar los documentos, analizarlos, fragmentar, generar incorporaciones, expandir las consultas, y 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 compiles tus propios sistemas RAG DIY que ayudan a ajustarlos para adaptarlos a los requisitos de tu empresa.

Qué compilarás

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

También comprenderás mejor cómo usar las APIs de Vertex AI Search para crear esta arquitectura RAG en Google Cloud. Además, aprenderás a implementar esta aplicación de arquitectura RAG (con frontend y backend) en CloudRun, 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.
  • Haz 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.
  • Recuperar respuestas: Los usuarios pueden recuperar los resultados de la búsqueda o los candidatos, y verificar la veracidad o fundamentación de la respuesta recuperada 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. Cuando te conectes a Cloud Shell, usa el siguiente comando para comprobar que ya estés autenticado y que el proyecto esté configurado con tu ID del proyecto:
gcloud auth list
  1. Ejecuta el siguiente comando en Cloud Shell para confirmar que el comando de 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 estén habilitadas las siguientes APIs:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

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

3. Paso 1: Crea un bucket de GCP

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

adf5c0382f6c3540.png

  • Proporciona un nombre global único 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 que se encuentra debajo de la opción "Carpeta", haz clic en el botón "Examinar".
  • Selecciona el bucket que creaste en el paso 1
  • Asegúrate de seleccionar “Documentos no estructurados vinculados (JSONL con metadatos)” en las siguientes opciones
  • 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 de identificación para tu almacén de datos
  • Haz clic en Crear.

618b7a456fbffad4.png

Brownie:

  • Justo arriba del botón "Crear", puede ver la opción de procesamiento de documentos.
  • Puedes probar diferentes analizadores, como el digital, el OCR o el analizador 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: Crear un agente

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

ae5294e33f63567c.png

  • En Contenido, asegúrate de seleccionar "Genérico". También puedes seleccionar Contenido multimedia o Recomendaciones según el almacén de datos y el tipo de datos y sistemas que desees crear.
  • Asegúrate de activar las funciones de Enterprise Edition y Advanced LLM
  • Proporciona el nombre de tu aplicación
  • Proporciona el nombre de tu empresa

f8a41c9751f7a8d3.png

  • Asegúrate de seleccionar la región “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 tu 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 hasta el repositorio clonado con el siguiente comando:

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

  • Estructura de carpetas
  • Backend: Esto contendrá una implementación de la API basada en Python que ayudará a crear extremos restablecidos con los que tu frontend pueda interactuar.
  • Frontend: Mantendrá una aplicación basada en reacciones y entregará la IU. Esto 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 usen chips Apple Silicon, como M1, M2, etc. Esta marca no es necesaria si compilas con una máquina Windows o si tu arquitectura de 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 complete 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, múltiples versiones como etiquetas en contenedores de Docker. Asegurarse de que se use siempre 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 el etiquetado de la imagen del contenedor de Docker se complete correctamente, envíe 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 tu 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 página siguiente, asegúrate de que la opción “Implementar una revisión desde una imagen de contenedor existente” esté seleccionada
  • A continuación, haz clic en "Seleccionar".
  • Ahora aparecerá 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 de contenedor y expándela (siempre selecciona las más recientes implementadas con las etiquetas más recientes adecuadas, es decir, v1, v2, etcétera).
  • Haz clic en la imagen de contenedor que se muestra debajo del nombre de la etiqueta de contenedor.

aac35d55d7dd874e.png

  • En el área Configurar
  • Proporciona un nombre de servicio para tu aplicación de Cloud Run (esto será parte de la URL cuando la implementes 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 la opción “Permitir invocaciones no autenticadas” esté seleccionada.
  • En Asignación y precios de CPU
  • Selecciona “La CPU solo se asigna durante el procesamiento de la solicitud”.
  • Modifica el ajuste de escala automático del servicio a 1 (para fines de producción, se recomienda tener una cantidad mínima de instancias en ejecución para manejar 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 implementado, podrás ver la URL disponible públicamente desde la que puedes acceder a tu aplicación web.

1dfdb007c52581a1.png

8. Cómo funciona todo

  • 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 mostrarán todas las respuestas relevantes del documento que acabas de subir.
  • Puedes explorar el código del backend y agregar más configuraciones como las siguientes:
  • Cómo agregar fragmentos
  • Agrega segmentos extractivos
  • Agrega 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. El vínculo al repositorio completo está aquí. Con Google Cloud y en solo 5 pasos, podemos generar un sistema RAG de extremo a extremo que puede entregarte resultados de calidad de Google listos para usar en pocos minutos. A medida que evolucionan la IA generativa y los modelos grandes de lenguaje, crear estos sistemas RAG también nos ayuda a evitar las dificultades de la alucinación y de que se muestra información no citada.

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