Usa Agent Search como backend de recuperación con RAG Engine

En esta página, se presenta la integración de Agent Search con RAG Engine.

Agent Search proporciona una solución para recuperar y administrar datos dentro de tus aplicaciones de RAG de Gemini Enterprise Agent Platform. Si usas Agent Search como backend de recuperación, puedes mejorar el rendimiento, la escalabilidad y la facilidad de integración.

  • Rendimiento y escalabilidad mejorados: Agent Search está diseñado para manejar grandes volúmenes de datos con una latencia excepcionalmente baja. Esto se traduce en tiempos de respuesta más rápidos y un rendimiento mejorado para tus aplicaciones de RAG, en especial cuando se trata de bases de conocimiento complejas o extensas.

  • Administración de datos simplificada: Importa tus datos de varias fuentes, como sitios web, conjuntos de datos de BigQuery y buckets de Cloud Storage, que pueden optimizar tu proceso de ingesta de datos.

  • Integración perfecta: Agent Platform proporciona integración integrada con Agent Search, lo que te permite seleccionar Agent 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.

  • Calidad mejorada de los resultados del LLM: Si usas las capacidades de recuperación de Agent Search, puedes asegurarte de que tu aplicación de RAG recupere la información más pertinente de tu corpus, lo que genera resultados más precisos e informativos generados por el LLM.

Agent Search combina la recuperación profunda de información, el procesamiento de lenguaje natural y las funciones más recientes en el procesamiento de modelos de lenguaje grandes (LLM), lo que ayuda a comprender la intención del usuario y a devolver los resultados más pertinentes para este.

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

Para configurar Agent Search, haz lo siguiente:

  1. Crea un almacén de datos de búsqueda.

  2. Crea una aplicación de búsqueda.

Usa Agent Search como backend de recuperación para RAG Engine

Una vez que se configura Agent Search, sigue estos pasos para configurarlo como backend de recuperación para la aplicación de RAG.

Configura Agent Search como backend de recuperación para crear un corpus de RAG

En estos ejemplos de código, se muestra cómo configurar Agent Search como backend de recuperación para un corpus de RAG.

REST

Para usar la línea de comandos para crear un corpus de RAG, haz lo siguiente:

  1. Crear un corpus RAG

    Reemplaza las siguientes variables que se usan en la muestra de código:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • LOCATION: Es la región para procesar la solicitud.
    • DISPLAY_NAME: Es el nombre visible del corpus de RAG que deseas crear.
    • ENGINE_NAME: Es el nombre completo del recurso del motor de Agent Search o del almacén de datos de Agent Search. 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. Supervisar el progreso

    Reemplaza las siguientes variables que se usan en la muestra de código:

    • PROJECT_ID: Es el ID de tu Google Cloud proyecto.
    • LOCATION: Es la región para procesar la solicitud.
    • OPERATION_ID: Es 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 instrucciones de configuración de Python que se encuentran en la guía de inicio rápido de Agent Platform sobre cómo usar las bibliotecas cliente.

Para autenticarte en Agent Platform, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import agentplatform
from agentplatform import types

# 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 Agent Platform client once per session
client = agentplatform.Client(project=PROJECT_ID, location="us-central1")

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

corpus = client.rag.create_corpus(
    rag_corpus=types.RagCorpus(
        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'.
# ...

Recupera contextos con la API de RAG

Después de la creación del corpus de RAG, se pueden recuperar contextos pertinentes de Agent Search a través de la API de RetrieveContexts.

REST

En esta muestra de código, se muestra cómo recuperar contextos con REST.

Reemplaza las siguientes variables que se usan en la muestra de código:

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

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

  • TEXT: Es el texto de la consulta para obtener contextos pertinentes.
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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la Python documentación de referencia de la API.


import agentplatform

from agentplatform import types
from google.genai import types as genai_types

# 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 Agent Platform client once per session
client = agentplatform.Client(project=PROJECT_ID, location="us-east4")

response = client.rag.retrieve_contexts(
    vertex_rag_store=genai_types.VertexRagStore(
        rag_resources=[
            genai_types.VertexRagStoreRagResource(
                rag_corpus=corpus_name,
                # Optional: supply IDs from `rag.list_files()`.
                # rag_file_ids=["rag-file-1", "rag-file-2", ...],
            )
        ],
    ),
    query=types.RagQuery(
        text="Hello World!",
        rag_retrieval_config=genai_types.RagRetrievalConfig(
            top_k=10,
            filter=genai_types.RagRetrievalConfigFilter(
                vector_distance_threshold=0.5
            ),
        ),
    )
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Genera contenido con la API de Gemini de Agent Platform

REST

Para generar contenido con los modelos de Gemini, llama a la API de Agent Platform GenerateContent. Si especificas el RAG_CORPUS_RESOURCE en la solicitud, se recuperan automáticamente los datos de Agent Search.

Reemplaza las siguientes variables que se usan en el código de muestra:

  • PROJECT_ID: Es el ID de tu Google Cloud proyecto.

  • LOCATION: Es la región para procesar la solicitud.

  • MODEL_ID: Es el modelo de LLM para la generación de contenido. Por ejemplo, gemini-2.0-flash.

  • GENERATION_METHOD: Es el método de LLM para la generación de contenido. Por ejemplo, generateContent, streamGenerateContent.

  • INPUT_PROMPT: Es el texto que se envía al LLM para la generación de contenido. Intenta usar una instrucción pertinente para los documentos en Agent Search.

  • RAG_CORPUS_RESOURCE: Es el nombre del recurso del corpus de RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.

  • SIMILARITY_TOP_K: Opcional: Es la cantidad de contextos principales que se recuperarán.

    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

Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la Python documentación de referencia de la API.


from google import genai
from google.genai import types as genai_types

# 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}"

rag_retrieval_tool = genai_types.Tool(
    retrieval=genai_types.Retrieval(
        vertex_rag_store=genai_types.VertexRagStore(
            rag_resources=[
                genai_types.VertexRagStoreRagResource(
                    rag_corpus=corpus_name
                )
            ],
            rag_retrieval_config=genai_types.RagRetrievalConfig(
                top_k=10,
                filter=genai_types.RagRetrievalConfigFilter(
                    vector_distance_threshold=0.5
                ),
            ),
        ),
    )
)

# Create a GenAI SDK client to make a generate_content request
genai_client = genai.Client(enterprise=True, project=PROJECT_ID, location="us-central1")

response = genai_client.models.generate_content(
    model="gemini-2.5-pro",
    contents="Why is the sky blue?",
    config=genai_types.GenerateContentConfig(
        tools=[rag_retrieval_tool]
    )
)
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....
#   ...

¿Qué sigue?