API RAG Engine

O Vertex AI RAG Engine é um componente da plataforma Vertex AI, que facilita a Geração de Recuperação Aumentada (RAG). O RAG Engine permite que os modelos de linguagem grandes (LLMs) acessem e incorporem dados de fontes de conhecimento externas, como documentos e bancos de dados. Ao usar o RAG, os LLMs podem gerar respostas mais precisas e informativas.

Lista de parâmetros

Esta seção lista o seguinte:

Parâmetros Exemplos
Consulte Parâmetros de gerenciamento do corpus. Consulte Exemplos de gerenciamento de corpus.
Consulte Parâmetros de gerenciamento de arquivos. Consulte Exemplos de gerenciamento de arquivos.

Parâmetros de gerenciamento do corpus

Para informações sobre um corpus RAG, consulte Gerenciamento de corpus.

Criar um corpus RAG

Esta tabela lista os parâmetros usados para criar um corpus de RAG.

Solicitação do corpo
Parâmetros

display_name

Obrigatório: string

O nome de exibição do corpus RAG.

description

Opcional: string

A descrição do corpus RAG.

vector_db_config

Opcional: imutável (RagVectorDbConfig)

A configuração dos bancos de dados vetoriais.

vertex_ai_search_config.serving_config

Opcional: string

A configuração da Vertex AI para Pesquisa.

Formato: projects/{project}/locations/{location}/collections/{collection}/engines/{engine}/servingConfigs/{serving_config} ou projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/servingConfigs/{serving_config}

RagVectorDbConfig
Parâmetros

rag_managed_db

vector_db de oneof: RagVectorDbConfig.RagManagedDb

Se nenhum banco de dados de vetores for especificado, rag_managed_db será o banco de dados de vetores padrão.

pinecone

vector_db de oneof: RagVectorDbConfig.Pinecone

Especifica sua instância de Pinecone.

pinecone.index_name

string

Esse é o nome usado para criar o índice Pinecone usado com o corpus RAG.

Não é possível alterar esse valor depois de definido. Você pode deixá-lo vazio na chamada de API CreateRagCorpus e defini-lo com um valor não vazio em uma chamada de API UpdateRagCorpus de acompanhamento.

vertex_vector_search

vector_db de oneof: RagVectorDbConfig.VertexVectorSearch

Especifica sua instância da Vertex Vector Search.

vertex_vector_search.index

string

Este é o nome do recurso do índice de Pesquisa de vetor usado com o corpus RAG.

Formato: projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}

Não é possível alterar esse valor depois de definido. Você pode deixá-lo vazio na chamada de API CreateRagCorpus e defini-lo com um valor não vazio em uma chamada de API UpdateRagCorpus de acompanhamento.

vertex_vector_search.index_endpoint

string

Este é o nome do recurso do endpoint do índice da Pesquisa de vetor usado com o corpus RAG.

Formato: projects/{project}/locations/{location}/indexes/{index}

Não é possível alterar esse valor depois de definido. Você pode deixá-lo vazio na chamada de API CreateRagCorpus e defini-lo com um valor não vazio em uma chamada de API UpdateRagCorpus de acompanhamento.

api_auth.api_key_config.api_key_secret_version

string

Este é o nome completo do recurso do secret armazenado no Secret Manager, que contém sua chave de API Pinecone.

Formato: projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

Você pode deixá-lo vazio na chamada de API CreateRagCorpus e defini-lo com um valor não vazio em uma chamada de API UpdateRagCorpus de acompanhamento.

rag_embedding_model_config.vertex_prediction_endpoint.endpoint

Opcional: imutável (string)

O modelo de embedding a ser usado para o corpus de RAG. Esse valor não pode ser alterado depois de definido. Se você deixá-lo vazio, usaremos text-embedding-005 como o modelo de embedding.

Atualizar um corpus RAG

Esta tabela lista os parâmetros usados para atualizar um corpus RAG.

