VECTOR_NORMALIZE (Transact-SQL) (versión preliminar)
Se aplica a: Azure SQL Database
Nota:
Este tipo de datos está en versión preliminar y está sujeto a cambios. Asegúrese de leer los términos de uso de la versión preliminar en el documento Acuerdo de Nivel de Servicio (SLA) para servicios en línea.
VECTOR_NORMALIZE
toma un vector como entrada y devuelve el vector normalizado, que es un vector escalado para tener una longitud de 1 en un tipo de norma determinado.
Esta normalización es fundamental en varias aplicaciones de inteligencia artificial en las que los vectores representan diferentes formas de datos, como contenido visual, información textual o señales de audio. Al normalizar vectores, garantizamos la uniformidad en su escala, lo que resulta especialmente útil para las operaciones que dependen de medir distancias vectoriales o para agrupar y distinguir puntos de datos.
Aunque los modelos de Azure OpenAI proporcionan vectores normalizados, hay otros modelos y marcos en los que los vectores no se normalizan automáticamente. Por ejemplo, en la biblioteca gensim, que se usa normalmente para las tareas de procesamiento de lenguaje natural, los vectores no siempre se normalizan de forma predeterminada.
A menudo, los usuarios necesitan normalizar los vectores manualmente o usar funciones específicas proporcionadas por la biblioteca para asegurarse de que los vectores tienen una longitud de unidad.
En general, al trabajar con modelos de aprendizaje automático o incrustaciones de vectores, es importante comprobar la documentación o la salida del modelo para determinar si se normalizan los vectores. Si la normalización es necesaria para la aplicación, es posible que tenga que implementarla como un paso independiente si el modelo no proporciona vectores normalizados de forma predeterminada.
Por ejemplo, si desea un vector normalizado mediante la norma euclidiana (que es el tipo de norma más común), puede usar:
SELECT VECTOR_NORMALIZE ( vector_column, 'norm2' )
FROM ...
Sintaxis
Convenciones de sintaxis de Transact-SQL
VECTOR_NORMALIZE ( vector_column, norm_type )
Argumentos
vector_column
Expresión que se evalúa como un vector. Esta columna debe ser del tipo de datos vectorial .
norm_type
Cadena con el nombre del tipo de norma que se va a usar para calcular la norma del vector especificado. Se admiten los siguientes tipos de normas:
norm1
- La norma 1, que es la suma de los valores absolutos de los componentes vectoriales.norm2
- La norma 2, también conocida como norma euclidiana, que es la raíz cuadrada de la suma de los cuadrados de los componentes vectoriales.norminf
- La norma infinity, que es el máximo de los valores absolutos de los componentes vectoriales.
Valor devuelto
El resultado es un vector con la misma dirección que el vector de entrada, pero con una longitud de 1.
Si la entrada es NULL
, el resultado devuelto también será NULL
.
Se devuelve un error si norm_type no es un tipo de norma válido y si el vector_column no es del tipo de datos vectorial .
Ejemplos
Ejemplo 1
Normalizar un vector:
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;
Ejemplo 2
DECLARE @v VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');