Nesta página, mostramos como configurar a Vertex AI Feature Store como o banco de dados de vetores a ser usado com o mecanismo RAG.
Você também pode acompanhar usando o notebook Mecanismo RAG com Feature Store da Vertex AI.
Ao integrar o Feature Store da Vertex AI como um banco de dados de vetor adicional, o mecanismo RAG pode usar o Feature Store da Vertex AI para processar grandes volumes de dados com baixa latência, o que ajuda a melhorar o desempenho e a escalonabilidade dos aplicativos RAG.
Configurar um Vertex AI Feature Store
O Feature Store da Vertex AI, um serviço gerenciado nativo da nuvem, é um componente essencial da Vertex AI. Ele simplifica o gerenciamento de atributos de machine learning (ML) e a exibição on-line ao permitir que você gerencie dados de atributos em uma tabela ou visualização do BigQuery. Isso permite a veiculação de recursos on-line de baixa latência.
Para instâncias do FeatureOnlineStore
criadas com exibição on-line otimizada, é possível usar 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 Feature Store da Vertex AI para seu aplicativo RAG.
Criar um esquema de tabela do BigQuery
Use o console Google Cloud 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 mostra 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 do FeatureOnlineStore
Para ativar a veiculação on-line de atributos, use a API CreateFeatureOnlineStore
do Feature Store da Vertex AI
para configurar uma instância FeatureOnlineStore
. Se você estiver provisionando um 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
método
featureOnlineStores.create
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- 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 documentação de referência da API Python.
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 origem de dados de recursos, à instância FeatureOnlineStore
, chame a API CreateFeatureView
para criar um recurso FeatureView
. Ao criar um recurso FeatureView
, escolha a métrica de distância padrão DOT_PRODUCT_DISTANCE
, que é definida como o negativo do produto escalar (quanto menor for DOT_PRODUCT_DISTANCE
, maior será a 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 documentação de referência da API Python.
Upload de dados e exibição on-line
A API RAG processa o upload de dados e a exibição on-line.
Usar o Vertex AI Feature Store no mecanismo de RAG
Depois que a instância do Feature Store da Vertex AI for configurada, as seções a seguir vão mostrar como configurá-la como o banco de dados de vetores a ser usado com o aplicativo RAG.
Usar a instância do Feature Store da Vertex AI como o banco de dados de vetores para criar um corpus de RAG
Para criar o corpus de RAG, use FEATURE_VIEW_RESOURCE_NAME
. O
corpus de RAG é criado e associado automaticamente à
instância do Feature Store da Vertex AI. As APIs RAG usam o rag_corpus_id
gerado para processar o upload de dados para a instância da Vertex AI Feature Store e recuperar contextos relevantes do rag_corpus_id
.
Este exemplo de código demonstra como usar a instância do Feature Store da Vertex AI como o banco de dados vetorial para criar um corpus 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 documentação de referência da API Python.
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 documentação de referência da API Python.
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 exibição on-line. É necessário
gerar um índice FeatureOnlineStore
usando FeatureView
. 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 construir um índice FeatureOnlineStore
.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- 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 seguinte comando:
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 seguinte comando:
$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, você poderá recuperar contextos relevantes do índice FeatureOnlineStore
usando a 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 documentação de referência da API Python.
Gerar conteúdo usando a API Gemini da Vertex AI
Chame a API GenerateContent
da Vertex AI para usar modelos do Gemini
e gerar conteúdo. 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.0-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 documentação de referência da API Python.