Use o Vertex AI Search como um back-end de obtenção através do Vertex AI RAG Engine

Esta página apresenta a integração do Vertex AI Search com o Vertex AI RAG Engine.

O Vertex AI Search oferece uma solução para obter e gerir dados nas suas aplicações RAG do Vertex AI. Ao usar o Vertex AI Search como o seu back-end de obtenção, pode melhorar o desempenho, a escalabilidade e a facilidade de integração.

  • Desempenho e escalabilidade melhorados: a Vertex AI Search foi concebida para processar grandes volumes de dados com uma latência excecionalmente baixa. Isto traduz-se em tempos de resposta mais rápidos e um desempenho melhorado para as suas aplicações RAG, especialmente quando lida com bases de conhecimentos complexas ou extensas.

  • Gestão de dados simplificada: importe os seus dados de várias origens, como websites, conjuntos de dados do BigQuery e contentores do Cloud Storage, que podem simplificar o seu processo de carregamento de dados.

  • Integração perfeita: o Vertex AI oferece uma integração incorporada com o Vertex AI Search, que lhe permite selecionar o Vertex AI Search como o back-end do corpus para a sua aplicação RAG. Isto simplifica o processo de integração e ajuda a garantir a compatibilidade ideal entre os componentes.

  • Qualidade de saída do MDI/CE melhorada: ao usar as capacidades de obtenção da Vertex AI Search, pode ajudar a garantir que a sua aplicação RAG obtém as informações mais relevantes do seu conjunto de documentos, o que resulta em saídas geradas pelo MDI/CE mais precisas e informativas.

A Vertex AI Search reúne a obtenção de informações detalhadas, o processamento de linguagem natural e as funcionalidades mais recentes no processamento de modelos de linguagem (conteúdo extenso) (MDIs/CEs), o que ajuda a compreender a intenção do utilizador e a devolver os resultados mais relevantes para o utilizador.

Com a Vertex AI Search, pode criar uma aplicação de pesquisa com a qualidade da Google usando dados que controla.

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

  1. Crie um arquivo de dados de pesquisa.
  2. Crie uma aplicação de pesquisa.

Use o Vertex AI Search como um back-end de obtenção para o Vertex AI RAG Engine

Depois de configurar a Vertex AI Search, siga estes passos para a definir como o back-end de obtenção da aplicação RAG.

Defina o Vertex AI Search como o back-end de obtenção para criar um corpus RAG

Estes exemplos de código mostram como configurar a Vertex AI Search como o back-end de obtenção para um corpus RAG.

REST

Para usar a linha de comandos para criar um corpus RAG, faça o seguinte:

  1. Crie um corpus de 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 o pedido.
    • DISPLAY_NAME: O nome a apresentar do conjunto de dados RAG que quer criar.
    • ENGINE_NAME: O nome completo do recurso do motor de pesquisa do Vertex AI ou do armazeno de dados do Vertex AI Search. Por exemplo,

      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. Monitorize 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 o pedido.
    • 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 experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do Vertex AI com bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python Vertex AI.

Para se autenticar no Vertex AI, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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'.
# ...

Obtenha contextos através da API RAG

Após a criação do corpus de RAG, é possível obter contextos relevantes a partir da Vertex AI Search através da API RetrieveContexts.

REST

Este exemplo de código demonstra como obter contextos através de 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 o pedido.
  • RAG_CORPUS_RESOURCE: o nome do recurso do corpus RAG.

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

  • TEXT: o texto da consulta para obter 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 ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


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: "....
#   ....

Gere conteúdo com a API Gemini do Vertex AI

REST

Para gerar conteúdo com modelos Gemini, faça uma chamada à API GenerateContent do Vertex AI. Ao especificar o RAG_CORPUS_RESOURCE no pedido, este obtém automaticamente dados do Vertex AI Search.

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

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

    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 ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.


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....
#   ...

O que se segue?