En esta página, se muestra cómo configurar Vertex AI Feature Store como la base de datos de vectores que se usará con RAG Engine.
También puedes seguir este notebook RAG Engine con Vertex AI Feature Store.
RAG Engine usa una base de datos de vectores integrada con Spanner para almacenar y administrar representaciones vectoriales de documentos de texto. La base de datos de vectores recupera documentos relevantes en función de su similitud semántica con una consulta determinada.
Cuando se integra Vertex AI Feature Store como una base de datos de vectores adicional, RAG Engine puede usar Vertex AI Feature Store para controlar grandes volúmenes de datos con baja latencia, lo que ayuda a mejorar el rendimiento y la escalabilidad de tus aplicaciones de RAG.
Configura un Vertex AI Feature Store
Vertex AI Feature Store, un servicio administrado nativo de la nube, es un componente esencial de Vertex AI. Simplifica la administración de atributos de aprendizaje automático (AA) y la entrega en línea, ya que te permite administrar datos de atributos dentro de una tabla o vista de BigQuery. Esto permite la entrega de atributos en línea con latencia baja.
En el caso de las instancias de FeatureOnlineStore
creadas con la publicación en línea optimizada, puedes aprovechar una búsqueda de similitud de vectores para recuperar una lista de entidades semánticamente similares o relacionadas, que se conocen como vecinos más cercanos aproximados.
En las siguientes secciones, se muestra cómo configurar una instancia de Vertex AI Feature Store para tu aplicación de RAG.
Crea un esquema de tabla de BigQuery
Usa la consola de Google Cloud para crear un esquema de tabla de BigQuery. Debe contener los siguientes campos para que funcione 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 |
Anulable |
chunk_data |
String |
Anulable |
file_original_uri |
String |
Anulable |
embeddings |
Float |
Repetido |
En esta ejemplo de código, se muestra cómo definir el esquema de tu 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
);
Aprovisiona una instancia de FeatureOnlineStore
Para habilitar la entrega en línea de atributos, usa la API de CreateFeatureOnlineStore
de Vertex AI Feature Store para configurar una instancia de FeatureOnlineStore
. Si aprovisionas un FeatureOnlineStore
por primera vez, la operación puede tardar aproximadamente cinco minutos en completarse.
REST
Para crear una instancia de tienda en línea, envía una solicitud POST
con el método featureOnlineStores.create
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: Es la región en la que deseas crear la instancia
FeatureOnlineStore
, comous-central1
. - PROJECT_ID: ID del proyecto
- FEATUREONLINESTORE_NAME: es el nombre de la instancia
FeatureOnlineStore
nueva.
HTTP method and 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 que se muestra a continuación:
{ "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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
project
: ID del proyectolocation
: Es la región en la que deseas crear la instanciaFeatureOnlineStore
, comous-central1
.feature_online_store_id
: es el nombre de la instanciaFeatureOnlineStore
nueva.
Crea un recurso FeatureView
Para conectar la tabla de BigQuery, que almacena la fuente de datos de componentes, a la instancia de FeatureOnlineStore
, llama a la API de CreateFeatureView
para crear un recurso FeatureView
. Cuando creas un recurso FeatureView
, elige la métrica de distancia predeterminada DOT_PRODUCT_DISTANCE
, que se define como el negativo del producto punto (un DOT_PRODUCT_DISTANCE
más pequeño indica una mayor similitud).
En esta muestra 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Carga de datos y publicación en línea
La API de RAG controla la carga de datos y la entrega en línea.
Usa Vertex AI Feature Store en RAG Engine
Después de configurar la instancia de Vertex AI Feature Store, en las siguientes secciones, se muestra cómo configurarla como la base de datos de vectores para usar con la aplicación de RAG.
Usa la instancia de Vertex AI Feature Store como la base de datos de vectores para crear un corpus de RAG
Para crear el corpus de RAG, debes usar FEATURE_VIEW_RESOURCE_NAME
. El corpus de RAG se crea y se asocia automáticamente con la instancia de Vertex AI Feature Store. Las APIs de RAG usan el rag_corpus_id
generado para controlar la carga de datos a la instancia de Vertex AI Feature Store y para recuperar contextos relevantes del rag_corpus_id
.
En esta muestra de código, se muestra cómo usar la instancia de Vertex AI Feature Store como la 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Importa archivos a la tabla de BigQuery con la API de RAG
Usa la API de ImportRagFiles
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 incorporan y almacenan en la tabla de BigQuery.
En este ejemplo de código, se muestra cómo importar archivos a la tabla de BigQuery con la API de 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Ejecuta un proceso de sincronización para crear un índice FeatureOnlineStore
Después de subir tus datos a la tabla de BigQuery, ejecuta un proceso de sincronización para que tus datos estén disponibles para la entrega en línea. Debes generar un índice FeatureOnlineStore
con FeatureView
, y el proceso de sincronización puede tardar 20 minutos en completarse.
En esta muestra de código, se muestra cómo ejecutar un proceso de sincronización para construir un índice FeatureOnlineStore
.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION_ID: región en donde se encuentra la tienda en línea, como
us-central1
. - PROJECT_ID: ID del proyecto
- FEATUREONLINESTORE_NAME: Es el nombre de la tienda en línea que contiene la vista de atributos.
- FEATUREVIEW_NAME: Es el nombre de la vista de atributos en la que quieres 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 siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID" }
Cómo recuperar contextos relevantes con la API de RAG
Una vez que se complete el proceso de sincronización, podrás recuperar contextos relevantes del índice FeatureOnlineStore
a través de la API de 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Genera contenido con la API de Gemini de Vertex AI
Llama a la API de GenerateContent
de Vertex AI para usar modelos de Gemini
para 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-1.5-flash-001
# 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
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
¿Qué sigue?
- Para obtener más información sobre la fundamentación, consulta Descripción general de la fundamentación.
- Para obtener más información sobre RAG Engine, consulta Cómo usar RAG Engine.
- Para obtener más información sobre la fundamentación y la RAG, consulta Cómo fundamentar respuestas con RAG.