Solicitação do corpo
Parâmetros

display_name

Opcional: string

O nome de exibição do corpus RAG.

description

Opcional: string

A descrição do corpus RAG.

rag_vector_db.pinecone.index_name

string

Esse é o nome usado para criar o índice Pinecone usado com o corpus RAG.

Se o RagCorpus tiver sido criado com uma configuração Pinecone e esse campo nunca tiver sido definido, atualize o nome do índice da instância do Pinecone.

rag_vector_db.vertex_vector_search.index

string

Este é o nome do recurso do índice de Pesquisa de vetor usado com o corpus RAG.

Formato: projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}

Se o RagCorpus tiver sido criado com uma configuração Vector Search e esse campo nunca tiver sido definido, ele poderá ser atualizado.

rag_vector_db.vertex_vector_search.index_endpoint

string

Este é o nome do recurso do endpoint do índice da Pesquisa de vetor usado com o corpus RAG.

Formato: projects/{project}/locations/{location}/indexes/{index}

Se o RagCorpus tiver sido criado com uma configuração Vector Search e esse campo nunca tiver sido definido, ele poderá ser atualizado.

rag_vector_db.api_auth.api_key_config.api_key_secret_version

string

O nome completo do recurso do secret armazenado no Secret Manager, que contém a chave de API do Pinecone.

Formato: projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

Listar corpora RAG

Esta tabela lista os parâmetros usados para listar o corpora do RAG.

Parâmetros

page_size

Opcional: int

O tamanho de página de lista padrão.

page_token

Opcional: string

O token de página de lista padrão. Normalmente recebido de [ListRagCorporaResponse.next_page_token][] da chamada [VertexRagDataService.ListRagCorpora][] anterior.

Acessar um corpus RAG

Esta tabela lista os parâmetros usados para receber um corpus de RAG.

Parâmetros

name

string

RagCorpus: o nome do recurso. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

Excluir um corpus RAG

Esta tabela lista os parâmetros usados para excluir um corpus de RAG.

Parâmetros

name

string

RagCorpus: o nome do recurso. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

Parâmetros de gerenciamento de arquivos

Para informações sobre um arquivo RAG, consulte Gerenciamento de arquivos.

Fazer upload de um arquivo RAG

Esta tabela lista os parâmetros usados para fazer upload de um arquivo RAG.

Solicitação do corpo
Parâmetros

parent

string

RagCorpus: o nome do recurso. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

rag_file

Obrigatório: RagFile

O arquivo a ser enviado.

upload_rag_file_config

Obrigatório: UploadRagFileConfig

A configuração do RagFile que será enviado por upload para o RagCorpus.

RagFile

display_name

Obrigatório: string

O nome de exibição do arquivo RAG.

description

Opcional: string

A descrição do arquivo RAG.

UploadRagFileConfig

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_size

int32

Número de tokens que cada bloco tem.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_overlap

int32

A sobreposição entre blocos.

Importar arquivos RAG

Esta tabela lista os parâmetros usados para importar um arquivo RAG.

Parâmetros

parent

Obrigatório: string

RagCorpus: o nome do recurso.

Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus_id}

gcs_source

import_source de oneof: GcsSource

Local do Cloud Storage.

Oferece suporte à importação de arquivos individuais e de diretórios inteiros do Cloud Storage.

gcs_source.uris

list de string

URI do Cloud Storage que contém o arquivo de upload

google_drive_source

import_source de oneof: GoogleDriveSource

Local do Google Drive.

Oferece suporte à importação de arquivos individuais e de pastas do Google Drive.

slack_source

import_source de oneof: SlackSource

O canal do Slack em que o arquivo é enviado.

jira_source

import_source de oneof: JiraSource

A consulta do Jira para onde o arquivo é enviado.

share_point_sources

import_source de oneof: SharePointSources

As origens do SharePoint para onde o arquivo é enviado.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_size

int32

