Usar a Vertex AI para Pesquisa como um back-end de recuperação usando o mecanismo RAG da Vertex AI

Nesta página, apresentamos a integração da Vertex AI para Pesquisa com o mecanismo RAG da Vertex AI.

A Vertex AI para Pesquisa oferece uma solução para recuperar e gerenciar dados nos aplicativos RAG da Vertex AI. Ao usar a Vertex AI para Pesquisa como seu back-end de recuperação, você pode melhorar o desempenho, a escalonabilidade e a facilidade de integração.

  • Melhor desempenho e escalonabilidade: a Pesquisa da Vertex AI foi projetada para processar grandes volumes de dados com latência excepcionalmente baixa. Isso se traduz em tempos de resposta mais rápidos e melhor desempenho para seus aplicativos de RAG, especialmente ao lidar com bases de conhecimento complexas ou extensas.

  • Gerenciamento simplificado de dados: importe dados de várias fontes, como sites, conjuntos de dados do BigQuery e buckets do Cloud Storage, que podem simplificar seu processo de ingestão de dados.

  • Integração perfeita: a Vertex AI oferece integração integrada com a Vertex AI para Pesquisa, permitindo selecionar a Vertex AI para Pesquisa como o back-end de corpus do seu aplicativo RAG. Isso simplifica o processo de integração e ajuda a garantir a compatibilidade ideal entre os componentes.

  • Melhor qualidade da saída do LLM: ao usar os recursos de recuperação da Vertex AI para Pesquisa, você garante que seu aplicativo RAG recupere as informações mais relevantes do corpus, o que leva a saídas mais precisas e informativas geradas pelo LLM.

A Vertex AI Search reúne recuperação profunda de informações, processamento de linguagem natural e os recursos mais recentes em processamento de modelos de linguagem grandes (LLMs), o que ajuda a entender a intenção do usuário e retornar os resultados mais relevantes para ele.

Com a Vertex AI para Pesquisa, é possível criar um aplicativo de pesquisa com a qualidade do Google usando dados que você controla.

Para configurar uma pesquisa da Vertex AI, faça o seguinte:

  1. Crie um repositório de dados de pesquisa.
  2. Crie um app de pesquisa.

Usar a Vertex AI para Pesquisa como um back-end de recuperação para o mecanismo RAG da Vertex AI

Depois de configurar a Vertex AI para Pesquisa, siga estas etapas para defini-la como o back-end de recuperação do aplicativo RAG.

Definir a Vertex AI para Pesquisa como o back-end de recuperação para criar um corpus de RAG

Esses exemplos de código mostram como configurar a Pesquisa da Vertex AI como o back-end de recuperação de um corpus RAG.

REST

Para usar a linha de comando e criar um corpus de RAG, faça o seguinte:

  1. Criar um corpus RAG

    Substitua as seguintes variáveis usadas no exemplo de código:

    • PROJECT_ID: o ID do seu projeto do Google Cloud .
    • LOCATION: a região para processar a solicitação.
    • DISPLAY_NAME: o nome de exibição do corpus de RAG que você quer criar.
    • ENGINE_NAME: o nome completo do recurso do mecanismo de pesquisa da Vertex AI ou do repositório de dados da Vertex AI para Pesquisa.
    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. Monitorar o progresso

    Substitua as seguintes variáveis usadas no exemplo de código:

    • PROJECT_ID: o ID do seu projeto do Google Cloud .
    • LOCATION: a região para processar a solicitação.
    • OPERATION_ID: o ID da operação de criação do corpus 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 testar esse exemplo, siga as instruções de configuração para Python no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Python.

Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento 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 usando a API RAG

Depois da criação do corpus de RAG, os contextos relevantes podem ser recuperados da Vertex AI para Pesquisa usando a API RetrieveContexts.

REST

Este exemplo de código demonstra como recuperar contextos usando REST.

Substitua as seguintes variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do seu projeto do Google Cloud .
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_RESOURCE: o nome do recurso de corpus RAG.

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

  • TEXT: o texto da consulta para receber 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 como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da 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: "....
#   ....

Gerar conteúdo usando a API Gemini da Vertex AI

REST

Para gerar conteúdo usando modelos do Gemini, faça uma chamada para a API GenerateContent da Vertex AI. Ao especificar o RAG_CORPUS_RESOURCE na solicitação, ele recupera automaticamente os dados da Vertex AI para Pesquisa.

Substitua as seguintes variáveis usadas no exemplo de código:

  • PROJECT_ID: o ID do seu projeto do Google Cloud .
  • LOCATION: a região para processar a solicitação.
  • MODEL_ID: modelo LLM para geração de conteúdo. Por exemplo, gemini-2.0-flash.
  • GENERATION_METHOD: método LLM para geração de conteúdo. Exemplo: generateContent, streamGenerateContent.
  • INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Tente usar um comando relevante para os documentos na Vertex AI para Pesquisa.
  • RAG_CORPUS_RESOURCE: o nome do recurso de corpus RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: opcional: o número dos principais contextos a serem recuperados.

    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 como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da 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....
#   ...

A seguir