Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: Предварительная версия SQL Server 2025 (17.x)
AI_GENERATE_EMBEDDINGS
— это встроенная функция, которая создает внедренные (векторные массивы) с помощью предварительно созданного определения модели искусственного интеллекта, хранящегося в базе данных.
Синтаксис
Соглашения о синтаксисе Transact-SQL
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Аргументы
источник
Выражение любого типа символа (например, nvarchar, varchar, nchar или char).
model_identifier
Имя ВНЕШНЕЙ МОДЕЛИ , определенное как EMBEDDING
тип, используемый для создания массива векторов внедрения.
Дополнительные сведения см. в статье CREATE EXTERNAL MODEL.
optional_json_request_body_parameters
Допустимый список форматированных json дополнительных параметров. Эти параметры добавляются в текст сообщения запроса REST перед отправкой в расположение конечной EXTERNAL MODEL
точки. Эти параметры не зависят от того, что EXTERNAL MODEL
поддерживает и принимает конечная точка.
Типы возвращаемых данных
AI_GENERATE_EMBEDDINGS
возвращает таблицу с одним столбцом, строки которой представляют собой созданные внедренные массивы векторов, возвращаемые в формате JSON.
Формат возврата
Формат возвращаемого JSON выглядит следующим образом:
[
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
]
Замечания
Предпосылки
Для использования AI_GENERATE_EMBEDDINGS
необходимо выполнить два предварительных требования:
sp_invoke_external_endpoint
необходимо включить в базе данных с помощью sp_configure.ВНЕШНЮЮ МОДЕЛЬ
EMBEDDINGS
типа, доступную с помощью правильных грантов, ролей и /или разрешений.
Необязательные параметры
optional_json_request_body_parameters
AI_GENERATE_EMBEDDINGS
Параметр используется, когда параметр конечной точки необходимо добавить в текст сообщения запроса внедрения. Добавление необязательного параметра переопределяет значение во время выполнения, если этот параметр определен в определении модели.
Например, если EXTERNAL MODEL содержит параметр для dimensions
набора 1536, передав этот параметр во optional_json_request_body_parameters
время выполнения с новым значением, как показано здесь: json_object('dimensions':755)
dimensions
параметр модели переопределяется.
Передаваемое optional_json_request_body_parameters
значение должно быть допустимым JSON.
Создание конечных точек внедрения
Дополнительные сведения о создании конечных точек внедрения см. в процессе для Azure OpenAI, OpenAI или Ollama.
Расширенные события (XEvent)
AI_GENERATE_EMBEDDINGS
имеет расширенное событие (ai_generate_embeddings_summary
), которое можно включить для устранения неполадок. Он содержит сведения о запросе REST и ответе, например коде состояния, возникших ошибках, используемом имени модели и счетчиках маркеров, используемых конечной точкой внедрения. Расширенное событие external_rest_endpoint_summary
содержит дополнительные сведения, которые можно использовать для устранения неполадок и отладки запросов REST.
Примеры
А. Создание внедрения с помощью инструкции SELECT
В следующем примере показано, как использовать функцию AI_GENERATE_EMBEDDINGS
с инструкцией select, которая возвращает результаты векторного массива.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
В. Создание внедрения с помощью инструкции SELECT с помощью AI_GENERATE_CHUNKS
В следующем примере показано, как использовать AI_GENERATE_EMBEDDINGS
функцию с AI_GENERATE_CHUNKS
функцией для передачи текста в указанных размерах блока с инструкцией select, которая возвращает результаты массива векторов.
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 = N'FIXED' , chunk_size = 10) c;
С. Создание внедрения с помощью обновления таблицы
В следующем примере показано, как использовать AI_GENERATE_EMBEDDINGS
функцию с оператором обновления таблицы для возврата результатов векторного массива в столбец типа векторных данных.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAiModel)
FROM myTable AS t;
Д. Создание внедрения с помощью инструкции SELECT и PARAMETERS
В следующем примере показано, как использовать AI_GENERATE_EMBEDDINGS
функцию с инструкцией select и передавать необязательные параметры в конечную точку, которая возвращает результаты векторного массива.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS '{"dimensions" : 768 }')
FROM myTable;
Е. Полный пример создания блоков, AI_GENERATE_EMBEDDINGS и создания модели
Этот пример представляет собой полный поток создания МОДЕЛИ CREATE EXTERNAL, использования и использования AI_GENERATE_EMBEDDINGS
AI_GENERATE_CHUNKS для вставки результатов в таблицу с типом векторных данных. Не забудьте заменить <password>
допустимым паролем.
-- Turn external REST endpoint invocation ON in the database
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
-- Create a master key for the database
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
-- Create access credentials to Azure OpenAI using a key:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.openai.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
-- Create an external model to call the Azure OpenAI embeddings REST endpoint
CREATE EXTERNAL MODEL MyAzureOpenAiModel
WITH (
LOCATION = 'https://my-azure-openai-endpoint.openai.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.openai.azure.com/]
);
-- Create a table with text to chunk and insert data
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 country 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
-- Create a new table to hold the chunked text and vector embeddings
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR (1536)
);
-- Insert the chunked text and vector embeddings into the text_embeddings table using AI_GENERATE_CHUNKS and AI_GENERATE_EMBEDDINGS
INSERT INTO text_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk, AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAiModel)
FROM textchunk t
CROSS APPLY
AI_GENERATE_CHUNKS(source = t.text_to_chunk, chunk_type = N'FIXED', chunk_size = 100) c;
-- View the results
SELECT * FROM text_embeddings;