Usa Vertex AI Search como backend de recuperación con el motor de RAG de Vertex AI

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

Vertex AI Search proporciona una solución para recuperar y administrar datos en tus aplicaciones de RAG de Vertex AI. Cuando usas Vertex AI Search como backend de recuperación, puedes mejorar el rendimiento, la escalabilidad y la facilidad de integración.

  • Rendimiento y escalabilidad mejorados: La Búsqueda de Vertex AI está diseñada para controlar 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 desde varias fuentes, como sitios web, conjuntos de datos de BigQuery y buckets de Cloud Storage, que pueden optimizar tu proceso de transferencia de datos.

  • Integración perfecta: Vertex AI proporciona integración integrada con Vertex AI Search, que te permite seleccionar Vertex AI Search como el 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 la calidad de los resultados del LLM: Cuando usas las capacidades de recuperación de Vertex AI Search, puedes asegurarte de que tu aplicación de RAG recupere la información más relevante de tu corpus, lo que genera resultados más precisos y informativos generados por el LLM.

Vertex AI Search combina la recuperación profunda de información, el procesamiento de lenguaje natural y las funciones más recientes del procesamiento de modelos de lenguaje extenso (LLM), lo que ayuda a comprender la intención del usuario y mostrar los resultados más relevantes para este.

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

Para configurar una búsqueda de Vertex AI, haz lo siguiente:

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

Usa Vertex AI Search como backend de recuperación para el motor de RAG de Vertex AI

Una vez que se configure Vertex AI Search, sigue estos pasos para configurarlo como el backend de recuperación de la aplicación de RAG.

Configura Vertex AI Search como el backend de recuperación para crear un corpus de RAG

En estas muestras de código, se muestra cómo configurar Vertex AI Search como el backend de recuperación de un corpus de RAG.

REST

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

  1. Crea 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 búsqueda de Vertex AI o del almacén de datos de Vertex AI Search.
    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" \
    -d '{
      "display_name" : "DISPLAY_NAME",
      "vertex_ai_search_config" : {
        "serving_config": "ENGINE_NAME/servingConfigs/default_search"
      }
    }'
    
  2. Supervisa 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

Python

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

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


from vertexai.preview 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'.
# ...

Cómo recuperar contextos con la API de RAG

Después de crear el corpus de RAG, se pueden recuperar contextos relevantes de la búsqueda de Vertex AI 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 relevantes.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/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. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.


from vertexai.preview 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!",
    similarity_top_k=10,  # Optional
    vector_distance_threshold=0.5,  # Optional
    # vector_search_alpha=0.5, # Optional - Only supported for Weaviate
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Genera contenido con la API de Gemini de Vertex AI

REST

Para generar contenido con modelos de Gemini, realiza una llamada a la API de GenerateContent de Vertex AI. Cuando especificas el RAG_CORPUS_RESOURCE en la solicitud, se recuperan datos automáticamente de Vertex AI 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 un modelo de LLM para la generación de contenido. Por ejemplo, gemini-1.5-flash-002.
  • GENERATION_METHOD: Es el método 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 relevante para los documentos en Vertex AI 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/v1beta1/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. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.


from vertexai.preview import rag
from vertexai.preview.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", ...],
                )
            ],
            similarity_top_k=3,  # Optional
            vector_distance_threshold=0.5,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="gemini-1.5-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....
#   ...

¿Qué sigue?