Dela via


VectorDistance (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Returnerar likhetspoängen mellan två angivna vektorer.

Syntax

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

Argument

Parameter Beskrivning
vector_expr_1 En matris med float32 eller mindre.
vector_expr_2 En matris med float32 eller mindre.
bool_expr Ett valfritt booleskt värde som anger hur det beräknade värdet används i ett ORDER BY-uttryck. Om trueanvänds brute force. Ett värde false för använder ett index som definierats för vektoregenskapen, om det finns. Standardvärdet är false.
obj_expr En valfri JSON-formaterad objektliteral som används för att ange alternativ för vektoravståndsberäkningen. Giltiga objekt är distanceFunction, dataTypeoch searchListSizeMultiplier.

Parametrar som stöds för det valfria obj_expr

Parameter Beskrivning
distanceFunction Måttet som används för att beräkna avstånd/likhet.
dataType Datatypen för vektorerna. float32, int8, uint8 värden. Standardvärdet är float32.
searchListSizeMultiplier Ett heltal som anger söklistans storlek när en vektorsökning genomförs på DiskANN-indexet. Om du ökar detta kan du förbättra noggrannheten på bekostnad av RU-kostnader och svarstider. Min=1, Default=5, Max=100.
quantizedVectorListMultiplier Ett heltal som anger söklistans storlek när en vektorsökning genomförs på quantizedFlat-indexet. Om du ökar detta kan du förbättra noggrannheten på bekostnad av RU-kostnader och svarstider. Min=1, Default=5, Max=100.

Mått som stöds för distanceFunction är:

  • cosine, som har värden från -1 (minst lika) till +1 (mest liknande).
  • dotproduct, som har värden från -∞ (-inf) (minst lika) till +∞ (+inf) (mest liknande).
  • euclidean, som har värden från 0 (mest liknande) till +∞ (+inf) (minst lika).

Returtyper

Returnerar ett numeriskt uttryck som räknar upp likhetspoängen mellan två uttryck.

Exempel

Det här första exemplet visar en topp 10-vektorsökningsfråga med endast de argument som krävs. En egenskap projiceras, tillsammans med poängen som returneras av VectorDistance. Sedan använder vi en ORDER BY sats för att sortera VectorDistance poäng i ordning från de flesta som liknar minst.

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

I nästa exempel finns även valfria argument för VectorDistance

SELECT TOP 10 c.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'})

Viktigt!

Använd alltid en TOP N sats i instruktionen för SELECT en fråga. Annars försöker vektorsökningen returnera många fler resultat och frågan kostar fler RU:er och har högre svarstid än nödvändigt.

Kommentarer

  • Den här funktionen kräver aktivering av funktionen Azure Cosmos DB NoSQL Vector Search.
  • Den här funktionen drar nytta av ett vektorindex
  • Om false anges som valfritt bool_expranvänds det vektorindex som definierats på sökvägen, om det finns något. Om inget index har definierats på vektorsökvägen återgår den här funktionen till fullständig genomsökning och medför högre RU-avgifter och högre svarstid än om du använder ett vektorindex.
  • När VectorDistance används i en ORDER BY sats behöver ingen riktning anges för ORDER BY eftersom resultaten alltid sorteras i ordning efter de flesta liknande (först) minst lika (sista) baserat på likhetsmåttet som används.
  • Resultatet uttrycks som en likhetspoäng.