Número de tokens que cada bloco tem.

rag_file_transformation_config.rag_file_chunking_config.fixed_length_chunking.chunk_overlap

int32

A sobreposição entre blocos.

rag_file_parsing_config

Opcional: RagFileParsingConfig

Especifica a configuração de análise para RagFiles.

Se esse campo não for definido, o RAG usará o analisador padrão.

max_embedding_requests_per_min

Opcional: int32

O número máximo de consultas por minuto que esse job pode fazer no modelo de embedding especificado no corpus. Esse valor é específico para este job e não é compartilhado com outros jobs de importação. Consulte a página "Cotas" no projeto para definir um valor apropriado.

Se não for especificado, será usado o valor padrão de 1.000 QPM.

GoogleDriveSource

resource_ids.resource_id

Obrigatório: string

O o ID do recurso do Google Drive.

resource_ids.resource_type

Obrigatório: string

O tipo do recurso do Google Drive.

SlackSource

channels.channels

Repetido: SlackSource.SlackChannels.SlackChannel

Informações do canal do Slack, incluem ID e intervalo de tempo para importação.

channels.channels.channel_id

Obrigatório: string

O ID do canal do Slack.

channels.channels.start_time

Opcional: google.protobuf.Timestamp

Carimbo de data/hora inicial das mensagens a serem importadas.

channels.channels.end_time

Opcional: google.protobuf.Timestamp

O carimbo de data/hora final das mensagens a serem importadas.

channels.api_key_config.api_key_secret_version

Obrigatório: string

O nome completo do recurso do secret armazenado no Secret Manager, que contém um token de acesso ao canal do Slack com acesso aos IDs dos canais do Slack.
Acesse: https://api.slack.com/tutorials/tracks/getting-a-token.

Formato: projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

JiraSource

jira_queries.projects

Repetido: string

Uma lista de projetos Jira para importar na íntegra.

jira_queries.custom_queries

Repetido: string

Uma lista de consultas personalizadas do Jira para importar. Para mais informações sobre a linguagem de consulta JQL (Jira), consulte o
Suporte do Jira

jira_queries.email

Obrigatório: string

O endereço de e-mail do Jira.

jira_queries.server_uri

Obrigatório: string

O URI do servidor do Jira.

jira_queries.api_key_config.api_key_secret_version

Obrigatório: string

O nome completo do recurso do secret armazenado no Secret Manager, que contém a chave da API Jira com acesso aos IDs dos canais do Slack.
Acesse: https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/

Formato: projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

SharePointSources

share_point_sources.sharepoint_folder_path

oneof em folder_source: string

O caminho da pasta do SharePoint de onde o download será feito.

share_point_sources.sharepoint_folder_id

oneof em folder_source: string

O ID da pasta do SharePoint de onde o download será feito.

share_point_sources.drive_name

oneof em drive_source: string

O nome do drive de origem do download.

share_point_sources.drive_id

oneof em drive_source: string

O ID do drive de origem do download.

share_point_sources.client_id

string

O ID do aplicativo registrado no Portal do Microsoft Azure.
O aplicativo também precisa ser configurado com as permissões "Files.ReadAll", "Sites.ReadAll" e BrowserSiteLists.Read.All do MS Graph.

share_point_sources.client_secret.api_key_secret_version

Obrigatório: string

O nome completo do recurso do secret armazenado no Secret Manager, que contém o secret do aplicativo registrado no Azure.

Formato: projects/{PROJECT_NUMBER}/secrets/{SECRET_ID}/versions/{VERSION_ID}

share_point_sources.tenant_id

string

Identificador exclusivo da instância do Azure Active Directory.

share_point_sources.sharepoint_site_name

string

O nome do site do SharePoint de onde o download será feito. Pode ser o nome ou o ID do site.

RagFileParsingConfig

layout_parser

parser de oneof: RagFileParsingConfig.LayoutParser

O Analisador de layout a ser usado para RagFiles.

