Interroger les index PSA ou PSC pour obtenir les voisins les plus proches

Une fois que vous avez créé un index PSA ou PSC, vous pouvez exécuter des requêtes pour obtenir ses voisins les plus proches.

À propos de l'interrogation des index PSC

L'adresse de calcul créée à partir d'un index PSC peut être utilisée pour lui envoyer des requêtes. Dans l'exemple suivant, remplacez TARGET_IP par l'adresse de calcul créée.

À propos de l'interrogation des index PSA

Chaque DeployedIndex possède un TARGET_IP que vous pouvez récupérer en répertoriant les IndexEndpoints.

Interroger un index

Pour interroger un DeployedIndex, connectez-vous à son TARGET_IP sur le port 10000, puis appelez la méthode Match ou BatchMatch. Vous pouvez également interroger à l'aide de DOC_ID.

Les exemples suivants utilisent l'outil Open Source grpc_cli pour envoyer des requêtes grpc au serveur d'index déployé.

gRPC

Dans le premier exemple, vous envoyez une seule requête à l'aide de la méthode Match.

./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]'

Dans le deuxième exemple, vous combinez deux requêtes distinctes dans la même requête BatchMatch.

./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.BatchMatch 'requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", requests: [{deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.1,..]}, {deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [-0.2,..]}]}]'

Vous devez appeler ces API à partir d'un client exécuté dans le même VPC avec lequel le service a été appairé (#vpc-network-peering-setup).

Pour exécuter une requête à l'aide d'un DOC_ID, utilisez l'exemple suivant.

./grpc_cli call ${TARGET_IP}:10000  google.cloud.aiplatform.container.v1.MatchService.Match "deployed_index_id:'"test_index1"',embedding_id: '"606431"'"

Dans cet exemple, vous envoyez une requête à l'aide de limites numériques et de jetons.

./grpc_cli call ${TARGET_IP}:10000 google.cloud.aiplatform.container.v1.MatchService.Match 'deployed_index_id: "${DEPLOYED_INDEX_ID}", float_val: [1, 1], "sparse_embedding": {"values": [111.0,111.1,111.2], "dimensions": [10,20,30]}, numeric_restricts: [{name: "double-ns", value_double: 0.3, op: LESS_EQUAL}, {name: "double-ns", value_double: -1.2, op: GREATER}, {name: "double-ns", value_double: 0., op: NOT_EQUAL}], restricts: [{name: "color", allow_tokens: ["red"]}]'

Pour en savoir plus, consultez la présentation des bibliothèques clientes.

Console

Suivez ces instructions pour interroger un index VPC dans la console.

  1. Dans la section Vertex AI de la console Google Cloud, accédez à la section Déployer et utiliser. Sélectionnez Vector Search.

    Accéder à Vector Search

  2. Sélectionnez l'index VPC que vous souhaitez interroger. La page Informations sur l'index s'affiche.
  3. Faites défiler la page jusqu'à la section Index déployés et sélectionnez celui que vous souhaitez interroger. La page Informations sur l'index déployé s'affiche.
  4. Dans la section Interroger l'index, sélectionnez les paramètres de votre requête. Vous pouvez choisir d'effectuer une requête par vecteur ou par point de données spécifique.
  5. Exécutez la requête à l'aide de l'outil Open Source grpc_cli ou à l'aide du SDK Vertex AI pour Python.

Paramètres au moment de la requête ayant un impact sur les performances

Les paramètres de requête suivants peuvent affecter 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ètre À propos Impact sur la performance
approximateNeighborsCount

Indique à l'algorithme le nombre de résultats approximatifs à récupérer à partir de chaque segment.

La valeur de approximateNeighborsCount doit toujours être supérieure à la valeur de setNeighborsCount. Si la valeur de setNeighborsCount est faible, nous vous recommandons de la multiplier par 10 pour approximateNeighborsCount. Pour les valeurs setNeighborsCount plus élevées, un multiplicateur plus petit peut être utilisé.

L'augmentation de la valeur de approximateNeighborsCount peut affecter les performances des manières suivantes :

  • Rappel : augmentation
  • Latence : potentiellement augmentée
  • Disponibilité : aucun impact
  • Coût : peut augmenter, car davantage de données sont traitées lors d'une recherche.

La diminution de la valeur de approximateNeighborsCount peut affecter les performances des manières suivantes :

  • Rappel : diminution
  • Latence : diminution potentielle
  • Disponibilité : aucun impact
  • Coût : peut réduire les coûts, car moins de données sont traitées lors d'une recherche.
setNeighborCount Spécifie le nombre de résultats que la requête doit renvoyer.

Les valeurs inférieures ou égales à 300 restent performantes dans la plupart des cas d'utilisation. Pour les valeurs plus élevées, testez votre cas d'utilisation spécifique.

fractionLeafNodesToSearch Contrôle le pourcentage de nœuds feuilles à consulter lors de la recherche de voisins les plus proches. Cela est lié à leafNodeEmbeddingCount, en ce sens que plus il y a d'embeddings par nœud feuille, plus le nombre de données examinées par feuille est important.

L'augmentation de la valeur de fractionLeafNodesToSearch peut affecter les performances des manières suivantes :

  • Rappel : augmentation
  • Latence : augmentation
  • Disponibilité : aucun impact
  • Coût : peut augmenter, car une latence plus élevée occupe plus de ressources de machine

La réduction de la valeur de fractionLeafNodesToSearch peut affecter les performances des manières suivantes :

  • Rappel : diminution
  • Latence : diminution
  • Disponibilité : aucun impact
  • Coût : peut diminuer, car une latence plus faible occupe moins de ressources machine

Étapes suivantes