Interroger l'index public pour obtenir les voisins les plus proches

Une fois que vous avez créé et déployé l'index, vous pouvez exécuter des requêtes pour obtenir ses voisins les plus proches.

Voici quelques exemples de requête de correspondance permettant de trouver les voisins les plus proches à l'aide de l'algorithme des k plus proches voisins (k-NN).

Exemples de requêtes pour le point de terminaison public

Python

Python

def vector_search_find_neighbors(
    project: str,
    location: str,
    index_endpoint_name: str,
    deployed_index_id: str,
    queries: List[List[float]],
    num_neighbors: int,
) -> None:
    """Query the vector search index.

    Args:
        project (str): Required. Project ID
        location (str): Required. The region name
        index_endpoint_name (str): Required. Index endpoint to run the query
        against.
        deployed_index_id (str): Required. The ID of the DeployedIndex to run
        the queries against.
        queries (List[List[float]]): Required. A list of queries. Each query is
        a list of floats, representing a single embedding.
        num_neighbors (int): Required. The number of neighbors to return.
    """
    # Initialize the Vertex AI client
    aiplatform.init(project=project, location=location)

    # Create the index endpoint instance from an existing endpoint.
    my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint(
        index_endpoint_name=index_endpoint_name
    )

    # Query the index endpoint for the nearest neighbors.
    resp = my_index_endpoint.find_neighbors(
        deployed_index_id=deployed_index_id,
        queries=queries,
        num_neighbors=num_neighbors,
    )
    print(resp)

Curl

L'élément publicEndpointDomainName répertorié ci-dessous se trouve à l'adresse Deploy (Déployer).


  $ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" http://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/181224308459/locations/us-central1/indexEndpoints/3370566089086861312:findNeighbors -d '{deployed_index_id: "test_index_public1", queries: [{datapoint: {datapoint_id: "0", feature_vector: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, neighbor_count: 5}]}'
  

Cet exemple curl montre comment appeler à partir de clients http(s), bien que le point de terminaison public soit compatible avec le double protocole pour RESTful et grpc_cli.


  $ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer `gcloud auth print-access-token`" http://1957880287.us-central1-181224308459.vdb.vertexai.goog/v1/projects/${PROJECT_ID}/locations/us-central1/indexEndpoints/${INDEX_ENDPOINT_ID}:readIndexDatapoints -d '{deployed_index_id:"test_index_public1", ids: ["606431", "896688"]}'
  

Console

Suivez ces instructions pour interroger un index déployé sur un point de terminaison public depuis 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édez à Vector Search.

  2. Sélectionnez l'index 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 la commande curl fournie ou en l'exécutant avec Cloud Shell.
  6. Si vous utilisez Cloud Shell, sélectionnez Exécuter dans Cloud Shell.
  7. Exécutez dans Cloud Shell.
  8. Les résultats renvoient les voisins les plus proches.

Pour obtenir un exemple de bout en bout de la création d'un index, de son déploiement sur un point de terminaison public et de l'interrogation de cet index, consultez le notebook officiel : Utiliser Vector Search et les représentations vectorielles continues Vertex AI pour le texte sur les questions disponibles sur StackOverflow.

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

Les paramètres de temps 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 la section Paramètres de configuration d'index.

Paramètres À 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 de représentations vectorielles continues 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