Udostępnij za pośrednictwem


VectorDistance (zapytanie NoSQL)

DOTYCZY: NoSQL

Zwraca wynik podobieństwa między dwoma określonymi wektorami.

Składnia

VectorDistance(<vector_expr1>, <vector_expr2>, [<bool_expr>], [<obj_expr>])  

Argumenty

opis
spatial_expr_1 Tablica lub float32 mniejsza.
spatial_expr_2 Tablica lub float32 mniejsza.
bool_expr 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 Literał obiektu sformatowanego w formacie JSON służący do określania opcji obliczania odległości wektorowej. Prawidłowe elementy to i distanceFunction dataType.
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.

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',})

Uwagi

  • Ta funkcja wymaga rejestracji w funkcji wyszukiwania wektorowego NoSQL w usłudze Azure Cosmos DB.
  • Ta funkcja korzysta z indeksu wektorowego
  • Jeśli false parametr jest podany jako opcjonalny bool_expr, jest używany 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.