Implementación de RAG con Vertex AI Search
La implementación de RAG (Retrieval Augmented Generation) mejora la precisión de Gemini al consultar información corporativa específica. Esta lección detalla cómo usar Vertex AI Search para indexar y recuperar datos, integrándolos con Gemini para generar respuestas contextualizadas y verificables.

El papel de Vertex AI Search en RAG
Vertex AI Search (anteriormente Google Cloud Enterprise Search) es un servicio administrado que facilita la creación de motores de búsqueda empresariales. Para RAG, su función principal es indexar diversas fuentes de datos y permitir la recuperación eficiente de fragmentos de información relevantes en respuesta a una consulta. Esto es crítico porque Gemini, por sí solo, no tiene acceso a los datos internos de una organización. Vertex AI Search actúa como el puente entre Gemini y el repositorio de conocimiento interno.
La ventaja de usar Vertex AI Search sobre una implementación de búsqueda personalizada es la gestión de la infraestructura, la escalabilidad y las capacidades integradas de procesamiento de lenguaje natural (PLN) para la indexación y la búsqueda semántica. Esto reduce la carga operativa y acelera la implementación de soluciones RAG.
Arquitectura de RAG con Vertex AI Search
Una arquitectura típica de RAG con Vertex AI Search y Gemini sigue estos pasos:
- Ingesta de datos: Los documentos corporativos (PDF, HTML, bases de datos, etc.) se ingieren en Vertex AI Search. Este proceso implica la extracción de texto, la limpieza y la estructuración de los datos.
- Indexación: Vertex AI Search crea un índice sobre los datos ingeridos. Este índice permite búsquedas rápidas y relevantes. Puede incluir capacidades de búsqueda semántica, donde el significado de la consulta se compara con el significado del contenido, no solo con las palabras clave.
- Consulta del usuario: Un usuario envía una consulta a la aplicación que integra Gemini.
- Generación de consulta de búsqueda: La consulta original del usuario se utiliza para generar una o más consultas optimizadas para Vertex AI Search. Esto puede implicar reescritura de consultas o extracción de palabras clave.
- Recuperación de información: La aplicación llama a Vertex AI Search con las consultas generadas. Vertex AI Search devuelve los fragmentos de documentos más relevantes (snippets o chunks).
- Aumento de la consulta a Gemini: Los fragmentos de información recuperados se añaden a la prompt original del usuario. Esta prompt aumentada se envía a Gemini.
- Generación de respuesta: Gemini utiliza la prompt aumentada, que ahora contiene contexto relevante y verificable, para generar una respuesta precisa y fundamentada.
- Presentación de respuesta: La respuesta de Gemini se presenta al usuario, a menudo junto con las fuentes de los documentos originales para su verificación.
Configuración de un datastore en Vertex AI Search
El primer paso práctico es crear un datastore en Vertex AI Search. Un datastore es un contenedor para sus datos y define cómo se indexarán y buscarán. Puede tener diferentes tipos de datastores según la fuente de datos.
- Documentos no estructurados: Para archivos PDF, Word, HTML, etc. Se pueden cargar desde Cloud Storage.
- Sitios web: Para indexar contenido de URLs específicas o dominios completos.
- Bases de datos: A través de conectores o exportaciones a formatos compatibles.
- Datos estructurados: Para tablas o registros con esquemas definidos.
Para configurar un datastore, se accede a la consola de Google Cloud, se navega a Vertex AI Search y se selecciona 'New App'. Se elige el tipo de aplicación (ej. 'Search' o 'Agent'), se define el tipo de datastore (ej. 'Unstructured documents'), y se especifica la fuente de datos (ej. un bucket de Cloud Storage). Es crucial configurar correctamente el esquema de indexación y los campos de metadatos para optimizar la recuperación.
La calidad de los datos ingeridos es directamente proporcional a la calidad de las respuestas de RAG. Dedique tiempo a la limpieza, estructuración y etiquetado de sus documentos antes de la ingesta en Vertex AI Search. Un índice deficiente resultará en una recuperación deficiente, independientemente de la capacidad de Gemini.
Integración con Gemini a través de la API
Una vez que Vertex AI Search está configurado y los datos están indexados, la integración con Gemini se realiza a nivel de código mediante la API. La aplicación cliente debe hacer dos llamadas principales:
- Llamada a Vertex AI Search: Se envía la consulta del usuario a Vertex AI Search para obtener los fragmentos de información relevantes. La respuesta incluirá los textos recuperados y, opcionalmente, referencias a las fuentes originales.
- Llamada a Gemini: Con los fragmentos recuperados, se construye una prompt que incluye la consulta original del usuario y el contexto adicional. Esta prompt se envía a la API de Gemini para la generación de la respuesta.
from vertexai.preview.generative_models import GenerativeModel, Part
from google.cloud import discoveryengine_v1beta as discoveryengine
# Suponiendo que ya tiene una consulta del usuario y un ID de datastore
user_query = "¿Cuál es la política de vacaciones para empleados senior?"
project_id = "your-gcp-project-id"
location = "global" # o su región de datastore
datastore_id = "your-datastore-id"
# 1. Llamada a Vertex AI Search
client = discoveryengine.SearchServiceClient()
serving_config = client.serving_config_path(
project=project_id, location=location, data_store=datastore_id
)
request = discoveryengine.SearchRequest(
serving_config=serving_config,
query=user_query,
page_size=3 # Recuperar los 3 resultados más relevantes
)
response = client.search(request=request)
retrieved_context = ""
for result in response.results:
if result.document.derived_struct_data:
# Extraer el contenido del documento
content = result.document.derived_struct_data.get('content')
if content: retrieved_context += content + "\n\n"
# 2. Aumento de la prompt y llamada a Gemini
model = GenerativeModel("gemini-pro") # O gemini-enterprise
prompt_template = """
Basado en la siguiente información:
{context}
Responde a la siguiente pregunta: {query}
"""
augmented_prompt = prompt_template.format(
context=retrieved_context,
query=user_query
)
# Generación de la respuesta con Gemini
response_gemini = model.generate_content(augmented_prompt)
print(response_gemini.text)Este fragmento ilustra el flujo. En un entorno de producción, se agregarían manejos de errores, optimización de la prompt, y un procesamiento más sofisticado de los resultados de búsqueda (ej. seleccionar solo los fragmentos más relevantes, resumir los resultados antes de pasarlos a Gemini).
Consideraciones de seguridad y gobierno
La seguridad y el gobierno de los datos son primordiales al implementar RAG con información corporativa. Vertex AI Search respeta los permisos de IAM de Google Cloud, lo que significa que el acceso a los datastores y a los documentos subyacentes puede controlarse a nivel de usuario o servicio. Es fundamental configurar estos permisos con el principio de mínimo privilegio.
- Control de acceso: Asegúrese de que solo las cuentas de servicio autorizadas puedan acceder a los datastores de Vertex AI Search y que los usuarios finales solo reciban respuestas basadas en información a la que tienen permiso de acceso.
- Anonimización/Redacción: Para datos sensibles, considere la anonimización o redacción antes de la ingesta, o implemente lógica post-recuperación para filtrar información confidencial.
- Auditoría: Habilite los registros de auditoría en Google Cloud para rastrear quién accede a los datos y cómo se utilizan las consultas de búsqueda y las respuestas de Gemini.
Aplicación práctica: Preparación de un PoC
Para el lunes, identifique un conjunto de documentos internos no sensibles (ej. manuales de procedimientos públicos, políticas de RRHH generales, FAQs internas) que puedan usarse para un PoC de RAG. Seleccione un bucket de Cloud Storage existente o cree uno nuevo para alojar estos documentos. El objetivo es preparar la fuente de datos para la ingesta en Vertex AI Search. No ingiera datos sensibles ni de producción en este momento. Revise la documentación de Vertex AI Search para familiarizarse con los tipos de datastores y las opciones de ingesta. Esto le dará una base para la siguiente lección sobre el uso de bases de datos vectoriales.
There are no comments for now.