Nesta página, mostramos como configurar o Vertex AI Feature Store como o banco de dados vetorial a ser usado com o mecanismo de RAG.
Você também pode acompanhar usando o Mecanismo de RAG com o Vertex AI Feature Store notebook.
Ao integrar o Vertex AI Feature Store como um banco de dados vetorial adicional, o mecanismo de RAG pode usar o Vertex AI Feature Store para processar grandes volumes de dados com baixa latência, o que ajuda a melhorar o desempenho e a escalabilidade dos aplicativos de RAG.
Configurar um Vertex AI Feature Store
O Vertex AI Feature Store, um serviço gerenciado nativo da nuvem, é um componente essencial da Gemini Enterprise Agent Platform. Ele simplifica o gerenciamento de atributos de machine learning (ML) e a veiculação on-line, permitindo que você gerencie dados de atributos em uma tabela do BigQuery ou visualização. Isso permite a disponibilização de recursos on-line de baixa latência.
Para instâncias de FeatureOnlineStore criadas com a veiculação on-line otimizada, é possível aproveitar uma pesquisa de similaridade vetorial para recuperar uma lista de entidades semanticamente parecidas ou relacionadas, conhecidas como vizinhos mais próximos aproximados.
As seções a seguir mostram como configurar uma instância do Vertex AI Feature Store para o aplicativo de RAG.
Criar um esquema de tabela do BigQuery
Use o Google Cloud console para criar um esquema de tabela do BigQuery. Ele precisa conter os seguintes campos para servir como fonte de dados.
| Nome do campo | Tipo de dado | Status |
|---|---|---|
corpus_id |
String |
Obrigatório |
file_id |
String |
Obrigatório |
chunk_id |
String |
Obrigatório |
chunk_data_type |
String |
Anulável |
chunk_data |
String |
Anulável |
file_original_uri |
String |
Anulável |
embeddings |
Float |
Repetida |
Este exemplo de código demonstra como definir o esquema da tabela do BigQuery.
SQL
CREATE TABLE `PROJECT_ID.input_us_central1.rag_source_new` (
`corpus_id` STRING NOT NULL,
`file_id` STRING NOT NULL,
`chunk_id` STRING NOT NULL,
`chunk_data_type` STRING,
`chunk_data` STRING,
`embeddings` ARRAY<FLOAT64>,
`file_original_uri` STRING
);
Provisionar uma instância de FeatureOnlineStore
Para ativar a veiculação on-line de atributos, use a API
CreateFeatureOnlineStore do Vertex AI Feature Store para configurar uma instância de FeatureOnlineStore. Se você estiver provisionando uma FeatureOnlineStore pela primeira vez, a operação poderá levar aproximadamente cinco minutos para ser concluída.
REST
Para criar uma instância de loja on-line, envie uma solicitação POST usando o
featureOnlineStores.create
método.
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- LOCATION_ID: região onde você quer criar a instância de
FeatureOnlineStore, comous-central1. - PROJECT_ID: o ID do projeto.
- FEATUREONLINESTORE_NAME: o nome da nova instância
FeatureOnlineStore.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
Corpo JSON da solicitação:
{
"optimized": {}
}
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateFeatureOnlineStoreOperationMetadata",
"genericMetadata": {
"createTime": "2023-09-18T17:49:23.847496Z",
"updateTime": "2023-09-18T17:49:23.847496Z"
}
}
}
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 Python documentação de referência da API.
project: o ID do projeto.location: região onde você quer criar a instância deFeatureOnlineStore, comous-central1.feature_online_store_id: o nome da nova instânciaFeatureOnlineStore.
Criar um recurso FeatureView
Para conectar a tabela do BigQuery, que armazena a fonte de dados de atributos, a
instância FeatureOnlineStore, chame a API CreateFeatureView para criar um
FeatureView recurso. Ao criar um recurso FeatureView, escolha a métrica de distância padrão DOT_PRODUCT_DISTANCE, definida como o negativo do produto escalar (um DOT_PRODUCT_DISTANCE menor indica maior similaridade).
Este exemplo de código demonstra como criar um recurso FeatureView.
REST
# TODO(developer): Update and uncomment the following lines:
# Set feature_view_id
# Example: "feature_view_test"
# FEATURE_VIEW_ID = "your-feature-view-id"
#
# The big_query_uri generated in the above BigQuery table schema creation step
# The format should be "bq://" + BigQuery table ID
# Example: "bq://tester.ragtest1.rag_testdata"
# BIG_QUERY_URI=YOUR_BIG_QUERY_URI
# Call CreateFeatureView API to create a FeatureView
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews?feature_view_id=${FEATURE_VIEW_ID} \
-d '{
"vertex_rag_source": {
"uri": '\""${BIG_QUERY_URI}"\"'
}
}'
# Call ListFeatureViews API to verify the FeatureView is created successfully
curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews
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 Python documentação de referência da API.
Fazer upload de dados e veiculação on-line
A API RAG processa o upload de dados e a veiculação on-line. Para saber mais sobre a API do mecanismo de RAG na Gemini Enterprise Agent Platform, consulte o seguinte:
Usar o Vertex AI Feature Store no mecanismo de RAG
Depois que a instância do Vertex AI Feature Store for configurada, as seções a seguir mostrarão como configurá-la como o banco de dados vetorial a ser usado com o aplicativo de RAG.
Usar a instância do Vertex AI Feature Store como o banco de dados vetorial para criar um corpus de RAG
Para criar o corpus de RAG, é necessário usar FEATURE_VIEW_RESOURCE_NAME. O corpus de RAG é criado e associado automaticamente à instância do Vertex AI Feature Store. As APIs RAG usam o rag_corpus_id gerado para processar o upload de dados para a instância do Vertex AI Feature Store e para recuperar contextos relevantes do rag_corpus_id.
Este exemplo de código demonstra como usar a instância do Vertex AI Feature Store como o banco de dados vetorial para criar um corpus de RAG.
REST
# TODO(developer): Update and uncomment the following lines:
# CORPUS_DISPLAY_NAME = "your-corpus-display-name"
#
# Full feature view resource name
# Format: projects/${PROJECT_ID}/locations/us-central1/featureOnlineStores/${FEATURE_ONLINE_STORE_ID}/featureViews/${FEATURE_VIEW_ID}
# FEATURE_VIEW_RESOURCE_NAME = "your-feature-view-resource-name"
# Call CreateRagCorpus API to create a new RAG corpus
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/{PROJECT_ID}/locations/us-central1/ragCorpora -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_feature_store": {
"feature_view_resource_name":'\""${FEATURE_VIEW_RESOURCE_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RAG corpus is created successfully
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora"
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 Python documentação de referência da API.
Importar arquivos para a tabela do BigQuery usando a API RAG
Use a API ImportRagFiles para importar arquivos do Google Cloud Storage ou
do Google Drive para a tabela do BigQuery da instância do Vertex AI Feature Store. Os arquivos são incorporados e armazenados na tabela do BigQuery.
Este exemplo de código demonstra como importar arquivos para a tabela do BigQuery usando a API RAG.
REST
# TODO(developer): Update and uncomment the following lines:
# RAG_CORPUS_ID = "your-rag-corpus-id"
#
# Google Cloud Storage bucket/file location.
# For example, "gs://rag-fos-test/"
# GCS_URIS= "your-gcs-uris"
# Call ImportRagFiles API to embed files and store in the BigQuery table
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles:import \
-d '{
"import_rag_files_config": {
"gcs_source": {
"uris": '\""${GCS_URIS}"\"'
},
"rag_file_chunking_config": {
"chunk_size": 512
}
}
}'
# Call ListRagFiles API to verify the files are imported successfully
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}/ragFiles
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 Python documentação de referência da API.
Executar um processo de sincronização para criar um índice FeatureOnlineStore
Depois de fazer upload dos dados para a tabela do BigQuery, execute um processo de sincronização para disponibilizar os dados para veiculação on-line. É necessário gerar um índice FeatureOnlineStore usando a FeatureView, e o processo de sincronização pode levar 20 minutos para ser concluído.
Este exemplo de código demonstra como executar um processo de sincronização para criar um índice FeatureOnlineStore.
REST
Antes de usar qualquer um dos dados da solicitação, faça as seguintes substituições:
- LOCATION_ID: região em que a loja on-line está localizada, como
us-central1. - PROJECT_ID: o ID do projeto.
- FEATUREONLINESTORE_NAME: o nome da loja on-line que contém a visualização do recurso.
- FEATUREVIEW_NAME: o nome da vista do elemento em que você quer iniciar manualmente a sincronização de dados.
Método HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Para enviar a solicitação, escolha uma destas opções:
curl
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 "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync"
PowerShell
Execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a esta:
{
"featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID"
}
Recuperar contextos relevantes usando a API RAG
Depois que o processo de sincronização for concluído, será possível recuperar contextos relevantes do índice FeatureOnlineStore pela API RetrieveContexts.
REST
# TODO(developer): Update and uncomment the following lines:
# RETRIEVAL_QUERY="your-retrieval-query"
#
# Full RAG corpus resource name
# Format:
# "projects/${PROJECT_ID}/locations/us-central1/ragCorpora/${RAG_CORPUS_ID}"
# RAG_CORPUS_RESOURCE="your-rag-corpus-resource"
# Call RetrieveContexts API to retrieve relevant contexts
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1:retrieveContexts \
-d '{
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
},
"query": {
"text": '\""${RETRIEVAL_QUERY}"\"',
"similarity_top_k": 10
}
}'
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 Python documentação de referência da API.
Gerar conteúdo usando a API Gemini da Agent Platform
Chame a API GenerateContent da Agent Platform para usar modelos do Gemini para gerar conteúdo e especifique RAG_CORPUS_RESOURCE na solicitação para recuperar dados do índice FeatureOnlineStore.
REST
# TODO(developer): Update and uncomment the following lines:
# MODEL_ID=gemini-2.5-flash
# GENERATE_CONTENT_PROMPT="your-generate-content-prompt"
# GenerateContent with contexts retrieved from the FeatureStoreOnline index
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": {
"role": "user",
"parts": {
"text": '\""${GENERATE_CONTENT_PROMPT}"\"'
}
},
"tools": {
"retrieval": {
"vertex_rag_store": {
"rag_resources": {
"rag_corpus": '\""${RAG_CORPUS_RESOURCE}"\"',
},
"similarity_top_k": 8,
}
}
}
}'
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 Python documentação de referência da API.