Udostępnij za pośrednictwem


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 truejest 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, , int8uint8 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 +∞ () (+infnajbardziej podobne).
  • euclidean, który ma wartości z 0 (najbardziej podobne) do +∞ () (+infnajmniej 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 VectorDistancewartość . 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 opcjonalny bool_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 klauzuli ORDER BY , nie trzeba określać kierunku dla parametru ORDER 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.