Partager via


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_NORMALIZEprend 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');