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 | Description |
---|---|
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 true anvä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 inkluderar distanceFunction och dataType , och searchListSizeMultiplier . |
Parametrar som stöds för det valfria obj_expr
Parameter | Description |
---|---|
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. 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ån0
(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 s.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 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'})
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 valfrittbool_expr
anvä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 enORDER BY
sats behöver ingen riktning anges förORDER 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.