VECTOR_NORMALIZE (Transact-SQL) (versão prévia)
Aplica-se a: Banco de Dados SQL do Azure
Observação
Esse tipo de dados está em versão prévia e está sujeito a alterações. Não deixe de ler os termos de uso da versão prévia no documento SLA (Contratos de Nível de Serviço) para serviços online.
VECTOR_NORMALIZE
usa um vetor como entrada e retorna o vetor normalizado, que é um vetor dimensionado para ter um comprimento de 1 em um determinado tipo de norma.
Essa padronização é crucial em várias aplicações de inteligência artificial em que os vetores representam diferentes formas de dados, como conteúdo visual, informações textuais ou sinais de áudio. Ao normalizar vetores, garantimos uniformidade em sua escala, o que é particularmente útil para operações que dependem da medição de distâncias vetoriais ou para agrupar e distinguir pontos de dados.
Embora os modelos do Azure OpenAI forneçam vetores normalizados, há outros modelos e estruturas em que os vetores não são normalizados automaticamente. Por exemplo, na biblioteca Gensim, que é comumente usada para tarefas de processamento de linguagem natural, os vetores nem sempre são normalizados por padrão.
Os usuários geralmente precisam normalizar os vetores manualmente ou usar funções específicas fornecidas pela biblioteca para garantir que os vetores tenham comprimento unitário.
Em geral, ao trabalhar com modelos de aprendizado de máquina ou inserções de vetor, é importante verificar a documentação ou a saída do modelo para determinar se os vetores são normalizados. Se a normalização for necessária para seu aplicativo, talvez seja necessário implementá-la como uma etapa separada se o modelo não fornecer vetores normalizados por padrão.
Por exemplo, se você quiser um vetor normalizado usando a norma euclidiana (que é o tipo de norma mais comum), você pode usar:
SELECT VECTOR_NORMALIZE ( vector_column, 'norm2' )
FROM ...
Sintaxe
Convenções de sintaxe de Transact-SQL
VECTOR_NORMALIZE ( vector_column, norm_type )
Argumentos
vector_column
Uma expressão que é avaliada como um vetor. Essa coluna deve ser do tipo de dados vetorial .
norm_type
Uma string com o nome do tipo de norma a ser usado para calcular a norma do vetor fornecido. Os seguintes tipos de norma são suportados:
norm1
- A norma 1, que é a soma dos valores absolutos dos componentes vetoriais.norm2
- A norma 2, também conhecida como norma euclidiana, que é a raiz quadrada da soma dos quadrados dos componentes vetoriais.norminf
- A norma do infinito, que é o máximo dos valores absolutos dos componentes vetoriais.
Valor retornado
O resultado é um vetor com a mesma direção que o vetor de entrada, mas com um comprimento de 1.
Se a entrada for NULL
, o resultado retornado também será NULL
.
Um erro será retornado se norm_type não for um tipo de norma válido e se o vector_column não for do tipo de dados vetorial .
Exemplos
Exemplo 1
Normalize um vetor:
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;
Exemplo 2
DECLARE @v VECTOR(3) = '[1, 2, 3]';
SELECT VECTOR_NORMALIZE(@v, 'norm1'), VECTOR_NORMALIZE(@v, 'norminf');