Esta página mostra como configurar o Vertex AI Feature Store como a base de dados vetorial a usar com o motor RAG.
Também pode seguir o notebook RAG Engine with Vertex AI Feature Store.
Ao integrar o Vertex AI Feature Store como uma base de dados vetorial adicional, o motor 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 das suas aplicações RAG.
Configure um Vertex AI Feature Store
O Vertex AI Feature Store, um serviço nativo da nuvem gerido, é um componente essencial do Vertex AI. Simplifica a gestão de funcionalidades de aprendizagem automática (AA) e a publicação online, permitindo-lhe gerir dados de funcionalidades numa tabela ou vista do BigQuery. Isto permite o serviço de funcionalidades online de baixa latência.
Para instâncias FeatureOnlineStore
criadas com o serviço online otimizado, pode tirar partido de uma pesquisa de semelhança vetorial para obter uma lista de entidades semanticamente semelhantes ou relacionadas, que são conhecidas como vizinhos mais próximos aproximados.
As secções seguintes mostram como configurar uma instância do Vertex AI Feature Store para a sua aplicação RAG.
Crie um esquema de tabela do BigQuery
Use a Google Cloud consola para criar um esquema de tabela do BigQuery. Tem de conter os seguintes campos para servir como origem de dados.
Nome do campo | Tipo de dados | Estado |
---|---|---|
corpus_id |
String |
Obrigatória |
file_id |
String |
Obrigatória |
chunk_id |
String |
Obrigatória |
chunk_data_type |
String |
Permitido valor nulo |
chunk_data |
String |
Permitido valor nulo |
file_original_uri |
String |
Permitido valor nulo |
embeddings |
Float |
Repetido |
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
);
Aprovisione uma instância do FeatureOnlineStore
Para ativar a publicação online de funcionalidades, use a API Vertex AI Feature Store
CreateFeatureOnlineStore
para configurar uma instância FeatureOnlineStore
. Se estiver a aprovisionar um FeatureOnlineStore
pela primeira vez, a operação pode demorar aproximadamente cinco minutos a ser concluída.
REST
Para criar uma instância de loja online, envie um pedido POST
através do método featureOnlineStores.create
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde quer criar a instância do
FeatureOnlineStore
, comous-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREONLINESTORE_NAME: o nome da nova instância do
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 do pedido:
{ "optimized": {} }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME"
PowerShell
Guarde o corpo do pedido num ficheiro com o nome 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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME" | Select-Object -Expand Content
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 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.
project
: o ID do seu projeto.location
: região onde quer criar a instância doFeatureOnlineStore
, comous-central1
.feature_online_store_id
: o nome da nova instância doFeatureOnlineStore
.
Crie um recurso FeatureView
Para associar a tabela do BigQuery, que armazena a origem de dados de recursos, à instância do FeatureOnlineStore
, chame a API CreateFeatureView
para criar um recurso FeatureView
. Quando cria um recurso FeatureView
, escolha a métrica de distância predefinida DOT_PRODUCT_DISTANCE
, que é definida como o negativo do produto escalar (um valor DOT_PRODUCT_DISTANCE
mais pequeno indica uma semelhança maior).
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 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.
Carregue dados e publique online
A API RAG processa o carregamento de dados e a publicação online.
Use o Vertex AI Feature Store no motor RAG
Depois de configurar a instância do Vertex AI Feature Store, as secções seguintes mostram-lhe como configurá-la como a base de dados vetorial a usar com a aplicação RAG.
Use a instância do Vertex AI Feature Store como a base de dados vetorial para criar um corpus RAG
Para criar o corpus de RAG, tem de 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 carregamento de dados para a instância do Vertex AI Feature Store e para obter contextos relevantes do rag_corpus_id
.
Este exemplo de código demonstra como usar a instância do Vertex AI Feature Store como a base 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 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.
Importe ficheiros para a tabela do BigQuery através da API RAG
Use a ImportRagFiles
API para importar ficheiros do Google Cloud Storage ou do
Google Drive para a tabela do BigQuery da instância
do Vertex AI Feature Store. Os ficheiros estão incorporados e armazenados na tabela do BigQuery.
Este exemplo de código demonstra como importar ficheiros 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 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.
Executar um processo de sincronização para criar um índice FeatureOnlineStore
Depois de carregar os dados para a tabela do BigQuery, execute um processo de sincronização para disponibilizar os dados para publicação online. Tem de gerar um índice FeatureOnlineStore
através do FeatureView
, e o processo de sincronização pode demorar 20 minutos a 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 do pedido, faça as seguintes substituições:
- LOCATION_ID: região onde a loja online está localizada, como
us-central1
. - PROJECT_ID: o ID do seu projeto.
- FEATUREONLINESTORE_NAME: o nome da loja online que contém a vista de funcionalidades.
- FEATUREVIEW_NAME: o nome da vista de funcionalidades onde 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 o seu pedido, 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
Deve receber uma resposta JSON semelhante à seguinte:
{ "featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID" }
Obtenha contextos relevantes através da API RAG
Após a conclusão do processo de sincronização, pode obter contextos relevantes do índice FeatureOnlineStore
através da 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 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.
Gere conteúdo com a API Gemini do Vertex AI
Chame a API GenerateContent
do Vertex AI para usar os modelos Gemini
para gerar conteúdo e especifique RAG_CORPUS_RESOURCE
no pedido para obter
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 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.