Cette page explique comment connecter votre moteur Vertex AI RAG à Vertex AI Vector Search.
Vous pouvez également suivre ce notebook Moteur de RAG Vertex AI avec Vertex AI Vector Search.
Le moteur RAG Vertex AI est un outil puissant qui utilise une base de données vectorielle intégrée alimentée par Spanner pour stocker et gérer les représentations vectorielles de documents textuels. La base de données vectorielle permet de récupérer efficacement les documents pertinents en fonction de leur similarité sémantique avec une requête donnée. En intégrant Vertex AI Vector Search en tant que base de données vectorielle supplémentaire avec Vertex AI RAG Engine, vous pouvez utiliser les fonctionnalités de Vector Search pour gérer des volumes de données avec une faible latence afin d'améliorer les performances et l'évolutivité de vos applications RAG.
Configuration de Vertex AI Vector Search
Vertex AI Vector Search est basé sur la technologie de recherche vectorielle développée par Google Research. Vector Search vous permet d'utiliser l'infrastructure qui est à la base des produits Google, tels que la recherche Google, YouTube et Google Play.
Pour l'intégration au moteur de RAG Vertex AI, un indice de recherche vectorielle vide est requis.
Configurer le SDK Vertex AI
Pour configurer le SDK Vertex AI, consultez la section Configuration.
Créer un index Vector Search
Pour créer un index de recherche vectorielle compatible avec votre corpus RAG, l'index doit respecter les critères suivants:
IndexUpdateMethod
doit êtreSTREAM_UPDATE
. Consultez Créer un index de flux.Le type de mesure de la distance doit être défini explicitement sur l'un des éléments suivants:
DOT_PRODUCT_DISTANCE
COSINE_DISTANCE
La dimension du vecteur doit être cohérente avec le modèle d'embedding que vous prévoyez d'utiliser dans le corpus RAG. D'autres paramètres peuvent être affinés en fonction de vos choix, qui déterminent si les paramètres supplémentaires peuvent être affinés.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Créer un point de terminaison d'index Vector Search
Le moteur RAG Vertex AI est compatible avec les points de terminaison publics.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Déployer un index sur un point de terminaison d'index
Avant de pouvoir effectuer la recherche des plus proches voisins, l'index doit être déployé sur un point de terminaison d'index.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Si vous déployez un index pour la première fois sur un point de terminaison d'index, la création et le lancement du backend prennent environ 30 minutes avant que l'index puisse être stocké. Après le premier déploiement, l'index est prêt en quelques secondes. Pour consulter l'état du déploiement de l'index, ouvrez la console Vector Search, sélectionnez l'onglet Points de terminaison de l'index, puis choisissez votre point de terminaison de l'index.
Identifiez le nom de la ressource de votre index et de votre point de terminaison d'index, qui se présentent sous les formats suivants:
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexes/${INDEX_ID}
projects/${PROJECT_ID}/locations/${LOCATION_ID}/indexEndpoints/${INDEX_ENDPOINT_ID}
Utiliser Vertex AI Vector Search dans le moteur de classification de risque Vertex AI
Une fois l'instance Vector Search configurée, suivez la procédure de cette section pour définir l'instance Vector Search comme base de données vectorielle pour l'application RAG.
Définir la base de données vectorielle pour créer un corpus RAG
Lorsque vous créez le corpus RAG, spécifiez uniquement INDEX_ENDPOINT_NAME
et INDEX_NAME
complets. Veillez à utiliser l'ID numérique pour les noms de ressources de l'index et du point de terminaison de l'index. Le corpus RAG est créé et automatiquement associé à l'index Vector Search. Les validations sont effectuées sur les critères. Si l'une des exigences n'est pas remplie, la requête est rejetée.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Python.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement 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"
Importer des fichiers à l'aide de l'API RAG
Utilisez l'API ImportRagFiles
pour importer des fichiers depuis Cloud Storage ou Google Drive dans l'index de recherche vectorielle. Les fichiers sont intégrés et stockés dans l'index 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
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Récupérer des contextes pertinents à l'aide de l'API RAG
Une fois les importations de fichiers terminées, le contexte pertinent peut être récupéré à partir de l'index de recherche vectorielle à l'aide de l'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
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.
Générer du contenu à l'aide de l'API Vertex AI Gemini
Pour générer du contenu à l'aide de modèles Gemini, appelez l'API GenerateContent
Vertex AI. En spécifiant RAG_CORPUS_RESOURCE
dans la requête, l'API récupère automatiquement les données de l'index 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
}
}
}
}'
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.