Cette page explique comment configurer Vertex AI Feature Store en tant que base de données vectorielle à utiliser avec le moteur RAG.
Vous pouvez également suivre ce notebook Moteur RAG avec Vertex AI Feature Store.
Le moteur RAG 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 récupère les documents pertinents en fonction de leur similarité sémantique avec une requête donnée.
En intégrant Vertex AI Feature Store en tant que base de données vectorielle supplémentaire, le moteur RAG peut utiliser Vertex AI Feature Store pour gérer de gros volumes de données avec une faible latence, ce qui permet d'améliorer les performances et l'évolutivité de vos applications RAG.
Configurer un Vertex AI Feature Store
Vertex AI Feature Store, un service cloud natif géré, est un composant essentiel de Vertex AI. Il simplifie la gestion des caractéristiques de machine learning (ML) et la livraison en ligne en vous permettant de gérer les données de caractéristiques dans une table ou une vue BigQuery. Cela permet la livraison de caractéristiques en ligne à faible latence.
Pour les instances FeatureOnlineStore
créées avec la livraison en ligne optimisée, vous pouvez utiliser une recherche de similarité vectorielle pour récupérer une liste d'entités sémantiquement similaires ou associées, également appelées voisins approximatifs les plus proches.
Les sections suivantes vous expliquent comment configurer une instance Vertex AI Feature Store pour votre application RAG.
Créer un schéma de table BigQuery
Utilisez la console Google Cloud pour créer un schéma de table BigQuery. Il doit contenir les champs suivants pour servir de source de données.
Nom du champ | Type de données | État |
---|---|---|
corpus_id |
String |
Obligatoire |
file_id |
String |
Obligatoire |
chunk_id |
String |
Obligatoire |
chunk_data_type |
String |
Nullable |
chunk_data |
String |
Nullable |
file_original_uri |
String |
Nullable |
embeddings |
Float |
Répété |
Cet exemple de code montre comment définir le schéma de votre table 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
);
Provisionner une instance FeatureOnlineStore
Pour activer la livraison en ligne des caractéristiques, utilisez l'API CreateFeatureOnlineStore
de Vertex AI Feature Store pour configurer une instance FeatureOnlineStore
. Si vous provisionnez un FeatureOnlineStore
pour la première fois, l'opération peut prendre environ cinq minutes.
REST
Pour créer une instance de magasin en ligne, envoyez une requête POST
à l'aide de la méthode featureOnlineStores.create
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région dans laquelle vous souhaitez créer l'instance
FeatureOnlineStore
, par exempleus-central1
. - PROJECT_ID : ID de votre projet
- FEATUREONLINESTORE_NAME : nom de la nouvelle instance
FeatureOnlineStore
.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores?feature_online_store_id=FEATUREONLINESTORE_NAME
Corps JSON de la requête :
{ "optimized": {} }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
{ "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" } } }
SDK Vertex AI pour 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 SDK Vertex AI pour Python.
project
: ID de votre projetlocation
: région dans laquelle vous souhaitez créer l'instanceFeatureOnlineStore
, par exempleus-central1
.feature_online_store_id
: nom de la nouvelle instanceFeatureOnlineStore
.
Créer une ressource FeatureView
Pour connecter la table BigQuery, qui stocke la source de données de fonctionnalité, à l'instance FeatureOnlineStore
, appelez l'API CreateFeatureView
pour créer une ressource FeatureView
. Lorsque vous créez une ressource FeatureView
, choisissez la métrique de distance par défaut DOT_PRODUCT_DISTANCE
, qui est définie comme la valeur négative du produit scalaire (une valeur DOT_PRODUCT_DISTANCE
plus faible indique une similitude plus élevée).
Cet exemple de code montre comment créer une ressource 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
SDK Vertex AI pour 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 SDK Vertex AI pour Python.
Importer des données et livraison en ligne
L'API RAG gère l'importation des données et la livraison en ligne.
Utiliser Vertex AI Feature Store dans le moteur RAG
Une fois l'instance Vertex AI Feature Store configurée, les sections suivantes vous expliquent comment la configurer en tant que base de données vectorielle à utiliser avec l'application RAG.
Utiliser l'instance Vertex AI Feature Store comme base de données vectorielle pour créer un corpus RAG
Pour créer le corpus RAG, vous devez utiliser FEATURE_VIEW_RESOURCE_NAME
. Le corpus RAG est créé et automatiquement associé à l'instance Vertex AI Feature Store. Les API RAG utilisent le rag_corpus_id
généré pour gérer l'importation des données dans l'instance Vertex AI Feature Store et pour récupérer les contextes pertinents à partir de rag_corpus_id
.
Cet exemple de code montre comment utiliser l'instance Vertex AI Feature Store comme base de données vectorielle pour créer un corpus 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"
SDK Vertex AI pour 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 SDK Vertex AI pour Python.
Importer des fichiers dans la table BigQuery à l'aide de l'API RAG
Utilisez l'API ImportRagFiles
pour importer des fichiers depuis Google Cloud Storage ou Google Drive dans la table BigQuery de l'instance Vertex AI Feature Store. Les fichiers sont intégrés et stockés dans la table BigQuery.
Cet exemple de code montre comment importer des fichiers dans la table BigQuery à l'aide de l'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
SDK Vertex AI pour 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 SDK Vertex AI pour Python.
Exécuter un processus de synchronisation pour créer un index FeatureOnlineStore
Après avoir importé vos données dans la table BigQuery, exécutez un processus de synchronisation pour les rendre disponibles pour la livraison en ligne. Vous devez générer un index FeatureOnlineStore
à l'aide de FeatureView
. Le processus de synchronisation peut prendre 20 minutes.
Cet exemple de code montre comment exécuter un processus de synchronisation pour créer un index FeatureOnlineStore
.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- LOCATION_ID : région où se trouve la boutique en ligne, par exemple
us-central1
. - PROJECT_ID : ID de votre projet
- FEATUREONLINESTORE_NAME: nom de la boutique en ligne contenant la vue de la caractéristique.
- FEATUREVIEW_NAME: nom de la vue de caractéristiques pour laquelle vous souhaitez démarrer manuellement la synchronisation des données.
Méthode HTTP et URL :
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:sync
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
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
Exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
{ "featureViewSync": "projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME/featureViewSyncs/OPERATION_ID" }
Récupérer des contextes pertinents à l'aide de l'API RAG
Une fois le processus de synchronisation terminé, vous pouvez récupérer les contextes pertinents de l'index FeatureOnlineStore
via 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
}
}'
SDK Vertex AI pour 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 SDK Vertex AI pour Python.
Générer du contenu à l'aide de l'API Vertex AI Gemini
Appelez l'API Vertex AI GenerateContent
pour utiliser les modèles Gemini afin de générer du contenu, et spécifiez RAG_CORPUS_RESOURCE
dans la requête pour récupérer les données de l'index 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,
}
}
}
}'
SDK Vertex AI pour 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 SDK Vertex AI pour Python.