Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x)
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
banco de dados SQL no Microsoft Fabric
A AI_GENERATE_EMBEDDINGS função cria embeddings (matrizes vetoriais) usando uma definição pré-criada de modelo de IA armazenada no banco de dados.
Sintaxe
Convenções de sintaxe de Transact-SQL
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Argumentos
origem
Uma expressão de qualquer tipo de caráter, como nvarchar, varchar, nchar ou char.
model_identifier
O nome de um modelo externo definido como um EMBEDDINGS tipo usado para criar o array vetorial de embeddings.
Para obter mais informações, consulte CREATE EXTERNAL MODEL.
optional_json_request_body_parameters
Uma lista válida de parâmetros adicionais em formato JSON. A função adiciona esses parâmetros ao corpo da mensagem da requisição REST antes de enviá-la para o local de endpoint do modelo externo. Esses parâmetros dependem do que o endpoint do modelo externo suporta e aceita.
Tipos de retorno
AI_GENERATE_EMBEDDINGS retorna uma tabela de coluna única cujas linhas são as matrizes de vetor de inserção geradas retornadas como JSON.
Formato de retorno
O formato do JSON retornado é o seguinte:
[
0.0023929428,
0.00034713413,
-0.0023142276,
-0.025654867,
-0.011492423,
0.0010358924,
-0.014836246,
0.0035484824,
0.000045630233,
-0.027581815,
0.023816079,
0.005012586,
-0.027732948,
-0.010088143,
...
-0.014571763
]
Observações
AI_GENERATE_EMBEDDINGSestá disponível na Instância Gerenciada de SQL do Azure com a política de atualizaçãoAlways-up-to-date.
Pré-requisitos
Para usar AI_GENERATE_EMBEDDINGS, certifique-se de cumprir os seguintes pré-requisitos:
Ative
sp_invoke_external_endpointno banco de dados, com o seguinte comando:EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Observação
No Banco de Dados SQL do Azure e no SQL Database no Fabric, a
external rest endpoint enabledopção de configuração do sistema está ativada por padrão.
Para mais informações sobre como criar endpoints de embedding, revise o processo para Azure OpenAI em Fábrica de IA do Azure Models, OpenAI ou Ollama.
- Crie um modelo externo do
EMBEDDINGStipo, acessível por meio das concessões, funções e permissões corretas.
Parâmetros opcionais
Use o optional_json_request_body_parameters parâmetro em AI_GENERATE_EMBEDDINGS quando precisar adicionar um parâmetro de endpoint ao corpo da mensagem de solicitação de embeddings. Adicionar um parâmetro opcional sobrepõe o valor em tempo de execução se a definição do modelo incluir esse parâmetro.
Por exemplo, se o modelo externo contiver o parâmetro para dimensions definido como 1.536, você pode passar esse parâmetro optional_json_request_body_parameters em tempo de execução com um novo valor.
No exemplo a seguir, o dimensions parâmetro no modelo é substituído:
json_object("dimensions":755)
O valor para optional_json_request_body_parameters o qual você transfere deve ser JSON válido.
Eventos Estendidos (XEvent)
AI_GENERATE_EMBEDDINGS tem um evento estendido (ai_generate_embeddings_summary) que você pode ativar para solução de problemas. Ele contém informações sobre a solicitação e resposta REST, como código de status, quaisquer erros encontrados e o nome do modelo utilizado. O evento external_rest_endpoint_summary estendido contém informações adicionais que podem ajudar na solução de problemas e depuração de requisições REST.
Exemplos
Um. Criar inserções com uma instrução SELECT
O exemplo a seguir mostra como usar a AI_GENERATE_EMBEDDINGS função com uma instrução select que retorna resultados em um array JSON.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. Criar inserções com uma instrução SELECT usando AI_GENERATE_CHUNKS
O exemplo a seguir mostra como usar a AI_GENERATE_EMBEDDINGS função com a função AI_GENERATE_CHUNKS para passar texto dividido em tamanhos de blocos especificados com uma instrução select que retorna resultados do array vetorial.
SELECT id,
title,
large_text,
AI_GENERATE_EMBEDDINGS(c.chunk_text USE MODEL MyAzureOpenAIModel)
FROM myTable
CROSS APPLY AI_GENERATE_CHUNKS (
SOURCE = large_text,
CHUNK_TYPE = FIXED,
CHUNK_SIZE = 10
) AS c;
C. Criar inserções com uma atualização de tabela
O exemplo a seguir mostra como usar a AI_GENERATE_EMBEDDINGS função com uma instrução de atualização de tabela para retornar os resultados da matriz de vetor em uma coluna de tipo de dados de vetor.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;
D. Criar inserções com uma instrução SELECT e PARÂMETROS
O exemplo a seguir mostra como usar a AI_GENERATE_EMBEDDINGS função com uma instrução select e passar parâmetros opcionais para o ponto de extremidade, que retorna os resultados da matriz de vetor.
DECLARE @params JSON = N'{"dimensions":768}'
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS @params)
FROM myTable;
E. Geração de embeddings de retentativa com retry_count opção PARAMETERS
Se a chamada de inserções encontrar códigos de status HTTP indicando problemas temporários, você poderá configurar a solicitação para tentar novamente automaticamente.
Para especificar o número de tentativas, adicione o JSON a seguir à PARAMETERS opção. Esse valor deve ser um inteiro positivo entre zero (0) e dez (10) inclusive, e não pode ser NULL.
Observação
Se um retry_count valor for especificado na AI_GENERATE_EMBEDDINGS consulta, ele substitui ( retry_count se definido) na configuração do modelo externo.
DECLARE @params JSON = N'{"sql_rest_options":{"retry_count":10}} '
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS @params)
FROM myTable;
F. Um exemplo completo com criação de modelos, fragmentação e geração de embedding
O exemplo a seguir demonstra um processo completo para deixar seus dados prontos para IA usando a Chave de API do OpenAI do Azure:
Use CRIAR MODELO EXTERNO para registrar seu modelo de embedding e torná-lo acessível.
Divida o conjunto de dados em partes menores com AI_GENERATE_CHUNKS, para que os dados se encaixem na janela de contexto do modelo e melhorem a precisão da recuperação.
Gerar embeddings usando
AI_GENERATE_EMBEDDINGS.Insira os resultados em uma tabela com um tipo de dado vetorial.
Observação
Substitua <password> por uma senha válida.
Ative a invocação externa do endpoint REST no servidor de banco de dados:
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
Crie uma chave mestra de banco de dados:
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
Crie credenciais de acesso ao Azure OpenAI usando uma chave:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Crie um modelo externo para chamar o endpoint REST de embeddings do Azure OpenAI:
CREATE EXTERNAL MODEL MyAzureOpenAIModel
WITH (
LOCATION = 'https://my-azure-openai-endpoint.cognitiveservices.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15',
API_FORMAT = 'Azure OpenAI',
MODEL_TYPE = EMBEDDINGS,
MODEL = 'text-embedding-ada-002',
CREDENTIAL = [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
);
Crie uma tabela com texto para fragmentar e insira dados:
CREATE TABLE textchunk
(
text_id INT IDENTITY (1, 1) PRIMARY KEY,
text_to_chunk NVARCHAR (MAX)
);
GO
INSERT INTO textchunk (text_to_chunk)
VALUES ('All day long we seemed to dawdle through a land which was full of beauty of every kind. Sometimes we saw little towns or castles on the top of steep hills such as we see in old missals; sometimes we ran by rivers and streams which seemed from the wide stony margin on each side of them to be subject to great floods.'),
('My Friend, Welcome to the Carpathians. I am anxiously expecting you. Sleep well to-night. At three to-morrow the diligence will start for Bukovina; a place on it is kept for you. At the Borgo Pass my carriage will await you and will bring you to me. I trust that your journey from London has been a happy one, and that you will enjoy your stay in my beautiful land. Your friend, DRACULA')
GO
Crie uma nova tabela para armazenar o texto em blocos e as incorporações vetoriais:
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR(1536)
);
Insira o texto em blocos e as incorporações vetoriais na tabela text_embeddings usando AI_GENERATE_CHUNKS e AI_GENERATE_EMBEDDINGS:
INSERT INTO text_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk,
AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAIModel)
FROM textchunk AS t
CROSS APPLY AI_GENERATE_CHUNKS (
SOURCE = t.text_to_chunk,
CHUNK_TYPE = FIXED,
CHUNK_SIZE = 100
) AS c;
Exibir os resultados
SELECT *
FROM text_embeddings;