Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2025 (17.x)
Azure SQL Database
SQL Database в Microsoft Fabric
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
Название внешней модели определяется как EMBEDDINGS тип, используемый для создания векторного массива вложения.
Дополнительные сведения см. в статье CREATE EXTERNAL MODEL.
optional_json_request_body_parameters
Допустимый список форматированных json дополнительных параметров. Эти параметры добавляются в тело сообщения REST-запроса перед отправкой на конечную точку внешней модели. Эти параметры зависят от того, что поддерживает и принимает конечная точка внешней модели.
Типы возвращаемых данных
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на базе данных следующей командой:EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Создайте внешнюю модель такого
EMBEDDINGSтипа, доступную через правильные гранты, роли и/или разрешения.
Необязательные параметры
optional_json_request_body_parameters
AI_GENERATE_EMBEDDINGS Параметр используется, когда параметр конечной точки необходимо добавить в текст сообщения запроса внедрения. Добавление необязательного параметра переопределяет значение во время выполнения, если этот параметр определен в определении модели.
Например, если внешняя модель содержит параметр , dimensions установленный в 1536, передавая этот параметр в optional_json_request_body_parameters процессе выполнения с новым значением, как показано здесь: json_object("dimensions":755), dimensions параметр на модели переопределяется.
Передаваемое optional_json_request_body_parameters значение должно быть допустимым JSON.
Создание конечных точек внедрения
Для получения дополнительной информации о создании встраивающих конечных точек ознакомьтесь с процессом Azure OpenAI в Azure AI Foundry Models, OpenAI или Ollama.
Расширенные события (XEvent)
AI_GENERATE_EMBEDDINGS имеет расширенное событие (ai_generate_embeddings_summary), которое можно включить для устранения неполадок. Он содержит информацию о запросе и ответе REST, таких как код статуса, любые ошибки, с которыми он столкнулся, и используемое имя модели. Расширенное событие external_rest_endpoint_summary содержит дополнительные сведения, которые можно использовать для устранения неполадок и отладки запросов REST.
Примеры
А. Создание внедрения с помощью инструкции SELECT
Следующий пример показывает, как использовать AI_GENERATE_EMBEDDINGS функцию с оператором select, который возвращает в JSON-массив.
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 = FIXED,
CHUNK_SIZE = 10
) AS 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 TRY_CONVERT (JSON, N'{"dimensions":768}'))
FROM myTable;
Е. Повторите генерацию вложений с retry_count опцией PARAMETERS
Если вызов внедрения обнаруживает коды состояния HTTP, указывающие на временные проблемы, можно настроить запрос для автоматического повтора.
Чтобы определить количество повторных попыток, добавьте следующий JSON в эту PARAMETERS опцию. Это значение должно быть положительным целым числом между нулём (0) и десятью (10) включительно, и не может быть NULL.
Замечание
Если retry_count значение указано в AI_GENERATE_EMBEDDINGS запросе, оно переопределяет retry_count значение (если определено) в конфигурации внешней модели.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
FROM myTable;
F. Полный пример с созданием моделей, генерацией фрагментов и встраиванием
Следующий пример демонстрирует сквозный процесс подготовки ваших данных к ИИ с помощью Azure OpenAI API Key:
Используйте CREATE EXTERNAL MODEL для регистрации и обеспечения доступности вашей модели вложения.
Разделите набор данных на меньшие части с помощью AI_GENERATE_CHUNKS, чтобы данные помещались в контекстное окно модели и повышали точность поиска.
Генерируйте вложения с помощью
AI_GENERATE_EMBEDDINGS.Вставьте результаты в таблицу с векторным типом данных.
Замечание
Замените <password> допустимым паролем.
Включите внешний вызов REST на сервере базы данных:
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
Создайте мастер-ключ базы данных:
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
Создайте учетные данные доступа к Azure OpenAI с помощью ключа:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Создайте внешнюю модель для вызова конечной точки Azure OpenAI embeddings REST:
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/]
);
Создайте таблицу с текстом, чтобы разбить и вставить данные:
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
Создайте новую таблицу для хранения фрагментированного текста и векторных вложений:
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR(1536)
);
Вставьте фрагментированный текст и векторные вложения в таблицу text_embeddings с помощью AI_GENERATE_CHUNKS и 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;
Просмотр результатов
SELECT *
FROM text_embeddings;