En esta página se explica cómo configurar Vertex AI Feature Store como base de datos de vectores para usarla con RAG Engine.
También puedes seguir los pasos con el cuaderno Motor de RAG con Vertex AI Feature Store.
Al integrar Vertex AI Feature Store como una base de datos de vectores adicional, RAG Engine puede usar Vertex AI Feature Store para gestionar grandes volúmenes de datos con baja latencia, lo que ayuda a mejorar el rendimiento y la escalabilidad de tus aplicaciones RAG.
Configurar Vertex AI Feature Store
Vertex AI Feature Store, un servicio nativo de la nube gestionado, es un componente esencial de Vertex AI. Simplifica la gestión de funciones de aprendizaje automático y el servicio online, ya que te permite gestionar los datos de las funciones en una tabla o vista de BigQuery. Esto permite ofrecer funciones online con baja latencia.
En las instancias de FeatureOnlineStore
creadas con el servicio online optimizado, puedes aprovechar la búsqueda de similitud de vectores para obtener una lista de entidades semánticamente similares o relacionadas, que se conocen como vecinos más cercanos aproximados.
En las siguientes secciones se explica cómo configurar una instancia de Vertex AI Feature Store para tu aplicación de RAG.
Crear un esquema de tabla de BigQuery
Usa la Google Cloud consola para crear un esquema de tabla de BigQuery. Debe contener los siguientes campos para que sirva como fuente de datos.
Nombre del campo | Tipo de datos | Estado |
---|---|---|
corpus_id |
String |
Obligatorio |
file_id |
String |
Obligatorio |
chunk_id |
String |
Obligatorio |
chunk_data_type |
String |
Admite valores nulos |
chunk_data |
String |
Admite valores nulos |
file_original_uri |
String |
Admite valores nulos |
embeddings |
Float |
Repeated |
En este código de ejemplo se muestra cómo definir el esquema de una tabla de 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
);
Aprovisionar una instancia de FeatureOnlineStore
Para habilitar el servicio online de características, use la API de Vertex AI Feature Store
CreateFeatureOnlineStore
para configurar una instancia de FeatureOnlineStore
. Si vas a aprovisionar un FeatureOnlineStore
por primera vez, la operación puede tardar unos cinco minutos en completarse.
REST
Para crear una instancia de tienda online, envía una solicitud POST
mediante el método featureOnlineStores.create
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que quieres crear la instancia de
FeatureOnlineStore
, comous-central1
. - PROJECT_ID: tu ID de proyecto.
- FEATUREONLINESTORE_NAME: el nombre de la nueva instancia de
FeatureOnlineStore
.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
Cuerpo JSON de la solicitud:
{ "optimized": {} }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
project
: tu ID de proyecto.location
: región en la que quieres crear la instancia deFeatureOnlineStore
, comous-central1
.feature_online_store_id
: el nombre de la nueva instancia deFeatureOnlineStore
.
Crear un recurso FeatureView
Para conectar la tabla de BigQuery, que almacena la fuente de datos de características, a la instancia de FeatureOnlineStore
, llama a la API CreateFeatureView
para crear un recurso FeatureView
. Cuando crees un recurso FeatureView
, elige la métrica de distancia predeterminada DOT_PRODUCT_DISTANCE
, que se define como el negativo del producto escalar (un valor de DOT_PRODUCT_DISTANCE
más pequeño indica una mayor similitud).
En este ejemplo de código se muestra cómo crear un 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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Subir datos y servir contenido online
La API RAG gestiona la subida de datos y el servicio online.
Usar Vertex AI Feature Store en RAG Engine
Una vez que se haya configurado la instancia de Feature Store de Vertex AI, en las siguientes secciones se muestra cómo configurarla como base de datos de vectores para usarla con la aplicación RAG.
Usar la instancia de Vertex AI Feature Store como base de datos de vectores para crear un corpus RAG
Para crear el corpus de RAG, debes usar FEATURE_VIEW_RESOURCE_NAME
. El corpus de RAG se crea y se asocia automáticamente a la instancia de Vertex AI Feature Store. Las APIs de RAG usan el rag_corpus_id
generado para gestionar la subida de datos a la instancia de Vertex AI Feature Store y para extraer contextos relevantes del rag_corpus_id
.
En este código de ejemplo se muestra cómo usar la instancia de Vertex AI Feature Store como base de datos de vectores para crear un 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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Importar archivos en la tabla de BigQuery mediante la API RAG
Usa la ImportRagFiles
API para importar archivos de Google Cloud Storage o Google Drive a la tabla de BigQuery de la instancia de Vertex AI Feature Store. Los archivos se insertan y se almacenan en la tabla de BigQuery.
En este ejemplo de código se muestra cómo importar archivos a la tabla de BigQuery mediante la 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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Ejecutar un proceso de sincronización para crear un índice FeatureOnlineStore
Después de subir los datos a la tabla de BigQuery, ejecuta un proceso de sincronización para que estén disponibles para el servicio online. Debes generar un índice FeatureOnlineStore
con FeatureView
y el proceso de sincronización puede tardar 20 minutos en completarse.
Este código de ejemplo muestra cómo ejecutar un proceso de sincronización para crear un índice FeatureOnlineStore
.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION_ID: región en la que se encuentra la tienda online, como
us-central1
. - PROJECT_ID: tu ID de proyecto.
- FEATUREONLINESTORE_NAME: nombre de la tienda online que contiene la vista de la función.
- FEATUREVIEW_NAME: nombre de la vista de características en la que quieras iniciar manualmente la sincronización de datos.
Método HTTP y URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID" }
Obtener contextos relevantes con la API RAG
Una vez que se haya completado el proceso de sincronización, podrá recuperar los contextos relevantes del índice FeatureOnlineStore
a través de la 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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Generar contenido con la API de Gemini de Vertex AI
Llama a la API de GenerateContent
Vertex AI para usar modelos de Gemini
y generar contenido, y especifica RAG_CORPUS_RESOURCE
en la solicitud para recuperar
datos del í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 cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.