VectorDistance (dotaz NoSQL)
PLATÍ PRO: NoSQL
Vrátí skóre podobnosti mezi dvěma zadanými vektory.
Syntaxe
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
Argumenty
Parametr | Popis |
---|---|
vector_expr_1 |
float32 Pole nebo menší. |
vector_expr_2 |
float32 Pole nebo menší. |
bool_expr |
Volitelná logická hodnota určující způsob použití vypočítané hodnoty ve výrazu ORDER BY. Pokud true se použije hrubá síla. Hodnota false používá libovolný index definovaný pro vlastnost vektoru, pokud existuje. Výchozí hodnota je false . |
obj_expr |
Volitelný literál objektu ve formátu JSON, který slouží k určení možností pro výpočet vektorové vzdálenosti. Platné položky zahrnují distanceFunction a dataType a .searchListSizeMultiplier |
Podporované parametry pro volitelné obj_expr
Parametr | Popis |
---|---|
distanceFunction |
Metrika použitá k výpočtu vzdálenosti a podobnosti. |
dataType |
Datový typ vektorů. float32 , int8 uint8 hodnoty. Výchozí hodnota je float32 . |
searchListSizeMultiplier |
Celé číslo určující velikost vyhledávacího seznamu při provádění vektorového vyhledávání. Zvýšení této efektivity může zvýšit přesnost na úkor nákladů na RU a latence. Min=1, Default=5, Max=100. |
Podporované metriky pro distanceFunction
:
cosine
, který obsahuje hodnoty od-1
(nejméně podobné) (+1
nejvíce podobné).dotproduct
, který obsahuje hodnoty od-∞
() (-inf
nejméně podobné) na+∞
(+inf
) (nejvíce podobné).euclidean
, který obsahuje hodnoty od0
(nejvíce podobné) na+∞
(+inf
) (nejméně podobné).
Návratové typy
Vrátí číselný výraz, který vyčíslí skóre podobnosti mezi dvěma výrazy.
Příklady
Tento první příklad ukazuje 10 nejlepších vektorových vyhledávacích dotazů s pouze požadovanými argumenty. Jedna vlastnost se promítá spolu s skóre vráceným parametrem VectorDistance
. Potom uživatelem ORDER BY
vytvoříme klauzuli pro řazení VectorDistance
skóre v pořadí od nejpodobnějšího po nejnižší.
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)
Tento další příklad obsahuje také volitelné argumenty pro 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'})
Důležité
Vždy použijte TOP N
klauzuli v SELECT
příkazu dotazu. V opačném případě se vektorové vyhledávání pokusí vrátit mnohem více výsledků a dotaz bude stát více RU a bude mít vyšší latenci, než je potřeba.
Poznámky
- Tato funkce vyžaduje povolení funkce NoSQL Vector Search ve službě Azure Cosmos DB.
- Tato funkce využívá vektorový index.
- Pokud
false
je uveden jako volitelnýbool_expr
, pak vektor index definovaný v cestě se použije, pokud existuje. Pokud není na vektorové cestě definován žádný index, vrátí se tato funkce k úplnému prohledávání a bude se účtovat vyšší poplatky za RU a vyšší latence, než kdyby používala vektorový index. - Pokud
VectorDistance
se použije vORDER BY
klauzuli, není nutné proORDER BY
výsledky zadat žádný směr, protože výsledky jsou vždy seřazeny v pořadí od většiny podobných (první) k nejnižší (poslední) na základě použité metriky podobnosti. - Výsledek se vyjadřuje jako skóre podobnosti.