layout_parser.processor_name

string

O nome completo do recurso de uma versão do processador ou processador da Document AI.

Formato:
projects/{project_id}/locations/{location}/processors/{processor_id}
projects/{project_id}/locations/{location}/processors/{processor_id}/processorVersions/{processor_version_id}

layout_parser.max_parsing_requests_per_min

string

O número máximo de solicitações que o job pode fazer para o processador da Document AI por minuto.

Consulte https://cloud.google.com/document-ai/quotas e a página de cotas do seu projeto para definir um valor apropriado aqui. Se não for especificado, será usado o valor padrão de 120 QPM.

Acessar um arquivo RAG

Esta tabela lista os parâmetros usados para conseguir um arquivo RAG.

Parâmetros

name

string

RagFile: o nome do recurso. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_file_id}

Excluir um arquivo RAG

Esta tabela lista os parâmetros usados para excluir um arquivo RAG.

Parâmetros

name

string

RagFile: o nome do recurso. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_file_id}

Recuperação e previsão

Nesta seção, listamos os parâmetros de previsão e recuperação.

Parâmetros de recuperação

Esta tabela lista os parâmetros da API retrieveContexts.

Parâmetros

parent

Obrigatório: string

O nome do recurso do local para recuperar RagContexts.
Os usuários precisam ter permissão para fazer uma chamada no projeto.

Formato: projects/{project}/locations/{location}

vertex_rag_store

VertexRagStore

A fonte de dados para o Vertex RagStore.

query

Obrigatório: RagQuery

Consulta de recuperação de RAG única.

VertexRagStore
VertexRagStore

rag_resources

lista: RagResource

A representação da origem RAG. Pode ser usado para especificar apenas o corpus ou RagFiles. Ofereça suporte a apenas um corpus ou vários arquivos de um corpus.

rag_resources.rag_corpus

Opcional: string

Nome do recurso RagCorpora.

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

rag_resources.rag_file_ids

lista: string

Uma lista de recursos RagFile.

Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file}

RagQuery

text

string

A consulta em formato de texto para obter contextos relevantes.

rag_retrieval_config

Opcional: RagRetrievalConfig

A configuração de recuperação para a consulta.

RagRetrievalConfig

top_k

Opcional: int32

O número de contextos a serem recuperados.

filter.vector_distance_threshold

oneof vector_db_threshold: double

Retorna apenas contextos com uma distância vetorial menor que o limite.

filter.vector_similarity_threshold

oneof vector_db_threshold: double

Retorna apenas contextos com semelhança de vetor maior que o limite.

ranking.rank_service.model_name

Opcional: string

O nome do modelo do serviço de classificação.

Exemplo: semantic-ranker-512@latest

ranking.llm_ranker.model_name

Opcional: string

O nome do modelo usado para classificação.

Exemplo: gemini-2.0-flash

Parâmetros de previsão

Esta tabela lista os parâmetros de previsão.

GenerateContentRequest

tools.retrieval.vertex_rag_store

VertexRagStore

Definido para usar uma fonte de dados com tecnologia do repositório RAG da Vertex AI.

Consulte VertexRagStore para mais detalhes.

Exemplos de gerenciamento do corpus

Esta seção fornece exemplos de como usar a API para gerenciar seu corpus RAG.

Criar um exemplo de corpus RAG

Estes exemplos de código demonstram como criar um corpus RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • CORPUS_DISPLAY_NAME: o nome de exibição do corpus RAG.
  • CORPUS_DESCRIPTION: a descrição do corpus RAG.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora

Corpo JSON da solicitação:

