En esta página, se muestra cómo conectar tu motor de RAG de Vertex AI a Vertex AI Vector Search.
También puedes seguir este notebook Motor de RAG de Vertex AI con la búsqueda de vectores de Vertex AI.
El motor de RAG de Vertex AI es una herramienta potente que 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 permite la recuperación eficiente de documentos relevantes en función de su similitud semántica con una consulta determinada. Cuando se integra la búsqueda de vectores de Vertex AI como una base de datos de vectores adicional con el motor de RAG de Vertex AI, puedes usar las capacidades de la búsqueda de vectores para controlar volúmenes de datos con baja latencia y mejorar el rendimiento y la escalabilidad de tus aplicaciones de RAG.
Configuración de Vector Search de Vertex AI
La búsqueda de vectores de Vertex AI se basa en la tecnología de búsqueda de vectores que desarrolló la investigación de Google. Con Búsqueda de Vectores, puedes usar la misma infraestructura que proporciona una base para los productos de Google, como la Búsqueda de Google, YouTube y Google Play.
Para realizar la integración con el motor de RAG de Vertex AI, se requiere un índice de Búsqueda de vectores vacío.
Configura el SDK de Vertex AI
Para configurar el SDK de Vertex AI, consulta Configuración.
Crea un índice de Vector Search
Para crear un índice de búsqueda de vectores que sea compatible con tu corpus de RAG, el índice debe cumplir con los siguientes criterios:
IndexUpdateMethod
debe serSTREAM_UPDATE
. Consulta Cómo crear un índice de transmisión.El tipo de medición de distancia se debe establecer de forma explícita en uno de los siguientes:
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
La dimensión del vector debe ser coherente con el modelo de incorporación que planeas 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.
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.
Crea un extremo del índice de Vector Search
El motor de RAG de Vertex AI admite extremos públicos.
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.
Implementa un índice en un extremo de índice
Antes de realizar la búsqueda del vecino más cercano, el índice se debe implementar en un extremo de índice.
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.
Si es la primera vez que implementas un índice en un extremo de índice, el backend tarda aproximadamente 30 minutos en compilarse e iniciarse automáticamente antes de que se pueda almacenar el índice. Después de la primera implementación, el índice estará listo en segundos. Para ver el estado de la implementación del índice, abre la consola de Vector Search, selecciona la pestaña Extremos de índice y elige tu extremo de índice.
Identifica el nombre del recurso de tu índice y el extremo del índice, que tienen los siguientes formatos:
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
Usa la Búsqueda de vectores de Vertex AI en el motor de RAG de Vertex AI
Después de configurar la instancia de Vector Search, sigue los pasos que se indican en esta sección para configurarla como la base de datos de vectores de la aplicación de RAG.
Establece la base de datos de vectores para crear un corpus de RAG
Cuando crees el corpus de RAG, especifica solo el INDEX_ENDPOINT_NAME
y INDEX_NAME
completos. Asegúrate de usar el ID numérico para los nombres de los recursos del índice y del extremo del índice. El corpus de RAG se crea y se asocia automáticamente con el índice de Vector Search. Las validaciones se realizan en los criterios. Si no se cumple alguno de los requisitos, se rechazará la solicitud.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
# IndexEndpoint: projects/${PROJECT_ID}/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_ID}/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_ID}/locations/${LOCATION_ID}/ragCorpora"
Importa archivos con la API de RAG
Usa la API de ImportRagFiles
para importar archivos de Cloud Storage o Google Drive al índice de Búsqueda vectorial. Los archivos se incorporan y almacenan en el índice de Vector Search.
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
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.
Cómo recuperar contextos relevantes con la API de RAG
Una vez que se completen las importaciones de archivos, se puede recuperar el contexto relevante del índice de búsqueda de vectores con 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
}
}'
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.
Genera contenido con la API de Gemini de Vertex AI
Para generar contenido con modelos de Gemini, realiza una llamada a la
API de GenerateContent
de Vertex AI. Cuando especificas RAG_CORPUS_RESOURCE
en la solicitud, la API recupera datos automáticamente del índice de Vector Search.
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,
"vector_distance_threshold": 0.32
}
}
}
}'
SDK de Vertex AI para 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 del SDK de Vertex AI de referencia de la API de Vertex para Python.