VectorDistance (zapytanie NoSQL)
DOTYCZY: NoSQL
Zwraca wynik podobieństwa między dwoma określonymi wektorami.
Składnia
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
Argumenty
Parametr | Opis |
---|---|
vector_expr_1 |
Tablica lub float32 mniejsza. |
vector_expr_2 |
Tablica lub float32 mniejsza. |
bool_expr |
Opcjonalna wartość logiczna określająca sposób użycia obliczonej wartości w wyrażeniu ORDER BY. Jeśli true jest używana wartość , zostanie użyta siła siłowa. Wartość używa dowolnego indeksu false zdefiniowanego we właściwości wektora, jeśli istnieje. Wartość domyślna to false . |
obj_expr |
Opcjonalny literał obiektu sformatowanego w formacie JSON służący do określania opcji obliczania odległości wektorowej. Prawidłowe elementy to distanceFunction i dataType , i searchListSizeMultiplier . |
Obsługiwane parametry opcjonalne obj_expr
Parametr | Opis |
---|---|
distanceFunction |
Metryka używana do obliczania odległości/podobieństwa. |
dataType |
Typ danych wektorów. float32 , , int8 uint8 wartości. Wartość domyślna to float32 . |
searchListSizeMultiplier |
Liczba całkowita określająca rozmiar listy wyszukiwania podczas przeprowadzania wyszukiwania wektorowego. Zwiększenie tego poziomu może poprawić dokładność kosztem jednostek RU i opóźnieniami. Min=1, Default=5, Max=100. |
Obsługiwane metryki dla distanceFunction
programu to:
cosine
, który ma wartości z-1
(najmniej podobne) do+1
(najbardziej podobne).dotproduct
, który ma wartości z-∞
(-inf
) (najmniej podobne) do+∞
() (+inf
najbardziej podobne).euclidean
, który ma wartości z0
(najbardziej podobne) do+∞
() (+inf
najmniej podobne).
Typy zwracane
Zwraca wyrażenie liczbowe, które wylicza wynik podobieństwa między dwoma wyrażeniami.
Przykłady
W tym pierwszym przykładzie przedstawiono 10-wektorowe zapytanie wyszukiwania z tylko wymaganymi argumentami. Przewidywana jest jedna właściwość wraz z wynikiem zwróconym przez VectorDistance
wartość . Następnie użytkownik jest klauzulą ORDER BY
do sortowania VectorDistance
wyników w kolejności od najbardziej podobnej do najmniejszej.
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)
W następnym przykładzie uwzględniono również opcjonalne argumenty dla 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'})
Ważne
Zawsze używaj TOP N
klauzuli w SELECT
instrukcji zapytania. W przeciwnym razie wyszukiwanie wektorów spróbuje zwrócić o wiele więcej wyników, a zapytanie będzie kosztować więcej jednostek RU i mieć większe opóźnienie niż jest to konieczne.
Uwagi
- Ta funkcja wymaga włączenia funkcji wyszukiwania wektorowego NoSQL usługi Azure Cosmos DB.
- Ta funkcja korzysta z indeksu wektorowego
- Jeśli
false
parametr jest podany jako opcjonalnybool_expr
, używany jest indeks wektorowy zdefiniowany na ścieżce, jeśli istnieje. Jeśli na ścieżce wektorowej nie zdefiniowano żadnego indeksu, ta funkcja przywraca pełne skanowanie i generuje wyższe opłaty za jednostkę RU i większe opóźnienie niż w przypadku użycia indeksu wektorowego. - Gdy
VectorDistance
jest używany w klauzuliORDER BY
, nie trzeba określać kierunku dla parametruORDER BY
, ponieważ wyniki są zawsze sortowane w kolejności od najbardziej podobnych (pierwszy) do najmniej podobnych (ostatni) na podstawie użytej metryki podobieństwa. - Wynik jest wyrażony jako wynik podobieństwa.