{
  "display_name" : "CORPUS_DISPLAY_NAME",
  "description": "CORPUS_DESCRIPTION",
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora"

Powershell

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

  $cred = gcloud auth print-access-token
  $headers = @{ "Authorization" = "Bearer $cred" }

  Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" | Select-Object -Expand Content

Você receberá um código de status de sucesso (2xx).

O exemplo a seguir demonstra como criar um corpus RAG usando a API REST.

  // CreateRagCorpus
  // Input: LOCATION, PROJECT_ID, CORPUS_DISPLAY_NAME
  // Output: CreateRagCorpusOperationMetadata
  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" : "CORPUS_DISPLAY_NAME"
    }'

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# display_name = "test_corpus"
# description = "Corpus Description"

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

# Configure backend_config
backend_config = rag.RagVectorDbConfig(
    rag_embedding_model_config=rag.RagEmbeddingModelConfig(
        vertex_prediction_endpoint=rag.VertexPredictionEndpoint(
            publisher_model="publishers/google/models/text-embedding-005"
        )
    )
)

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

Atualizar um exemplo de corpus RAG

É possível atualizar o corpus RAG com um novo nome de exibição, descrição e configuração do banco de dados de vetor. No entanto, não é possível alterar os seguintes parâmetros no corpus do RAG:

  • O tipo de banco de dados de vetores. Por exemplo, não é possível mudar o banco de dados de vetores de Weaviate para Vertex AI Feature Store.
  • Se você estiver usando a opção de banco de dados gerenciado, não poderá atualizar a configuração do banco de dados vetorial.

Estes exemplos demonstram como atualizar um corpus RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • CORPUS_ID: o ID do corpus RAG.
  • CORPUS_DISPLAY_NAME: o nome de exibição do corpus RAG.
  • CORPUS_DESCRIPTION: a descrição do corpus RAG.
  • INDEX_NAME: o nome do recurso do índice de pesquisa vetorial. Formato: projects/{project}/locations/{location}/indexes/{index}.
  • INDEX_ENDPOINT_NAME: o nome do recurso do endpoint do índice da Pesquisa Vetorial. Formato: projects/{project}/locations/{location}/indexEndpoints/{index_endpoint}.

Método HTTP e URL:

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID

Corpo JSON da solicitação:

