Esegui query sull'indice pubblico per ottenere i vicini più prossimi

Dopo aver creato l'indice ed eseguito il deployment, puoi eseguire delle query per ottenere i vicini più vicini.

Ecco alcuni esempi di una query di corrispondenza per trovare i primi vicini più prossimi utilizzando l'algoritmo dei vicini più vicini k (k-NN).

Esempi di query per l'endpoint pubblico

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

Il publicEndpointDomainName elencato di seguito è disponibile nella sezione Esegui il deployment.


  $ 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}]}'
  

Questo esempio di curl mostra come effettuare chiamate dai client http(s), anche se l'endpoint pubblico supporta il doppio protocollo per le chiamate RESTful e 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

Usa queste istruzioni per eseguire query su un indice di cui è stato eseguito il deployment su un endpoint pubblico dalla console.

  1. Nella sezione Vertex AI della console Google Cloud, vai alla sezione Deployment e utilizzo. Seleziona Ricerca vettoriale.

    Vai a Vector Search

  2. Seleziona l'indice su cui vuoi eseguire una query. Si apre la pagina Informazioni indice.
  3. Scorri verso il basso fino alla sezione Indici di cui è stato eseguito il deployment e seleziona l'indice di cui vuoi eseguire la query. Viene visualizzata la pagina Informazioni sull'indice di cui è stato eseguito il deployment.
  4. Nella sezione Indice query, seleziona i parametri di query. Puoi scegliere di eseguire query in base a un vettore o a un punto dati specifico.
  5. Esegui la query utilizzando il comando curl fornito o eseguendola con Cloud Shell.
  6. Se utilizzi Cloud Shell, seleziona Esegui in Cloud Shell.
  7. Esegui in Cloud Shell.
  8. I risultati restituiscono i vicini più prossimi.

Per un esempio end-to-end di come creare un indice, di come eseguirne il deployment su un endpoint pubblico e come eseguire query, consulta il blocco note ufficiale: Using Vector Search and Vertex AI Embeddings for Text for StackOverflow Domande.

Impostazioni del momento della query che influiscono sulle prestazioni

I seguenti parametri relativi al tempo di query possono influire su latenza, disponibilità e costi quando utilizzi Vector Search. Queste indicazioni si applicano alla maggior parte dei casi. Tuttavia, ti consigliamo sempre di sperimentare le configurazioni per assicurarti che funzionino al tuo caso d'uso.

Per le definizioni dei parametri, consulta Parametri di configurazione dell'indice.

Parametro Informazioni Impatto sulle prestazioni
approximateNeighborsCount

Indica all'algoritmo il numero di risultati approssimativi da recuperare da ogni shard.

Il valore di approximateNeighborsCount deve sempre essere maggiore del valore di setNeighborsCount. Se il valore di setNeighborsCount è basso, è consigliato dieci volte questo valore per approximateNeighborsCount. Per valori setNeighborsCount più grandi, è possibile utilizzare un moltiplicatore più piccolo.

L'aumento del valore di approximateNeighborsCount può influire sulle prestazioni nei seguenti modi:

  • Richiamo: aumentato
  • Latenza: potenziale aumento
  • Disponibilità: nessun impatto
  • Costo: può aumentare perché durante una ricerca vengono elaborati più dati

La riduzione del valore di approximateNeighborsCount può influire sulle prestazioni nei seguenti modi:

  • Richiamo: diminuito
  • Latenza: potrebbe diminuire
  • Disponibilità: nessun impatto
  • Costo: può ridurre i costi perché durante una ricerca vengono elaborati meno dati
setNeighborCount Specifica il numero di risultati che la query deve restituire.

I valori inferiori o uguali a 300 rimangono efficaci nella maggior parte dei casi d'uso. Per valori più grandi, esegui il test per il tuo caso d'uso specifico.

fractionLeafNodesToSearch Controlla la percentuale di nodi foglia da visitare quando cerchi i vicini più prossimi. Questo valore è correlato a leafNodeEmbeddingCount in quanto maggiore è il numero di incorporamenti per nodo foglia, maggiore è il numero di dati esaminati per foglia.

L'aumento del valore di fractionLeafNodesToSearch può influire sulle prestazioni nei seguenti modi:

  • Richiamo: aumentato
  • Latenza: aumentata
  • Disponibilità: nessun impatto
  • Costo: può aumentare perché una latenza maggiore occupa più risorse della macchina

La diminuzione del valore di fractionLeafNodesToSearch può influire sulle prestazioni nei seguenti modi:

  • Richiamo: diminuito
  • Latenza: diminuita
  • Disponibilità: nessun impatto
  • Costo: può diminuire perché una latenza più bassa occupa meno risorse della macchina

Passaggi successivi