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 sobre LLMs
  • Conocimientos básicos de los sistemas RAG

Qué aprenderás

  • Cómo crear un motor de búsqueda con calidad de Google que pueda responder tus preguntas a partir de los datos que subas
  • Cómo crear un almacén de datos de Vertex AI
  • Cómo crear agentes de Vertex AI
  • Cómo aprovechar Cloud Run 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 mejorada por recuperación (RAG), que es clave en la IA moderna.

La RAG funciona recuperando primero pasajes relevantes de un corpus de documentos. Esto se hace con una variedad de métodos, como la correlación de palabras clave, la similitud semántica y el aprendizaje automático. Una vez que se recuperan los pasajes pertinentes, se usan para generar un resumen o una respuesta a la búsqueda del usuario.

El principal beneficio de la RAG es que permite que los modelos de lenguaje eviten la alucinación. La alucinación es un término que se usa para describir la generación de texto que no se basa en la evidencia del corpus de documentos. Esto puede ocurrir cuando los modelos de lenguaje no pueden distinguir entre la información pertinente y la irrelevante.

La RAG ayuda a evitar la alucinación, ya que garantiza que el texto generado siempre se base en 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 RAG en la práctica:

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

El RAG es una técnica versátil que se puede usar para generar texto en una variedad de dominios y aplicaciones. Es una herramienta potente que ayuda a que la IA sea más inteligente y proporcione más información.

En este codelab, compilaremos un sistema de RAG que puede 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 documentos, analizarlos, dividirlos en fragmentos, generar incorporaciones, expandir las búsquedas, recuperar candidatos y clasificarlos. Si bien el sistema de RAG listo para usar te ayuda a comenzar rápidamente, Google Cloud también proporciona APIs discretas para cada proceso con el objetivo de que compiles tus propios sistemas de RAG, lo que te permite ajustar tus sistemas de RAG para que se adapten a los requisitos de tu empresa.

Qué compilarás

Cuando termines este codelab, tendrás implementado un sistema de RAG funcional 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 Vertex AI Search para compilar esta arquitectura de RAG en Google Cloud. Además, 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 preguntas 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 o candidatos de la búsqueda y verificar la facticidad o la 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 a ella, 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 autenticaste y que el proyecto se configuró con tu ID del proyecto usando 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 a usar el comando de gcloud es acceder a la consola a través de 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 de Agent Builder, haz clic en "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 opciones que se muestran a continuación, 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 para tu almacén de datos
  • Haz clic en Crear.

618b7a456fbffad4.png

Brownie:

  • Justo arriba del botón "Crear", puedes ver la opción de procesamiento de documentos.
  • Puedes probar diferentes analizadores, como el digital, el de OCR o el de diseño.
  • También puedes habilitar el fragmentado avanzado y proporcionar tus propios límites de tamaño de fragmento personalizados.

38471c1d3411610d.png

5. Paso 3: Crea un agente

  • Una vez que se cree tu 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 el tipo de app como "Búsqueda" (también puedes crear agentes, bots conversacionales, recomendaciones, etcétera).

ae5294e33f63567c.png

  • Asegúrate de seleccionar "Genérico" en Contenido. También puedes seleccionar Media o Recommendations 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 de LLM avanzado.
  • 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: Crea un contenedor Docker para tu aplicación

  • 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 de RESTful para que tu frontend interactúe con ellos.
  • Frontend: Contendrá una aplicación basada en React y publicará la IU. También contendrá las llamadas necesarias a nivel de la aplicación para el backend a través de extremos de REST.
  • Dockerfile: Este archivo contendrá todos los comandos pertinentes 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 de Apple Silicon, como M1, M2, etcétera. Esta marca no es necesaria si compilas con una máquina Windows o si la arquitectura de tu CPU se basa 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, 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, enviaremos la imagen a Google Artifact Registry (GAR). GAR es una plataforma completamente administrada de Google que te ayuda a administrar y controlar las versiones 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 de Cloud Run sugerido.

592103eb61c16738.png

  • Haz clic en "Crear servicio".
  • En la página siguiente, 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, aparecerá una barra de navegación a la derecha.
  • Asegúrate de verificar si Artifact Registry está seleccionado 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 implementadas, 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 de configuración
  • 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 la que prefieras).
  • En Autenticación
  • Asegúrate de que la opción “Permitir invocaciones sin autenticar” esté seleccionada.
  • En Precios y asignación 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 instancias mínimas en ejecución para controlar tu 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 el aprovisionamiento de la misma puede tardar unos minutos.

b8b147265b8d457b.png

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

1dfdb007c52581a1.png

8. Cómo funciona

  • Una vez que estés en la página principal de la aplicación, haz clic en el botón “Cargar documento”.
  • Sube tu archivo PDF
  • Una vez que se complete la carga
  • Haz clic en la barra de búsqueda en la parte superior de la página web.
  • Comienza a buscar preguntas relacionadas con el documento que subiste
  • Una vez que escribas tu búsqueda y hagas clic en Buscar, se mostrarán todas las respuestas pertinentes del documento que acabas de subir.
  • Puedes experimentar con el código de backend y agregar más configuraciones como las siguientes
  • Cómo agregar fragmentos
  • Cómo agregar segmentos extractivos
  • Cómo agregar respuestas
  • Ajustar los primeros k resultados para ayudar al LLM a resumir la respuesta (algo similar a la Visión general creada por 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 de RAG listo para usar con rapidez que utiliza los modelos más avanzados de Google para proporcionar resultados de calidad de Google a tus búsquedas. Este codelab es solo para fines de demostración. Se deben configurar más medidas de seguridad y protecciones para los casos de uso de producción. Aquí se encuentra el vínculo al repositorio completo. Con Google Cloud y solo 5 pasos, podemos generar un sistema de RAG de extremo a extremo que puede brindarte resultados de calidad de Google listos para usar en cuestión de minutos. A medida que evolucionan la IA generativa y los modelos de lenguaje grandes, la creación de estos sistemas de RAG también nos ayuda a evitar los inconvenientes de la alucinación y la aparición de información no citada.

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