Usar Vertex AI Search como backend de extracción con Vertex AI RAG Engine

En esta página se presenta la integración de Vertex AI Search con el motor RAG de Vertex AI.

Vertex AI Search ofrece una solución para recuperar y gestionar datos en tus aplicaciones de RAG de Vertex AI. Si usas Vertex AI Search como backend de extracción, puedes mejorar el rendimiento, la escalabilidad y la facilidad de integración.

  • Rendimiento y escalabilidad mejorados: Vertex AI Search se ha diseñado para gestionar grandes volúmenes de datos con una latencia excepcionalmente baja. Esto se traduce en tiempos de respuesta más rápidos y un mejor rendimiento de tus aplicaciones RAG, especialmente cuando se trata de bases de conocimientos complejas o extensas.

  • Gestión de datos simplificada: importa tus datos de varias fuentes, como sitios web, conjuntos de datos de BigQuery y segmentos de Cloud Storage, para optimizar el proceso de ingestión de datos.

  • Integración perfecta: Vertex AI ofrece una integración integrada con Vertex AI Search, que te permite seleccionar Vertex AI Search como backend de corpus para tu aplicación de RAG. Esto simplifica el proceso de integración y ayuda a garantizar una compatibilidad óptima entre los componentes.

  • Mejora de la calidad de los resultados de los LLMs: al usar las funciones de recuperación de Vertex AI Search, puedes asegurarte de que tu aplicación RAG recupere la información más relevante de tu corpus, lo que da lugar a resultados más precisos e informativos generados por LLMs.

Vertex AI Search combina la extracción de información detallada, el procesamiento del lenguaje natural y las funciones más recientes en el procesamiento de modelos de lenguaje extenso (LLM), lo que ayuda a comprender la intención de los usuarios y a devolverles los resultados más relevantes.

Con Vertex AI Search, puedes crear una aplicación de búsqueda con la calidad de Google usando datos que tú controlas.

Para configurar Vertex AI Search, sigue estos pasos:

  1. Crea un almacén de datos de búsqueda.
  2. Crea una aplicación de búsqueda.

Usar Vertex AI Search como backend de extracción para Vertex AI RAG Engine

Una vez que hayas configurado Vertex AI Search, sigue estos pasos para definirlo como backend de extracción de la aplicación RAG.

Definir Vertex AI Search como backend de extracción para crear un corpus RAG

Estos ejemplos de código muestran cómo configurar Vertex AI Search como backend de extracción de un corpus de RAG.

REST

Para usar la línea de comandos y crear un corpus de RAG, sigue estos pasos:

  1. Crear un corpus de RAG

    Sustituye las siguientes variables que se usan en el código de ejemplo:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • LOCATION: la región en la que se procesará la solicitud.
    • DISPLAY_NAME: el nombre visible del corpus de RAG que quieras crear.
    • ENGINE_NAME: nombre completo del recurso del motor de búsqueda de Vertex AI o del almacén de datos de búsqueda de Vertex AI. Por ejemplo,

      projects/PROJECT_NUMBER/locations/LOCATION/collections/default_collection/engines/ENGINE_NAME/servingConfigs/default_search

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" \
    -d '{
      "display_name" : "DISPLAY_NAME",
      "vertex_ai_search_config" : {
        "serving_config": "ENGINE_NAME/servingConfigs/default_search"
      }
    }'
    
  2. Monitorizar el progreso

    Sustituye las siguientes variables que se usan en el código de ejemplo:

    • PROJECT_ID: el ID de tu proyecto de Google Cloud .
    • LOCATION: la región en la que se procesará la solicitud.
    • OPERATION_ID: el ID de la operación de creación del corpus de RAG.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

Python

Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# vertex_ai_search_engine_name = "projects/{PROJECT_ID}/locations/{LOCATION}/collections/default_collection/engines/{ENGINE_ID}"
# display_name = "test_corpus"
# description = "Corpus Description"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

# Configure Search
vertex_ai_search_config = rag.VertexAiSearchConfig(
    serving_config=f"{vertex_ai_search_engine_name}/servingConfigs/default_search",
)

corpus = rag.create_corpus(
    display_name=display_name,
    description=description,
    vertex_ai_search_config=vertex_ai_search_config,
)
print(corpus)
# Example response:
# RagCorpus(name='projects/1234567890/locations/us-central1/ragCorpora/1234567890',
# display_name='test_corpus', description='Corpus Description'.
# ...

Recuperar contextos con la API RAG

Una vez creado el corpus de RAG, se pueden recuperar contextos relevantes de Vertex AI Search mediante la API RetrieveContexts.

REST

En este código de ejemplo se muestra cómo recuperar contextos mediante REST.

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • RAG_CORPUS_RESOURCE: nombre del recurso de corpus de RAG.

    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.

  • TEXT: el texto de la consulta para obtener contextos relevantes.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
        "rag_corpus": "RAG_CORPUS_RESOURCE"
      }
    },
    "query": {
      "text": "TEXT"
    }
  }'

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/[rag_corpus_id]"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=corpus_name,
            # Optional: supply IDs from `rag.list_files()`.
            # rag_file_ids=["rag-file-1", "rag-file-2", ...],
        )
    ],
    text="Hello World!",
    rag_retrieval_config=rag.RagRetrievalConfig(
        top_k=10,
        filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
    ),
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Generar contenido con la API de Gemini de Vertex AI

REST

Para generar contenido con modelos de Gemini, llama a la API de GenerateContent de Vertex AI. Si especificas el RAG_CORPUS_RESOURCE en la solicitud, se recuperarán automáticamente los datos de Vertex AI Search.

Sustituye las siguientes variables que se usan en el código de ejemplo:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • LOCATION: la región en la que se procesará la solicitud.
  • MODEL_ID: modelo de LLM para generar contenido. Por ejemplo, gemini-2.0-flash.
  • GENERATION_METHOD: método de LLM para generar contenido. Por ejemplo, generateContent, streamGenerateContent.
  • INPUT_PROMPT: el texto que se envía al LLM para generar contenido. Intenta usar una petición relacionada con los documentos de Vertex AI Search.
  • RAG_CORPUS_RESOURCE: nombre del recurso de corpus de RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: opcional. Número de contextos principales que se van a recuperar.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
    -d '{
      "contents": {
        "role": "user",
        "parts": {
          "text": "INPUT_PROMPT"
        }
      },
      "tools": {
        "retrieval": {
          "disable_attribution": false,
          "vertex_rag_store": {
            "rag_resources": {
                "rag_corpus": "RAG_CORPUS_RESOURCE"
              },
            "similarity_top_k": SIMILARITY_TOP_K
          }
        }
      }
    }'
    

Python

Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.


from vertexai import rag
from vertexai.generative_models import GenerativeModel, Tool
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# corpus_name = "projects/{PROJECT_ID}/locations/us-central1/ragCorpora/{rag_corpus_id}"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=corpus_name,
                    # Optional: supply IDs from `rag.list_files()`.
                    # rag_file_ids=["rag-file-1", "rag-file-2", ...],
                )
            ],
            rag_retrieval_config=rag.RagRetrievalConfig(
                top_k=10,
                filter=rag.utils.resources.Filter(vector_distance_threshold=0.5),
            ),
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-2.0-flash-001", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("Why is the sky blue?")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Siguientes pasos