Esegui query sugli indici PSA o PSC per ottenere i vicini più prossimi

Dopo aver creato un indice PSA o PSC, puoi eseguire query per ottenere i relativi vicini più prossimi.

Informazioni sulle query sugli indici PSC

L'indirizzo di calcolo creato da un indice PSC può essere utilizzato per inviare query. Nell'esempio seguente, sostituisci TARGET_IP con l'indirizzo compute creato.

Informazioni sulle query sugli indici PSA

Ogni DeployedIndex ha un TARGET_IP, che puoi recuperare elencando IndexEndpoints.

Eseguire una query su un indice

Per eseguire una query su un DeployedIndex, connettiti al relativo TARGET_IP sulla porta 10000 e chiama il metodo Match o BatchMatch. Inoltre, puoi eseguire query utilizzando DOC_ID.

Gli esempi riportati di seguito utilizzano lo strumento open source grpc_cli per inviare richieste grpc al server di indicizzazione di cui è stato eseguito il deployment.

gRPC

Nel primo esempio, invii una singola query utilizzando il metodo Match.

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

Nel secondo esempio, combini due query distinte nella stessa richiesta 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,..]}]}]'

Devi effettuare chiamate a queste API da un client in esecuzione nello stesso [VPC con cui è stato eseguito il peering del servizio](#vpc-network-peering-setup).

Per eseguire una query utilizzando un DOC_ID, utilizza il seguente esempio.

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

In questo esempio, invii una query utilizzando token e limitazioni numeriche.

./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"]}]'

Per saperne di più, vedi Descrizione delle librerie client.

Console

Segui queste istruzioni per eseguire query su un indice VPC dalla console.

  1. Nella sezione Vertex AI della console Google Cloud, vai alla sezione Esegui il deployment e utilizza. Seleziona Ricerca vettoriale.

    Vai a Ricerca vettoriale

  2. Seleziona l'indice VPC su cui vuoi eseguire una query. Viene visualizzata la pagina Informazioni sull'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 lo strumento open source grpc_cli o l'SDK Vertex AI per Python.

Impostazioni al momento della query che influiscono sul rendimento

I seguenti parametri relativi al momento della query possono influire su latenza, disponibilità e costo quando utilizzi la ricerca vettoriale. Queste indicazioni si applicano alla maggior parte dei casi. Tuttavia, fai sempre esperimenti con le configurazioni per assicurarti che funzionino per il 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 ciascun shard.

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

L'aumento del valore di approximateNeighborsCount può influire sul rendimento nei seguenti modi:

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

La diminuzione del valore di approximateNeighborsCount può influire sul rendimento nei seguenti modi:

  • Richiamo: diminuito
  • Latenza: potenzialmente in diminuzione
  • Disponibilità: nessun impatto
  • Costo: può ridurre i costi perché vengono elaborati meno dati durante una ricerca
setNeighborCount Specifica il numero di risultati che vuoi che la query restituisca.

I valori inferiori o uguali a 300 mantengono un buon rendimento nella maggior parte dei casi d'uso. Per valori più elevati, esegui il test per il tuo caso d'uso specifico.

fractionLeafNodesToSearch Controlla la percentuale di nodi foglia da visitare durante la ricerca dei vicini più prossimi. Questo è correlato al leafNodeEmbeddingCount in quanto più embedding per nodo a foglia, più dati esaminati per foglia.

L'aumento del valore di fractionLeafNodesToSearch può influire sul rendimento nei seguenti modi:

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

La diminuzione del valore di fractionLeafNodesToSearch può influire sul rendimento nei seguenti modi:

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

Passaggi successivi