Les sections suivantes expliquent comment configurer, créer, répertorier et supprimer des index.
Présentation de l'index
Un index est un ou plusieurs fichiers constitués de vos vecteurs de représentations vectorielles continues. Ces vecteurs sont constitués de grandes quantités de données que vous souhaitez déployer et interroger avec Vector Search. Vector Search vous permet de créer deux types d'index, en fonction de la manière dont vous prévoyez de les mettre à jour avec vos données. Vous pouvez créer un index conçu pour les mises à jour groupées ou un index conçu pour diffuser vos mises à jour en continu.
Un index par lot vous permet de mettre à jour votre index dans un lot avec des données stockées sur une période définie, comme des systèmes traités chaque semaine ou chaque mois. Un index en continu consiste à mettre à jour les données d'index à mesure que de nouvelles données sont ajoutées à votre datastore, par exemple si vous possédez une librairie et que vous souhaitez afficher le nouvel inventaire en ligne dès que possible. Le type que vous choisissez est important, car la configuration et les exigences sont différentes.
Configurer les paramètres d'index
Avant de créer un index, vous devez configurer les paramètres de votre index.
Par exemple, créez un fichier nommé index_metadata.json
:
{ "contentsDeltaUri": "gs://BUCKET_NAME/path", "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "shardSize": "SHARD_SIZE_MEDIUM", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 5000, "leafNodesToSearchPercent": 3 } } } }
Vous trouverez la définition de chacun de ces champs sur la page Paramètres de configuration d'index.
Créer un index
Taille de l'index
Les données d'index sont divisées en parties égales à traiter, appelées segments. Lorsque vous créez un index, vous devez spécifier la taille des segments à utiliser. Les tailles acceptées sont les suivantes :
SHARD_SIZE_SMALL
: 2 Gio par segment.SHARD_SIZE_MEDIUM
: 20 Gio par segment.SHARD_SIZE_LARGE
: 50 Gio par segment.
Les types de machines que vous pouvez utiliser pour déployer votre index (à l'aide de points de terminaison publics ou à l'aide de points de terminaison VPC) dépendent de la taille de partition de l'index. Le tableau suivant indique les tailles de partition acceptées par chaque type de machine :
Type de machine | SHARD_SIZE_SMALL |
SHARD_SIZE_MEDIUM |
SHARD_SIZE_LARGE |
---|---|---|---|
n1-standard-16 |
|||
n1-standard-32 |
|||
e2-standard-2 |
(par défaut) | ||
e2-standard-16 |
(par défaut) | ||
e2-highmem-16 |
(par défaut) | ||
n2d-standard-32 |
Pour savoir comment la taille de la partition et le type de machine affectent la tarification, consultez la page des tarifs de Vertex AI.
Créer un index pour la mise à jour groupée
Suivez les instructions ci-dessous pour créer et déployer votre index. Si vous n'avez pas encore préparé vos représentations vectorielles continues, vous pouvez passer à l'étape Créer un index par lot vide. Avec cette option, aucune donnée de représentation vectorielle continue n'est requise au moment de la création de l'index.
Pour créer un index, procédez comme suit :
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- LOCAL_PATH_TO_METADATA_FILE : chemin d'accès local au fichier de métadonnées.
- INDEX_NAME : nom à afficher de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud ai indexes create \ --metadata-file=LOCAL_PATH_TO_METADATA_FILE \ --display-name=INDEX_NAME \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes create ` --metadata-file=LOCAL_PATH_TO_METADATA_FILE ` --display-name=INDEX_NAME ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes create ^ --metadata-file=LOCAL_PATH_TO_METADATA_FILE ^ --display-name=INDEX_NAME ^ --region=LOCATION ^ --project=PROJECT_ID
Vous devriez obtenir un résultat semblable à celui-ci :
You can poll for the status of the operation for the response to include "done": true. Use the following example to poll the status. $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1
Consultez la page gcloud ai operations pour en savoir plus sur la commande describe
.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- INPUT_DIR : chemin d'accès au répertoire Cloud Storage du contenu de l'index.
- INDEX_NAME : nom à afficher de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Corps JSON de la requête :
{ "display_name": "INDEX_NAME", "metadata": { "contentsDeltaUri": "INPUT_DIR", "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "leafNodesToSearchPercent": 7 } } } } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateIndexOperationMetadata", "genericMetadata": { "createTime": "2022-01-08T01:21:10.147035Z", "updateTime": "2022-01-08T01:21:10.147035Z" } } }
Terraform
L'exemple suivant utilise la ressource Terraform google_vertex_ai_index
afin de créer un index pour les mises à jour groupées.
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
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.
Console
Suivez ces instructions pour créer un index pour les mises à jour groupées.
- Dans la section "Vertex AI" de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.
- Cliquez sur Créer un index pour ouvrir le volet Index. Le volet Créer un index s'affiche.
- Dans le champ Nom à afficher, indiquez un nom permettant d'identifier de manière unique votre index.
- Dans le champ Description, indiquez une description de l'index.
- Dans le champ Région, sélectionnez une région dans la liste déroulante.
- Dans le champ Cloud Storage, recherchez et sélectionnez le dossier Cloud Storage dans lequel vos données vectorielles sont stockées.
- Dans la liste déroulante Type d'algorithme, sélectionnez le type d'algorithme utilisé par la recherche vectorielle pour effectuer une recherche efficace. Si vous sélectionnez l'algorithme "treeAh", saisissez le nombre approximatif de voisins.
- Dans le champ Dimensions, saisissez le nombre de dimensions de vos vecteurs d'entrée.
- Dans le champ Update method (Méthode de mise à jour), sélectionnez Batch (Par lot).
- Dans le champ Taille de segment, sélectionnez la taille du segment souhaitée dans le menu déroulant.
- Cliquez sur Créer. Votre nouvel index apparaît dans votre liste d'index une fois qu'il est prêt. Remarque : La compilation peut prendre jusqu'à une heure.
Créer un index de traitement par lot vide
Pour créer et déployer votre index immédiatement, vous pouvez créer un index par lot vide. Avec cette option, aucune donnée de représentation vectorielle continue n'est requise au moment de la création de l'index.
Pour créer un index vide, la requête est presque identique à la création d'un index pour les mises à jour groupées. La différence est que vous supprimez le champ contentsDeltaUri
, car vous n'associez pas d'emplacement de données. Voici un exemple d'index de traitement par lot vide :
Exemple de requête d'index vide
{ "display_name": INDEX_NAME, "indexUpdateMethod": "BATCH_UPDATE", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "leafNodesToSearchPercent": 7 } } } } }
Créer un index pour les mises à jour en streaming
Suivez ces instructions pour créer et déployer votre index en continu. Si vos représentations vectorielles continues ne sont pas encore prêtes, passez à la section Créer un index vide pour les mises à jour en continu. Avec cette option, aucune donnée de représentation vectorielle continue n'est requise au moment de la création de l'index.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- INDEX_NAME : nom à afficher de l'index.
- DESCRIPTION : description de l'index.
- INPUT_DIR : chemin d'accès au répertoire Cloud Storage du contenu de l'index.
- DIMENSIONS : nombre de dimensions du vecteur de représentation vectorielle continue.
- PROJECT_ID : L'ID de votre projet Google Cloud.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
Méthode HTTP et URL :
POST https://ENDPOINT-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Corps JSON de la requête :
{ displayName: "INDEX_NAME", description: "DESCRIPTION", metadata: { contentsDeltaUri: "INPUT_DIR", config: { dimensions: "DIMENSIONS", approximateNeighborsCount: 150, distanceMeasureType: "DOT_PRODUCT_DISTANCE", algorithmConfig: {treeAhConfig: {leafNodeEmbeddingCount: 10000, leafNodesToSearchPercent: 2}} }, }, indexUpdateMethod: "STREAM_UPDATE" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateIndexOperationMetadata", "genericMetadata": { "createTime": "2023-12-05T23:17:45.416117Z", "updateTime": "2023-12-05T23:17:45.416117Z", "state": "RUNNING", "worksOn": [ "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID" ] } } }
Console
Suivez ces instructions pour créer un index pour les mises à jour en streaming dans la console Google Cloud.
Pour créer un index disponible pour les mises à jour en streaming, vous devez suivre des étapes semblables à celles permettant de configurer un index de mise à jour groupée, sauf que vous devez définir indexUpdateMethod
sur STREAM_UPDATE
.
- Dans la section Vertex AI de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.
- Cliquez sur Créer un index pour ouvrir le volet Index. Le volet Créer un index s'affiche.
- Dans le champ Nom à afficher, indiquez un nom permettant d'identifier de manière unique votre index.
- Dans le champ Description, indiquez une description de l'index.
- Dans le champ Région, sélectionnez une région dans la liste déroulante.
- Dans le champ Cloud Storage, recherchez et sélectionnez le dossier Cloud Storage dans lequel vos données vectorielles sont stockées.
- Dans la liste déroulante Type d'algorithme, sélectionnez le type d'algorithme que Vector Search utilisera pour effectuer votre recherche. Si vous sélectionnez l'algorithme "treeAh", saisissez le nombre approximatif de voisins.
- Dans le champ Dimensions, saisissez le nombre de dimensions de vos vecteurs d'entrée.
- Dans le champ Update method (Méthode de mise à jour), sélectionnez Stream (Flux).
- Dans le champ Taille de segment, sélectionnez la taille du segment souhaitée dans le menu déroulant.
- Cliquez sur Créer. Votre nouvel index apparaît dans votre liste d'index une fois qu'il est prêt. Remarque : La compilation peut prendre jusqu'à une heure.
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 index vide pour les mises à jour en continu
Pour créer et déployer votre index immédiatement, vous pouvez créer un index vide pour l'insertion en flux continu. Avec cette option, aucune donnée de représentation vectorielle continue n'est requise au moment de la création de l'index.
Pour créer un index vide, la requête est presque identique à la création d'un index pour la diffusion en flux continu. La différence est que vous supprimez le champ contentsDeltaUri
, car vous n'associez pas d'emplacement de données. Voici un exemple d'index en continu :
Exemple de requête d'index vide
{ "display_name": INDEX_NAME, "indexUpdateMethod": "STREAM_UPDATE", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "algorithm_config": { "treeAhConfig": { "leafNodeEmbeddingCount": 500, "leafNodesToSearchPercent": 7 } } } } }
Répertorier les index
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- INDEX_NAME : nom à afficher de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud ai indexes list \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes list ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes list ^ --region=LOCATION ^ --project=PROJECT_ID
Vous devriez obtenir un résultat semblable à celui-ci :
You can poll for the status of the operation for the response to include "done": true. Use the following example to poll the status. $ gcloud ai operations describe 1234567890123456789 --project=my-test-project --region=us-central1
Consultez la page gcloud ai operations pour en savoir plus sur la commande describe
.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- INDEX_NAME : nom à afficher de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.
Méthode HTTP et URL :
GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/indexes
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "indexes": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID", "displayName": "INDEX_NAME", "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/matchingengine/metadata/nearest_neighbor_search_1.0.0.yaml", "metadata": { "config": { "dimensions": 100, "approximateNeighborsCount": 150, "distanceMeasureType": "DOT_PRODUCT_DISTANCE", "featureNormType": "NONE", "algorithmConfig": { "treeAhConfig": { "maxLeavesToSearch": 50, "leafNodeCount": 10000 } } } }, "etag": "AMEw9yNU8YX5IvwuINeBkVv3yNa7VGKk11GBQ8GkfRoVvO7LgRUeOo0qobYWuU9DiEc=", "createTime": "2020-11-08T21:56:30.558449Z", "updateTime": "2020-11-08T22:39:25.048623Z" } ] }
Console
Suivez ces instructions pour afficher la liste de vos index.
- Dans la section "Vertex AI" de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.
- La liste de vos index actifs s'affiche.
Régler l'index
Pour ajuster l'index, vous devez définir les paramètres de configuration qui ont une incidence sur les performances des index déployés, en particulier le rappel et la latence. Ces paramètres sont définis lors de la création de l'index. Vous pouvez utiliser des index de force brute pour mesurer le rappel.
Paramètres de configuration ayant un impact sur les performances
Les paramètres de configuration suivants peuvent être définis au moment de la création de l'index et peuvent affecter le rappel, la latence, la disponibilité et les coûts lors de l'utilisation de Vector Search. Cette recommandation s'applique à la plupart des cas. Toutefois, testez toujours vos configurations pour vous assurer qu'elles fonctionnent bien pour votre cas d'utilisation.
Pour les définitions de paramètres, consultez Paramètres de configuration d'index.
Paramètres | À propos | Impact sur la performance |
---|---|---|
shardSize
|
Contrôle la quantité de données sur chaque machine. Lorsque vous choisissez une taille de segment, estimez la taille de votre ensemble de données à l'avenir. Si la taille de votre ensemble de données comporte une limite supérieure, choisissez la taille de segment appropriée pour l'adapter. S'il n'y a pas de limite supérieure ou si votre cas d'utilisation est extrêmement sensible à la variabilité de la latence, il est recommandé de choisir une grande taille de segment. |
Si vous configurez un plus grand nombre de segments plus petits, le nombre de résultats candidats sera plus élevé lors de la recherche. Un plus grand nombre de segments peut affecter les performances des manières suivantes :
Si vous configurez un plus petit nombre de segments plus volumineux, moins de résultats candidats seront traités lors de la recherche. Un nombre réduit de segments peut affecter les performances des manières suivantes :
|
distanceMeasureType
|
Détermine l'algorithme utilisé pour le calcul de la distance entre les points de données et le vecteur de requête. |
Les paramètres
|
leafNodeEmbeddingCount
|
Nombre de représentations vectorielles continues pour chaque nœud feuille. Par défaut, ce nombre est défini sur 1 000.
En règle générale, modifier la valeur de |
L'augmentation du nombre de représentations vectorielles continues pour chaque nœud feuille peut réduire la latence, mais également la qualité de rappel. Cela peut affecter les performances des manières suivantes :
La réduction du nombre de représentations vectorielles continues pour chaque nœud feuille peut affecter les performances des manières suivantes :
|
Utiliser un index de force brute pour mesurer le rappel
Pour obtenir les voisins les plus proches, utilisez des index avec l'algorithme de force brute. L'algorithme de force brute offre un rappel de 100 % au détriment de la latence. L'utilisation d'un index de force brute pour mesurer le rappel n'est généralement pas un choix approprié pour la diffusion en production, mais elle peut être utile pour évaluer le rappel de diverses options d'indexation hors connexion.
Pour créer un index à l'aide de l'algorithme de force brute, spécifiez brute_force_config
dans les métadonnées de l'index :
curl -X POST -H "Content-Type: application/json" \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/indexes \ -d '{ displayName: "'${DISPLAY_NAME}'", description: "'${DESCRIPTION}'", metadata: { contentsDeltaUri: "'${INPUT_DIR}'", config: { dimensions: 100, approximateNeighborsCount: 150, distanceMeasureType: "DOT_PRODUCT_DISTANCE", featureNormType: "UNIT_L2_NORM", algorithmConfig: { bruteForceConfig: {} } }, }, }'
Supprimer un index
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- INDEX_ID : ID de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud ai indexes delete INDEX_ID \ --region=LOCATION \ --project=PROJECT_ID
Windows (PowerShell)
gcloud ai indexes delete INDEX_ID ` --region=LOCATION ` --project=PROJECT_ID
Windows (cmd.exe)
gcloud ai indexes delete INDEX_ID ^ --region=LOCATION ^ --project=PROJECT_ID
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- INDEX_ID : ID de l'index.
- LOCATION : région dans laquelle vous utilisez Vertex AI.
- PROJECT_ID : L'ID de votre projet Google Cloud.
- PROJECT_NUMBER : numéro de projet généré automatiquement pour votre projet.
Méthode HTTP et URL :
DELETE https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/indexes/INDEX_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata", "genericMetadata": { "createTime": "2022-01-08T02:35:56.364956Z", "updateTime": "2022-01-08T02:35:56.364956Z" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Console
Suivez les instructions ci-dessous pour supprimer un ou plusieurs index.
- Dans la section "Vertex AI" de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.
- La liste de vos index actifs s'affiche.
- Pour supprimer un index, accédez au menu d'options situé sur la même ligne que l'index, puis sélectionnez Supprimer.
Étapes suivantes
- En savoir plus sur les paramètres de configuration d'index
- Découvrez comment déployer et gérer des points de terminaison d'index publics.
- Découvrez comment déployer et gérer des points de terminaison d'index dans un réseau VPC.
- Découvrez comment mettre à jour et recompiler votre index.
- Découvrez comment surveiller un index.