{
  "display_name" : "CORPUS_DISPLAY_NAME",
  "description": "CORPUS_DESCRIPTION",
  "rag_vector_db_config": {
    "vertex_vector_search": {
        "index": "INDEX_NAME",
        "index_endpoint": "INDEX_ENDPOINT_NAME",
    }
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID"

Powershell

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/CORPUS_ID" | Select-Object -Expand Content

Você receberá um código de status de sucesso (2xx).

Listar exemplo de corpora RAG

Esses exemplos de código demonstram como listar todos os corpora RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • PAGE_SIZE: o tamanho padrão da página de lista. É possível ajustar o número de corpora RAG a ser retornado por página atualizando o parâmetro page_size.
  • PAGE_TOKEN: o token de página de lista padrão. Extraído normalmente usando ListRagCorporaResponse.next_page_token da chamada VertexRagDataService.ListRagCorpora anterior.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content

Você receberá um código de status bem-sucedido (2xx) e uma lista de corporações RAG no PROJECT_ID especificado.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.


from vertexai import rag
import vertexai

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"

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

corpora = rag.list_corpora()
print(corpora)
# Example response:
# ListRagCorporaPager<rag_corpora {
#   name: "projects/[PROJECT_ID]/locations/us-central1/ragCorpora/2305843009213693952"
#   display_name: "test_corpus"
#   create_time {
# ...

Receber um exemplo de corpus RAG

Estes exemplos de código demonstram como conseguir um corpus RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso do corpus RAG.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content

Uma resposta bem-sucedida retorna o recurso RagCorpus.

Os comandos get e list são usados em um exemplo para demonstrar como RagCorpus usa o campo rag_embedding_model_config no vector_db_config, que aponta para o modelo de embedding que você escolheu.

    PROJECT_ID: Your project ID.
    LOCATION: The region to process the request.
    RAG_CORPUS_ID: The corpus ID of your RAG corpus.
  ```

```sh
  // GetRagCorpus
  // Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID
  // Output: RagCorpus
  curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

  // ListRagCorpora
  curl -sS -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/
  ```

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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")

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

Excluir um exemplo de corpus RAG

Estes exemplos de código demonstram como excluir um corpus RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.

Método HTTP e URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID" | Select-Object -Expand Content

Uma resposta bem-sucedida retornará DeleteOperationMetadata.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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")

rag.delete_corpus(name=corpus_name)
print(f"Corpus {corpus_name} deleted.")
# Example response:
# Successfully deleted the RagCorpus.
# Corpus projects/[PROJECT_ID]/locations/us-central1/ragCorpora/123456789012345 deleted.

Exemplos de gerenciamento de arquivos

Esta seção fornece exemplos de como usar a API para gerenciar arquivos RAG.

Fazer upload de um exemplo de arquivo RAG

Estes exemplos de código demonstram como fazer upload de um arquivo RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do corpus RAG.
  • LOCAL_FILE_PATH: o caminho local do arquivo que será enviado.
  • DISPLAY_NAME: o nome de exibição do arquivo RAG.
  • DESCRIPTION: a descrição do arquivo RAG.

Para enviar a solicitação, use o seguinte comando:

curl -X POST \
-H "X-Goog-Upload-Protocol: multipart" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-F metadata="{'rag_file': {'display_name':' DISPLAY_NAME', 'description':'DESCRIPTION'}}" \
-F file=@LOCAL_FILE_PATH \
"https://LOCATION-aiplatform.googleapis.com/upload/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:upload"

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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}"
# path = "path/to/local/file.txt"
# display_name = "file_display_name"
# description = "file description"

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

rag_file = rag.upload_file(
    corpus_name=corpus_name,
    path=path,
    display_name=display_name,
    description=description,
)
print(rag_file)
# RagFile(name='projects/[PROJECT_ID]/locations/us-central1/ragCorpora/1234567890/ragFiles/09876543',
#  display_name='file_display_name', description='file description')

Exemplo de importação de arquivos RAG

É possível importar arquivos e pastas do Drive ou do Cloud Storage. Use response.metadata para visualizar falhas parciais, o tempo de solicitação e o tempo de resposta no objeto response do SDK.

O response.skipped_rag_files_count se refere ao número de arquivos que foram ignorados durante a importação. Um arquivo é ignorado quando as condições a seguir são atendidas:

  1. O arquivo já foi importado.
  2. O arquivo não foi alterado.
  3. A configuração de divisão em blocos do arquivo não foi alterada.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do corpus RAG.
  • FOLDER_RESOURCE_ID: o ID do recurso da sua pasta do Drive.
  • GCS_URIS: uma lista de locais do Cloud Storage. Exemplo: gs://my-bucket1.
  • CHUNK_SIZE: número de tokens que cada bloco precisa ter.
  • CHUNK_OVERLAP: número de tokens sobrepostos entre blocos.
  • EMBEDDING_MODEL_QPM_RATE: a taxa de QPM para limitar o acesso do RAG ao seu modelo de incorporação. Exemplo: 1.000.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import

Corpo JSON da solicitação:

{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_chunking_config": {
      "chunk_size": "CHUNK_SIZE",
      "chunk_overlap": "CHUNK_OVERLAP"
    }
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import"

Powershell

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles:import" | Select-Object -Expand Content

Uma resposta bem-sucedida retorna o recurso ImportRagFilesOperationMetadata.

O exemplo a seguir demonstra como importar um arquivo do Cloud Storage. Use o campo de controle max_embedding_requests_per_min para limitar a taxa em que o RAG Engine chama o modelo de embedding durante o processo de indexação ImportRagFiles. O campo tem um valor padrão de 1000 chamadas por minuto.

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do corpus RAG.
  • GCS_URIS: uma lista de locais do Cloud Storage. Exemplo: gs://my-bucket1.
  • CHUNK_SIZE: número de tokens que cada bloco precisa ter.
  • CHUNK_OVERLAP: número de tokens sobrepostos entre blocos.
  • EMBEDDING_MODEL_QPM_RATE: a taxa de QPM para limitar o acesso de RAGs ao modelo de incorporação. Exemplo: 1.000.
// ImportRagFiles
// Import a single Cloud Storage file or all files in a Cloud Storage bucket.
// Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID, GCS_URIS
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
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/RAG_CORPUS_ID/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "gcs_source": {
      "uris": "GCS_URIS"
    },
    "rag_file_chunking_config": {
      "chunk_size": CHUNK_SIZE,
      "chunk_overlap": CHUNK_OVERLAP
    },
    "max_embedding_requests_per_min": EMBEDDING_MODEL_QPM_RATE
  }
}'

O exemplo a seguir demonstra como importar um arquivo do Drive. Use o campo de controle max_embedding_requests_per_min para limitar a taxa em que o RAG Engine chama o modelo de embedding durante o processo de indexação ImportRagFiles. O campo tem um valor padrão de 1000 chamadas por minuto.

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do corpus RAG.
  • FOLDER_RESOURCE_ID: o ID do recurso da sua pasta do Drive.
  • CHUNK_SIZE: número de tokens que cada bloco precisa ter.
  • CHUNK_OVERLAP: número de tokens sobrepostos entre blocos.
  • EMBEDDING_MODEL_QPM_RATE: a taxa de QPM para limitar o acesso do RAG ao seu modelo de incorporação. Exemplo: 1.000.
// ImportRagFiles
// Import all files in a Google Drive folder.
// Input: LOCATION, PROJECT_ID, RAG_CORPUS_ID, FOLDER_RESOURCE_ID
// Output: ImportRagFilesOperationMetadataNumber
// Use ListRagFiles to find the server-generated rag_file_id.
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/RAG_CORPUS_ID/ragFiles:import \
-d '{
  "import_rag_files_config": {
    "google_drive_source": {
      "resource_ids": {
        "resource_id": "FOLDER_RESOURCE_ID",
        "resource_type": "RESOURCE_TYPE_FOLDER"
      }
    },
    "max_embedding_requests_per_min": EMBEDDING_MODEL_QPM_RATE
  }
}'

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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}"
# paths = ["https://drive.google.com/file/123", "gs://my_bucket/my_files_dir"]  # Supports Google Cloud Storage and Google Drive Links

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

response = rag.import_files(
    corpus_name=corpus_name,
    paths=paths,
    transformation_config=rag.TransformationConfig(
        rag.ChunkingConfig(chunk_size=512, chunk_overlap=100)
    ),
    import_result_sink="gs://sample-existing-folder/sample_import_result_unique.ndjson",  # Optional, this has to be an existing storage bucket folder, and file name has to be unique (non-existent).
    max_embedding_requests_per_min=900,  # Optional
)
print(f"Imported {response.imported_rag_files_count} files.")
# Example response:
# Imported 2 files.

Exemplo de lista de arquivos RAG

Esses exemplos de código demonstram como listar arquivos RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • PAGE_SIZE: o tamanho padrão da página de lista. É possível ajustar o número de RagFiles a serem retornados por página atualizando o parâmetro page_size.
  • PAGE_TOKEN: o token de página de lista padrão. Extraído usando ListRagFilesResponse.next_page_token da chamada VertexRagDataService.ListRagFiles anterior.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles?page_size=PAGE_SIZE&page_token=PAGE_TOKEN" | Select-Object -Expand Content

Você vai receber um código de status bem-sucedido (2xx) com uma lista de RagFiles no RAG_CORPUS_ID fornecido.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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")

files = rag.list_files(corpus_name=corpus_name)
for file in files:
    print(file.display_name)
    print(file.name)
# Example response:
# g-drive_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/222222222222
# g_cloud_file.txt
# projects/1234567890/locations/us-central1/ragCorpora/111111111111/ragFiles/333333333333

Acessar um exemplo de arquivo RAG

Esses exemplos de código demonstram como conseguir um arquivo RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • RAG_FILE_ID: o ID do recurso RagFile.

Método HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content

Uma resposta bem-sucedida retorna o recurso RagFile.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.


from vertexai import rag
import vertexai

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

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

rag_file = rag.get_file(name=file_name)
print(rag_file)
# Example response:
# RagFile(name='projects/1234567890/locations/us-central1/ragCorpora/11111111111/ragFiles/22222222222',
# display_name='file_display_name', description='file description')

Excluir um exemplo de arquivo RAG

Esses exemplos de código demonstram como excluir um arquivo RAG.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID>: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_ID: o ID do recurso RagCorpus.
  • RAG_FILE_ID: o ID do recurso RagFile. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}/ragFiles/{rag_file_id}.

Método HTTP e URL:

DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID

Para enviar a solicitação, escolha uma destas opções:

curl

Execute este comando:

curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID"

Powershell

Execute este comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method DELETE `
    -Headers $headers `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_ID/ragFiles/RAG_FILE_ID" | Select-Object -Expand Content

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para Python.


from vertexai import rag
import vertexai

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

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

rag.delete_file(name=file_name)
print(f"File {file_name} deleted.")
# Example response:
# Successfully deleted the RagFile.
# File projects/1234567890/locations/us-central1/ragCorpora/1111111111/ragFiles/2222222222 deleted.

Consultar recuperação

Quando um usuário faz uma pergunta ou fornece uma solicitação, o componente de recuperação na RAG pesquisa na base de conhecimento para encontrar informações relevantes para a consulta.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • RAG_CORPUS_RESOURCE: o nome do recurso RagCorpus. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • VECTOR_DISTANCE_THRESHOLD: somente os contextos com uma distância vetorial menor que o limite são retornados.
  • TEXT: o texto da consulta para receber contextos relevantes.
  • SIMILARITY_TOP_K: o número de contextos principais a serem recuperados.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts

Solicitar corpo JSON:

{
"vertex_rag_store": {
    "rag_resources": {
      "rag_corpus": "RAG_CORPUS_RESOURCE"
    },
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
  },
  "query": {
  "text": TEXT
  "similarity_top_k": SIMILARITY_TOP_K
  }
}

curl

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts"

Powershell

Salve o corpo da solicitação em um arquivo chamado request.json e execute o seguinte comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" | Select-Object -Expand Content

Você vai receber um código de status bem-sucedido (2xx) e uma lista de RagFiles relacionados.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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: "....
#   ....

Geração

O LLM gera uma resposta embasada usando os contextos recuperados.

REST

Antes de usar os dados da solicitação, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região para processar a solicitação.
  • MODEL_ID: modelo LLM para geração de conteúdo. Exemplo: gemini-2.0-flash-001.
  • GENERATION_METHOD: método LLM para geração de conteúdo. Opções: generateContent, streamGenerateContent.
  • INPUT_PROMPT: o texto enviado ao LLM para geração de conteúdo. Tente usar um comando relevante para os arquivos de Rag enviados.
  • RAG_CORPUS_RESOURCE: o nome do recurso RagCorpus. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K (opcional): o número de contextos principais a serem recuperados.
  • VECTOR_DISTANCE_THRESHOLD (opcional): os contextos com uma distância vetorial menor que o limite são retornados.
  • USER: seu nome de usuário.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD

Corpo JSON da solicitação:

{
"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",
    "vector_distance_threshold": VECTOR_DISTANCE_THRESHOLD
  }
  }
}
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json e execute o comando a seguir:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD"

Powershell

Salve o corpo da solicitação em um arquivo chamado request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" | Select-Object -Expand Content

Uma resposta bem-sucedida retornará o conteúdo gerado com citações.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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