Condividi tramite


VectorDistance (query NoSQL)

SI APPLICA A: NoSQL

Restituisce il punteggio di somiglianza tra due vettori specificati.

Sintassi

VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)  

Argomenti

Parametro Descrizione
vector_expr_1 Una matrice di float32 o più piccola.
vector_expr_2 Una matrice di float32 o più piccola.
bool_expr Valore booleano facoltativo che specifica la modalità di utilizzo del valore calcolato in un'espressione ORDER BY. Se true, verrà usata la forza bruta. Un valore di false usa qualsiasi indice definito nella proprietà vector, se esistente. Il valore predefinito è false.
obj_expr Valore letterale oggetto formattato JSON facoltativo usato per specificare le opzioni per il calcolo della distanza del vettore. Gli elementi validi includono distanceFunction e dataTypee searchListSizeMultiplier.

Parametri supportati per l'opzione facoltativa obj_expr

Parametro Descrizione
distanceFunction Metrica usata per calcolare distanza/somiglianza.
dataType Il tipo di dati dei vettori. float32, int8, uint8 valori . Il valore predefinito è float32.
searchListSizeMultiplier Intero che specifica le dimensioni dell'elenco di ricerca durante l'esecuzione di una ricerca vettoriale. L'aumento di questo può migliorare l'accuratezza a scapito del costo e della latenza delle UR. Min=1, Default=5, Max=100.

Le metriche supportate per distanceFunction sono:

  • cosine, che ha valori da -1 (meno simili) a +1 (più simili).
  • dotproduct, che ha valori da -∞ (-inf) (meno simile) a +∞ (+inf) (più simile).
  • euclidean, che ha valori compresi tra 0 (più simili) a +∞ (+inf) (meno simili).

Tipi restituiti

Restituisce un'espressione numerica che enumera il punteggio di somiglianza tra due espressioni.

Esempi

Questo primo esempio mostra una query di ricerca dei primi 10 vettori con solo gli argomenti obbligatori. Viene proiettata una proprietà, insieme al punteggio restituito da VectorDistance. Si usa quindi una ORDER BY clausola per ordinare VectorDistance i punteggi in ordine dal più simile al minimo.

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)

Questo esempio successivo include anche argomenti facoltativi per VectorDistance

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})

Importante

Usare sempre una TOP N clausola nell'istruzione SELECT di una query. In caso contrario, la ricerca vettoriale tenterà di restituire molti più risultati e la query costerà più UR e avrà una latenza maggiore del necessario.

Osservazioni:

  • Questa funzione richiede l'abilitazione della funzionalità Ricerca vettoriale NoSQL di Azure Cosmos DB.
  • Questa funzione sfrutta un indice vettoriale
  • Se false viene specificato come facoltativo bool_expr, viene usato l'indice vettoriale definito nel percorso, se presente. Se non viene definito alcun indice nel percorso vettoriale, questa funzione ripristina l'analisi completa e comporta addebiti ur più elevati e una latenza superiore rispetto all'uso di un indice vettoriale.
  • Quando VectorDistance viene usato in una ORDER BY clausola, non è necessario specificare alcuna direzione per perché ORDER BY i risultati vengono sempre ordinati in ordine di più simile (primo) a meno simile (ultimo) in base alla metrica di somiglianza usata.
  • Il risultato viene espresso come un punteggio di somiglianza.