Partage via


VECTOR_NORMALIZE (Transact-SQL)

S’applique à : Base de données SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL dans Microsoft Fabric

Permet VECTOR_NORMALIZE de prendre un vecteur comme entrée et de retourner 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 normalisés automatiquement. 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, avec des modèles Machine Learning ou des 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, 'norm2' )
FROM ...

Note

VECTOR_NORMALIZEest disponible dans Azure SQL Managed Instance avec la stratégie de mise à jourSQL Server 2025 ou Always-up-to-date.

Syntax

Conventions de la syntaxe Transact-SQL

VECTOR_NORMALIZE ( vector , norm_type )

Arguments

vector

Expression qui prend la valeur du type de données vectorielle .

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 - Qui 1-normest la somme des valeurs absolues des composants vectoriels.
  • norm2 - La 2-normnorme euclide, également connue sous le nom de 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 en fonction de la norme donnée.

Si l’entrée est NULL, le résultat retourné est également NULL.

Une erreur est retournée si norm_type n’est pas un type de norme valide et si le vecteur n’est pas du type de données vectorielle .

Examples

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 AS VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'),
       VECTOR_NORMALIZE(@v, 'norminf');