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 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 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 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å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 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 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.