VECTOR_NORMALIZE (Transact-SQL) (préversion)
S’applique à : Azure SQL Database
Remarque
Ce type de données est en préversion et peut être modifié. Veillez à lire les termes d’utilisation de la préversion dans le document Contrats de niveau de service (SLA) pour Services en ligne.
VECTOR_NORMALIZE
prend un vecteur comme entrée et retourne le vecteur normalisé, qui est un vecteur mis à l’échelle pour avoir une longueur de 1 dans un type de norme donné.
Cette normalisation est essentielle dans diverses applications d’intelligence artificielle où les vecteurs représentent différentes formes de données, telles que du contenu visuel, des informations textuelles ou des signaux audio. En normalisant les vecteurs, nous assurons l’uniformité dans leur échelle, ce qui est particulièrement utile pour les opérations qui s’appuient sur la mesure des distances vectorielles ou pour le regroupement et la distinction des points de données.
Bien que les modèles d’Azure OpenAI fournissent des vecteurs normalisés, il existe d’autres modèles et infrastructures où les vecteurs ne sont pas automatiquement normalisés. Par exemple, dans la bibliothèque Gensim, qui est couramment utilisée pour les tâches de traitement du langage naturel, les vecteurs ne sont pas toujours normalisés par défaut.
Les utilisateurs doivent souvent normaliser les vecteurs manuellement ou utiliser des fonctions spécifiques fournies par la bibliothèque pour s’assurer que les vecteurs sont de longueur unitaire.
En général, lors de l’utilisation de modèles Machine Learning ou d’incorporations de vecteurs, il est important de vérifier la documentation ou la sortie du modèle pour déterminer si les vecteurs sont normalisés. Si la normalisation est requise pour votre application, vous devrez peut-être l’implémenter en tant qu’étape distincte si le modèle ne fournit pas de vecteurs normalisés par défaut.
Par exemple, si vous souhaitez un vecteur normalisé à l’aide de la norme Euclide (qui est le type de norme le plus courant), vous pouvez utiliser :
SELECT VECTOR_NORMALIZE ( vector_column, 'norm2' )
FROM ...
Syntaxe
Conventions de la syntaxe Transact-SQL
VECTOR_NORMALIZE ( vector_column, norm_type )
Arguments
vector_column
Expression qui prend la valeur d’un vecteur. Cette colonne doit être du type de données vectorielles .
norm_type
Chaîne portant le nom du type de norme à utiliser pour calculer la norme du vecteur donné. Les types de norme suivants sont pris en charge :
norm1
- La norme 1, qui est la somme des valeurs absolues des composants vectoriels.norm2
- La norme 2, également appelée norme euclide, qui est la racine carrée de la somme des carrés des composants vectoriels.norminf
- Norme d’infini, qui est la valeur maximale des valeurs absolues des composants vectoriels.
Valeur retournée
Le résultat est un vecteur ayant la même direction que le vecteur d’entrée, mais avec une longueur de 1.
Si l’entrée est NULL
, le résultat retourné sera NULL
également .
Une erreur est retournée si norm_type n’est pas un type de norme valide et si le vector_column n’est pas du type de données vectorielles .
Exemples
Exemple 1
Normaliser un vecteur :
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;
Exemple 2
DECLARE @v VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');