Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: SQL Server 2025 (17.x)
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
В этой статье представлен обзор использования параметров искусственного интеллекта (ИИ), таких как OpenAI и векторы, для создания интеллектуальных приложений с ядром СУБД SQL в SQL Server и Управляемом экземпляре SQL Azure.
Для Базы данных SQL Azure просмотрите интеллектуальные приложения и ИИ.
Для примеров и образцов посетите репозиторий SQL AI Samples.
Обзор
Крупные языковые модели (LLMs) позволяют разработчикам создавать приложения с поддержкой искусственного интеллекта с знакомым взаимодействием с пользователем.
Использование LLM в приложениях обеспечивает большую ценность и улучшенный пользовательский интерфейс, когда модели могут получать доступ к правильным данным в нужное время из базы данных приложения. Этот процесс известен как извлечение дополненного поколения (RAG), а ядро СУБД SQL имеет множество функций, поддерживающих этот новый шаблон, что делает ее отличной базой данных для создания интеллектуальных приложений.
В следующих ссылках приведен пример кода различных параметров для создания интеллектуальных приложений:
| Вариант искусственного интеллекта | Description |
|---|---|
| Azure OpenAI | Создайте внедрение для RAG и интегрируйте с любой моделью, поддерживаемой Azure OpenAI. |
| Векторы | Узнайте, как хранить векторы и использовать векторные функции в базе данных. |
| Поиск по искусственному интеллекту Azure | Используйте вашу базу данных вместе с Azure AI Search для обучения LLM на основе ваших данных. |
| Интеллектуальные приложения | Узнайте, как создать комплексное решение с помощью общего шаблона, который можно реплицировать в любом сценарии. |
Основные понятия реализации RAG с помощью Azure OpenAI
В этом разделе содержатся основные понятия, которые критически важны для реализации RAG с помощью Azure OpenAI в ядре СУБД SQL.
Генерация с дополненным извлечением (RAG)
RAG — это метод, который повышает способность LLM создавать соответствующие и информативные ответы путем получения дополнительных данных из внешних источников. Например, RAG может запрашивать статьи или документы, содержащие знания, относящиеся к домену, связанные с вопросом или запросом пользователя. Затем LLM может использовать полученные данные в качестве ссылки при создании ответа. Например, простой шаблон RAG с помощью ядра СУБД SQL может быть следующим:
- Вставка данных в таблицу.
- Подключите ваш экземпляр к поисковому сервису Azure AI.
- Создайте модель GPT4 Azure OpenAI и подключите ее к службе "Поиск ИИ Azure".
- Общайтесь и задавайте вопросы о ваших данных, используя обученную модель Azure OpenAI из вашего приложения и данных в вашем экземпляре.
Шаблон RAG с инженерией запросов имеет целью повышение качества ответа, предоставляя более контекстуальную информацию модели. RAG позволяет модели применять более широкую базу знаний путем включения соответствующих внешних источников в процесс создания, что приводит к более всеобъемлющим и информированным ответам. Дополнительные сведения о заземлении LLM см. в разделе "Заземление LLM" — Microsoft Community Hub.
Запросы и проектирование запросов
Запрос ссылается на определенный текст или сведения, которые служат инструкцией для LLM или контекстные данные, на которых LLM может основываться. Запрос может принимать различные формы, такие как вопрос, оператор или даже фрагмент кода.
Примеры запросов, которые можно использовать для создания ответа из LLM:
- Инструкции. Предоставление директив LLM
- Основное содержимое: предоставляет сведения LLM для обработки
- Примеры: помощь в условии модели для конкретной задачи или процесса
- Подсказки: направляют вывод LLM в нужном направлении
- Вспомогательное содержимое: представляет дополнительные сведения, которые LLM может использовать для создания выходных данных.
Процесс создания хороших запросов для сценария называется проектированием запросов. Дополнительные сведения о запросах и рекомендациях по проектированию запросов см. в статье "Методы проектирования запросов".
Tokens
Маркеры представляют собой небольшие фрагменты текста, созданные путем разделения входного текста на меньшие сегменты. Эти сегменты могут быть словами или группами символов, в зависимости от длины от одного символа до всего слова. Например, слово hamburger будет разделено на маркеры, такие как ham, burи ger в то время как короткое и общее слово, как pear было бы считается одним маркером.
В Azure OpenAI входной текст, предоставленный API, преобразуется в маркеры (токенизованные). Количество маркеров, обрабатываемых в каждом запросе API, зависит от таких факторов, как длина входных, выходных данных и параметров запроса. Количество обрабатываемых маркеров также влияет на время отклика и пропускную способность моделей. Существуют ограничения на количество маркеров, которые каждая модель может принимать в одном запросе или ответе от Azure OpenAI. Для получения дополнительной информации см. раздел Azure OpenAI в квотах и ограничениях моделей Azure AI Foundry.
Векторы
Векторы — это упорядоченные массивы чисел (обычно с плавающей запятой), которые могут представлять сведения о некоторых данных. Например, изображение может быть представлено как вектор значений пикселей, или строка текста может быть представлена как вектор значений ASCII. Процесс преобразования данных в вектор называется векторизацией. Дополнительные сведения см. в примерах векторов.
Работа с векторными данными упрощается при внедрении векторных типов данных и векторных функций.
Встраивания
Внедрение — это векторы, представляющие важные функции данных. Внедрение часто используется с помощью модели глубокого обучения, а модели машинного обучения и искусственного интеллекта используют их в качестве функций. Внедрение также может захватывать семантические сходства между аналогичными понятиями. Например, при создании встраивания для слов person и human, мы ожидаем, что их встраивания (векторное представление) будут похожи по значению, поскольку слова также семантически похожи.
Azure OpenAI предоставляет модели для создания встраиваний из текстовых данных. Служба разбивает текст на маркеры и создает внедрения с помощью моделей, предварительно обученных OpenAI. Дополнительные сведения см. в разделе "Понимание внедрений в Azure OpenAI в моделях Azure AI Foundry".
Векторный поиск
Векторный поиск означает процесс нахождения всех векторов в наборе данных, которые семантически похожи на конкретный вектор запроса. Таким образом, вектор запроса для слова human выполняет поиск всего словаря для семантически похожих слов и должен находить слово person как близкое совпадение. Это близкость или расстояние измеряется с помощью метрик сходства, например косинуса сходства. По мере увеличения сходства векторов расстояние между ними уменьшается.
Рассмотрим сценарий, в котором выполняется запрос на миллионы документов, чтобы найти наиболее похожие документы в данных. Вы можете создавать внедрения для данных и запрашивать документы с помощью Azure OpenAI. Затем можно выполнить векторный поиск, чтобы найти наиболее похожие документы из набора данных. Однако выполнение векторного поиска в нескольких примерах является тривиальным. Выполнение такого же поиска по тысячам или миллионам точек данных становится сложной задачей. Существуют также компромиссы между исчерпывающим поиском и приблизительными методами поиска ближайших соседей (ANN), включая задержку, пропускную способность, точность и стоимость, все из которых зависит от требований вашего приложения.
Векторы в ядре СУБД SQL можно эффективно хранить и запрашивать, как описано в следующих разделах, что позволяет точному поиску ближайших соседей с большой производительностью. Вам не нужно выбирать между точностью и скоростью: вы можете иметь оба. Хранение векторных встраиваний вместе с данными в интегрированном решении сводит к минимуму необходимость управления синхронизацией данных и ускоряет вывод на рынок для разработки приложений ИИ.
Azure OpenAI
Внедрение — это процесс представления реального мира в виде данных. Текст, изображения или звуки можно преобразовать в эмбединги. Модели Azure OpenAI могут преобразовывать реальные сведения в эмбеддинги. Модели доступны как конечные точки REST, поэтому их можно легко использовать из ядра СУБД SQL с помощью системной хранимой процедуры sp_invoke_external_rest_endpoint , доступной начиная с SQL Server 2025 (17.x) и Управляемого экземпляра SQL Azure, настроенного с помощью политики обновления Always-up-to-date.
DECLARE @retval AS INT,
@response AS NVARCHAR (MAX),
@payload AS NVARCHAR (MAX);
SET @payload = JSON_OBJECT('input':@text);
EXECUTE
@retval = sp_invoke_external_rest_endpoint
@url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version = 2023-03-15-preview',
@method = 'POST',
@credential = [https://<openai-url>/openai/deployments/<model-name>],
@payload = @payload,
@response = @response OUTPUT;
DECLARE @e AS VECTOR(1536) = JSON_QUERY(@response, '$.result.data[0].embedding');
Использование вызова службы REST для получения внедрения — это только один из вариантов интеграции, которые вы используете при работе с управляемым экземпляром SQL и OpenAI. Вы можете разрешить любой из доступных моделей получить доступ к данным, хранящимся в ядре СУБД SQL, чтобы создавать решения, в которых пользователи могут взаимодействовать с данными, например в следующем примере:
Дополнительные примеры использования SQL Azure и OpenAI см. в следующих статьях, которые также относятся к SQL Server и Управляемому экземпляру SQL Azure:
- Создание образов с помощью Службы Azure OpenAI (DALL-E) и SQL Azure
- Использование конечных точек REST OpenAI с SQL Azure
Примеры векторов
Выделенный векторный тип данных позволяет эффективно и оптимизировано хранить векторные данные и поставляется с набором функций, помогающих разработчикам оптимизировать реализацию поиска векторов и сходства. Вычисление расстояния между двумя векторами можно выполнить в одной строке кода с помощью новой VECTOR_DISTANCE функции. Дополнительные сведения и примеры см. векторном поиске и векторных индексах в ядре СУБД SQL.
Рассмотрим пример.
CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
[article_id] [int] NOT NULL,
[embedding] [vector](1536) NOT NULL,
)
GO
SELECT TOP(10)
*
FROM
[dbo].[wikipedia_articles_embeddings_titles_vector]
ORDER BY
VECTOR_DISTANCE('cosine', @my_reference_vector, embedding)
Поиск с использованием ИИ Azure
Реализуйте RAG-шаблоны с помощью ядра СУБД SQL и поиска ИИ Azure. Вы можете запускать поддерживаемые модели чата на данных, хранящихся в ядре СУБД SQL, не обучая или настраивая модели, благодаря интеграции службы "Поиск ИИ Azure" с Azure OpenAI и ядром СУБД SQL. Запуск моделей на данных позволяет взаимодействовать с вашими данными и проводить их анализ с большей точностью и скоростью.
Дополнительные сведения об интеграции службы "Поиск ИИ Azure" с Azure OpenAI и ядром СУБД SQL см. в следующих статьях, которые также относятся к SQL Server и Управляемому экземпляру SQL Azure:
- Azure OpenAI с вашими данными
- Retrieval Augmented Generation (RAG) в Azure AI Search
- Векторный поиск с помощью AZURE SQL и поиска искусственного интеллекта Azure
Интеллектуальные приложения
Ядро СУБД SQL можно использовать для создания интеллектуальных приложений с функциями ИИ, такими как рекомендательные системы и Retrieval Augmented Generation (RAG), как показано на следующей схеме:
Для полного примера создания приложения с поддержкой ИИ, используя сеансы в качестве примера набора данных, см. следующую статью:
- Как я создал средство рекомендаций сеанса за 1 час с помощью OpenAI.
- Использование технологии Retrieval Augmented Generation для создания ассистента для конференционных сессий
Замечание
Интеграция LangChain и интеграция семантического ядра зависят от типа векторных данных, доступных начиная с SQL Server 2025 (17.x) и в Управляемом экземпляре SQL Azure, настроенном с помощью политики обновления Always-up-to-date или SQL Server 2025, базы данных SQL Azure и базы данных SQL в Microsoft Fabric.
Интеграция системы LangChain
LangChain — это известная платформа для разработки приложений на основе языковых моделей. Примеры, показывающие, как LangChain можно использовать для создания чат-бота на собственных данных, см. в следующих примерах:
- langchain-sqlserver Пакет PyPI
Несколько примеров использования SQL Azure с LangChain:
Полные примеры:
- Создайте чат-бота на основе собственных данных за 1 час с использованием Azure SQL, Langchain и Chainlit: Создайте чат-бота с использованием шаблона RAG на основе ваших данных с помощью Langchain для оркестрации вызовов языка больших моделей (LLM) и Chainlit для пользовательского интерфейса.
Интеграция семантического ядра
Семантический ядро — это пакет SDK с открытым кодом , который позволяет легко создавать агенты, которые могут вызывать существующий код. В качестве расширяемого пакета SDK можно использовать семантические ядра с моделями из OpenAI, Azure OpenAI, Hugging Face и многое другое. Объединяя существующий код C#, Python и Java с этими моделями, вы можете создавать агенты, отвечающие на вопросы и автоматизирующие процессы.
Пример того, как легко семантический ядро помогает создавать решения с поддержкой ИИ, см. здесь:
- Конечный чат-бот?: создайте чат-бот на основе собственных данных с помощью шаблонов NL2SQL и RAG для конечного взаимодействия с пользователем.