Sdílet prostřednictvím


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 truese 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 dataTypea .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, int8uint8 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 -∞ () (-infnejméně podobné) na +∞ (+inf) (nejvíce podobné).
  • euclidean, který obsahuje hodnoty od 0 (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 v ORDER BY klauzuli, není nutné pro ORDER 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.