En esta página se explica cómo conectar tu motor RAG de Vertex AI a Vertex AI Vector Search.
También puedes seguir los pasos con el cuaderno Vertex AI RAG Engine con Vertex AI Vector Search.
Configuración de Vertex AI Vector Search
Vertex AI Vector Search se basa en la tecnología de búsqueda de vectores desarrollada por Google Research. La búsqueda de vectores te permite utilizar la misma infraestructura que sirve de base para los productos de Google, como la Búsqueda de Google, YouTube y Google Play.
Para integrarse con Vertex AI RAG Engine, se necesita un índice de Vector Search vacío.
Configurar el SDK de Vertex AI
Para configurar el SDK de Vertex AI, consulta la sección Configuración.
Crear un índice de búsqueda vectorial
Para crear un índice de búsqueda vectorial que sea compatible con tu corpus de RAG, el índice debe cumplir los siguientes criterios:
IndexUpdateMethod
debe serSTREAM_UPDATE
. Consulta Crear índice de flujo.El tipo de medida de distancia debe definirse explícitamente como uno de los siguientes:
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
La dimensión del vector debe ser coherente con el modelo de incrustación que quieras usar en el corpus de RAG. Otros parámetros se pueden ajustar en función de tus elecciones, que determinan si se pueden ajustar los parámetros adicionales.
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.
Crear un endpoint de índice de búsqueda vectorial
Los endpoints públicos son compatibles con el motor de RAG de Vertex AI.
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.
Desplegar un índice en un endpoint de índice
Antes de realizar la búsqueda de vecinos más cercanos, el índice debe implementarse en un endpoint de índice.
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.
Si es la primera vez que implementas un índice en un endpoint de índice, se tarda aproximadamente 30 minutos en compilar e iniciar automáticamente el backend antes de que se pueda almacenar el índice. Después de la primera implementación, el índice estará listo en cuestión de segundos. Para ver el estado de la implementación del índice, abre la consola de búsqueda vectorial, selecciona la pestaña Endpoints de índice y elige tu endpoint de índice.
Identifica el nombre de recurso de tu índice y del endpoint del índice, que tienen los siguientes formatos:
projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
.
Usar Vertex AI Vector Search en Vertex AI RAG Engine
Una vez que se haya configurado la instancia de Vector Search, sigue los pasos de esta sección para definirla como la base de datos de vectores de la aplicación RAG.
Configurar la base de datos de vectores para crear un corpus RAG
Cuando crees el corpus de RAG, especifica solo el INDEX_ENDPOINT_NAME
completo y el INDEX_NAME
. Asegúrate de usar el ID numérico tanto para el índice como para los nombres de recursos del endpoint del índice. Se crea el corpus de RAG y se asocia automáticamente al índice de búsqueda vectorial. Las validaciones se realizan en los criterios. Si no se cumple alguno de los requisitos, se rechaza la solicitud.
Python
Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
REST
# TODO(developer): Update and un-comment the following lines:
# CORPUS_DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"
# Full index/indexEndpoint resource name
# Index: projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
# IndexEndpoint: projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
# INDEX_RESOURCE_NAME = "YOUR_INDEX_ENDPOINT_RESOURCE_NAME"
# INDEX_NAME = "YOUR_INDEX_RESOURCE_NAME"
# Call CreateRagCorpus API to create a new RagCorpus
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/ragCorpora -d '{
"display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
"rag_vector_db_config" : {
"vertex_vector_search": {
"index":'\""${INDEX_NAME}"\"'
"index_endpoint":'\""${INDEX_ENDPOINT_NAME}"\"'
}
}
}'
# Call ListRagCorpora API to verify the RagCorpus is created successfully
curl -sS -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://${LOCATION_ID}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_NUMBER}/locations/${LOCATION_ID}/ragCorpora"
Importar archivos con la API RAG
Usa la API ImportRagFiles
para importar archivos de Cloud Storage o Google Drive al índice de Vector Search. Los archivos se insertan y se almacenan en el índice de búsqueda vectorial.
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_NUMBER}/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_NUMBER}/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.
Obtener contextos relevantes con la API RAG
Una vez que se hayan importado los archivos, se podrá recuperar el contexto pertinente del índice de búsqueda vectorial mediante 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_NUMBER}/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_NUMBER}/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
Para generar contenido con los modelos de Gemini, llama a la API de GenerateContent
de Vertex AI. Si especifica el
RAG_CORPUS_RESOURCE
en la solicitud, la API recuperará automáticamente los datos del índice de búsqueda vectorial.
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_NUMBER}/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,
"vector_distance_threshold": 0.32
}
}
}
}'
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.