VECTOR_NORMALIZE (Transact-SQL) (wersja zapoznawcza)
Dotyczy:azure SQL Database
Nuta
Ten typ danych jest w wersji zapoznawczej i może ulec zmianie. Pamiętaj, aby zapoznać się z warunkami użycia wersji zapoznawczej w dokumencie Umowy dotyczące poziomu usług (SLA) dla usług online.
VECTOR_NORMALIZE
przyjmuje wektor jako dane wejściowe i zwraca znormalizowany wektor, który jest wektorem skalowanym, aby mieć długość 1 w danym typie normy .
Ta standaryzacja ma kluczowe znaczenie w różnych aplikacjach sztucznej inteligencji, w których wektory reprezentują różne formy danych, takie jak zawartość wizualna, informacje tekstowe lub sygnały dźwiękowe. Dzięki normalizacji wektorów zapewniamy jednolitość w ich skali, co jest szczególnie przydatne w przypadku operacji opartych na mierzeniu odległości wektorów lub grupowaniu i rozróżnianiu punktów danych.
Chociaż modele usługi Azure OpenAI zapewniają znormalizowane wektory, istnieją inne modele i struktury, w których wektory nie są automatycznie znormalizowane. Na przykład w bibliotece Gensim, która jest często używana do przetwarzania zadań przetwarzania języka naturalnego, wektory nie zawsze są domyślnie znormalizowane.
Użytkownicy często muszą znormalizować wektory ręcznie lub używać określonych funkcji udostępnianych przez bibliotekę, aby upewnić się, że wektory mają długość jednostki.
Ogólnie rzecz biorąc, podczas pracy z modelami uczenia maszynowego lub osadzaniem wektorów ważne jest sprawdzenie dokumentacji lub danych wyjściowych modelu w celu określenia, czy wektory są znormalizowane. Jeśli normalizacja jest wymagana dla aplikacji, może być konieczne zaimplementowanie jej jako oddzielnego kroku, jeśli model domyślnie nie udostępnia znormalizowanych wektorów.
Jeśli na przykład chcesz znormalizować wektor przy użyciu normy euklidesowej (która jest najczęściej spotykanym typem norm), możesz użyć:
SELECT VECTOR_NORMALIZE ( vector_column, 'norm2' )
FROM ...
Składnia
Transact-SQL konwencje składni
VECTOR_NORMALIZE ( vector_column, norm_type )
Argumenty
vector_column
Wyrażenie, które oblicza wektor. Ta kolumna musi być typu danych
norm_type
Ciąg o nazwie typu normy, który ma być używany do obliczania normy danego wektora. Obsługiwane są następujące typy norm:
-
norm1
— 1-norma, która jest sumą wartości bezwzględnych składników wektorów. -
norm2
- 2-normę, znaną również jako normę euklidesową, która jest pierwiastek kwadratowy sumy kwadratów składników wektorów. -
norminf
— norma nieskończoności, która jest maksymalną wartością bezwzględną składników wektorów.
Wartość zwracana
Wynik jest wektorem o tym samym kierunku co wektor wejściowy, ale o długości 1 zgodnie z daną normą.
Jeśli dane wejściowe są NULL
, zwrócony wynik będzie również NULL
.
Zwracany jest błąd, jeśli norm_type nie jest prawidłowym typem normy i jeśli vector_column nie jest typu danych wektora.
Przykłady
Przykład 1
Normalizacja wektora:
CREATE TABLE dbo.vectors
(
id INT PRIMARY KEY,
v VECTOR(3) NOT NULL
);
INSERT INTO dbo.vectors (ID, v) VALUES
(1, '[0.1, -2, 42]'),
(2, '[2, 0.1, -42]');
SELECT id, VECTOR_NORMALIZE(v, 'norm2') AS nv FROM dbo.vectors;
Przykład 2
DECLARE @v VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');