Поделиться через


Интеллектуальные приложения и ИИ

Применимо к: SQL Server 2025 (17.x) База данных SQL AzureУправляемый экземпляр SQL AzureSQL базы данных в Microsoft Fabric

В этой статье представлен обзор использования параметров искусственного интеллекта (ИИ), таких как OpenAI и векторы, для создания интеллектуальных приложений с помощью SQL ядро СУБД в SQL Server и Управляемый экземпляр SQL Azure.

Сведения о База данных SQL Azure и базе данных SQL в Fabric см. в разделе Intelligent applications and AI.

Для примеров и образцов посетите репозиторий SQL AI Samples.

Обзор

Крупные языковые модели (LLMs) позволяют разработчикам создавать приложения с поддержкой искусственного интеллекта с знакомым взаимодействием с пользователем.

Использование LLM в приложениях обеспечивает большую ценность и улучшенный пользовательский интерфейс, когда модели могут получать доступ к правильным данным в нужное время из базы данных приложения. Этот процесс известен как извлечение дополненного поколения (RAG) и SQL ядро СУБД имеет множество функций, поддерживающих этот новый шаблон, что делает ее отличной базой данных для создания интеллектуальных приложений.

В следующих ссылках приведен пример кода различных параметров для создания интеллектуальных приложений:

Вариант искусственного интеллекта Description
SQL MCP Server Стабильный и управляемый интерфейс для базы данных, определяющий набор средств и конфигурации.
Azure OpenAI Создание внедрения для RAG и интеграция с любой моделью, поддерживаемой Azure OpenAI.
Векторы Узнайте, как хранить векторы и использовать векторные функции в базе данных.
Поиск с использованием ИИ Azure Используйте базу данных вместе с Поиск с использованием ИИ Azure для обучения LLM с использованием вашей базы данных.
Интеллектуальные приложения Узнайте, как создать комплексное решение с помощью общего шаблона, который можно реплицировать в любом сценарии.

SQL MCP Server в приложениях искусственного интеллекта

SQL MCP Server находится непосредственно в пути к данным для агентов ИИ.

  • Как модели создают запросы, сервер предоставляет стабильный и управляемый интерфейс для базы данных.
  • Вместо предоставления необработанной схемы или использования созданного SQL он направляет весь доступ через определенный набор инструментов, поддерживаемых конфигурацией.

Этот подход обеспечивает прогнозируемость взаимодействия и гарантирует соответствие каждой операции заданным разрешениям и структуре. Дополнительные сведения см. в aka.ms/sql/mcp.

Разделив рассуждение и выполнение, модели фокусируются на намерении, в то время как SQL MCP Server обрабатывает то, как это намерение преобразуется в корректные запросы. Поскольку область поверхности ограничена и описана, агенты могут обнаруживать доступные возможности, понимать входные и выходные данные и работать без угадок. Этот дизайн уменьшает ошибки и устраняет необходимость сложного проектирования подсказок для устранения неоднозначности схемы.

Для разработчиков этот подход означает, что искусственный интеллект может безопасно участвовать в реальных рабочих нагрузках.

Вы можете:

  • Определение сущностей один раз
  • Примените роли и ограничения

Затем платформа:

  • Обеспечивает согласованное применение сущностей, ролей и ограничений
  • Создает надежную основу для приложений, управляемых агентом, по данным SQL.

Та же конфигурация, которая обеспечивает rest и GraphQL, также управляет MCP, поэтому дублирование правил или логики отсутствует. Дополнительные сведения см. в aka.ms/dab/docs.

Основные понятия реализации RAG с помощью Azure OpenAI

В этом разделе содержатся основные понятия, которые критически важны для реализации RAG с помощью Azure OpenAI в ядро СУБД SQL.

Генерация с дополненным извлечением (RAG)

RAG — это метод, который повышает способность LLM создавать соответствующие и информативные ответы путем получения дополнительных данных из внешних источников. Например, RAG может запрашивать статьи или документы, содержащие знания, относящиеся к домену, связанные с вопросом или запросом пользователя. Затем LLM может использовать полученные данные в качестве ссылки при создании ответа. Например, простой шаблон RAG с помощью SQL ядро СУБД может быть следующим:

  1. Вставка данных в таблицу.
  2. Свяжите ваш экземпляр с Поиск с использованием ИИ Azure.
  3. Создайте модель OpenAI GPT-4 Azure и подключите ее к Поиск с использованием ИИ Azure.
  4. Общайтесь и задавайте вопросы о ваших данных с помощью обученной модели Azure OpenAI из вашего приложения и данных в вашем экземпляре.

Шаблон RAG с инженерией запросов имеет целью повышение качества ответа, предоставляя более контекстуальную информацию модели. RAG позволяет модели применять более широкие база знаний путем включения соответствующих внешних источников в процесс создания, что приводит к более всеобъемлющим и информированным ответам. Дополнительные сведения о grounding LLMs см. в разделе Grounding LLMs - Майкрософт Community Hub.

Запросы и проектирование запросов

Запрос — это конкретный текст или сведения, которые служат инструкцией для крупной языковой модели (LLM) или в качестве контекстных данных, которые LLM может создавать. Запрос может принимать различные формы, такие как вопрос, оператор или даже фрагмент кода.

Примеры запросов, которые можно использовать для создания ответа из LLM:

  • Инструкции. Предоставление директив LLM
  • Основное содержимое: предоставляет сведения LLM для обработки
  • Примеры: помощь в условии модели для конкретной задачи или процесса
  • Подсказки: направляют вывод LLM в нужном направлении
  • Вспомогательное содержимое: представляет дополнительные сведения, которые LLM может использовать для создания выходных данных.

Процесс создания хороших запросов для сценария называется проектированием запросов. Дополнительные сведения о запросах и рекомендациях по проектированию запросов см. в статье "Методы проектирования запросов".

Tokens

Маркеры представляют собой небольшие фрагменты текста, созданные путем разделения входного текста на меньшие сегменты. Эти сегменты могут быть словами или группами символов, в зависимости от длины от одного символа до всего слова. Например, слово hamburger делится на маркеры, такие как , hamи bur в то время как короткое и общее слово, как gerpear считается одним маркером.

В Azure OpenAI api маркеризирует входной текст. Количество маркеров, обрабатываемых в каждом запросе API, зависит от таких факторов, как длина входных, выходных данных и параметров запроса. Количество обрабатываемых маркеров также влияет на время отклика и пропускную способность моделей. Каждая модель имеет ограничения на количество маркеров, которые он может принимать в одном запросе и ответе от Azure OpenAI. Дополнительные сведения см. в статье Azure OpenAI в квотах и ограничениях моделей Azure AI Foundry.

Векторы

Векторы — это упорядоченные массивы чисел (обычно с плавающей запятой), которые могут представлять сведения о некоторых данных. Например, изображение может быть представлено как вектор значений пикселей, или строка текста может быть представлена как вектор значений ASCII. Процесс преобразования данных в вектор называется векторизацией. Дополнительные сведения см. в примерах векторов.

Работа с векторными данными упрощается при внедрении векторных типов данных и векторных функций.

Встраивания

Внедрение — это векторы, представляющие важные функции данных. Внедрение часто научится с помощью модели глубокого обучения, а модели машинного обучения и искусственного интеллекта используют их в качестве функций. Внедрение также может захватывать семантические сходства между аналогичными понятиями. Например, при создании встраивания для слов person и human, вы можете ожидать, что их векторные представления будут схожи по значению, так как слова также семантически похожи.

Azure OpenAI представляет модели для создания векторов из текстовых данных. Служба разбивает текст на маркеры и создает внедрения с помощью моделей, предварительно обученных OpenAI. Дополнительные сведения см. в статье Понимание встраиваний в Azure OpenAI в Azure AI Foundry Models.

Поиск векторов — это процесс поиска всех векторов в наборе данных, который семантико похож на конкретный вектор запроса. Таким образом, вектор запроса для слова 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 update policy.

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. Вы можете разрешить любой из моделей available доступ к данным, хранящимся в DATABASE ENGINE SQL, для создания решений, в которых пользователи могут взаимодействовать с данными, например в следующем примере:

Снимок экрана бота на базе ИИ, который отвечает на вопрос, используя данные, хранящиеся в SQL Server.

Дополнительные примеры использования Azure SQL и OpenAI см. в следующих статьях, которые также применяются к SQL Server и Управляемый экземпляр SQL Azure:

Примеры векторов

Выделенный тип данных векторов эффективно сохраняет векторные данные и включает набор функций, помогающих разработчикам оптимизировать реализацию поиска векторов и сходства. Вы можете вычислить расстояние между двумя векторами в одной строке кода с помощью новой VECTOR_DISTANCE функции. Дополнительные сведения и примеры см. в статье Vector search and vector indexes in the 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)

Реализуйте шаблоны RAG, используя ядро базы данных SQL и Поиск с использованием ИИ Azure. Поддерживаемые модели чата можно запускать в данных, хранящихся в ядро СУБД SQL, не обучая или настраивая модели, интегрируя Поиск с использованием ИИ Azure с Azure OpenAI и SQL ядро СУБД. При запуске моделей данных можно общаться поверх данных и анализировать их с большей точностью и скоростью.

Дополнительные сведения об интеграции Поиск с использованием ИИ Azure с OpenAI Azure и SQL ядро СУБД см. в следующих статьях. Эти статьи также относятся к SQL Server и Управляемый экземпляр SQL Azure:

Интеллектуальные приложения

Вы можете использовать SQL ядро СУБД для создания интеллектуальных приложений, включающих функции ИИ, такие как рекомендательные системы и генерация с дополнением извлечения данных (RAG), как это показано на следующем графике.

Diagram различных функций ИИ для создания интеллектуальных приложений с помощью База данных SQL Azure.

Полный пример, демонстрирующий, как создать приложение с поддержкой ИИ, используя абстракцию сеансов в качестве набора данных, см. статью:

Замечание

Интеграция LangChain и интеграция Semantic Kernel зависят от типа данных vector, который доступен начиная с SQL Server 2025 (17.x) и в Управляемый экземпляр SQL Azure, настроенного с политикой обновления Always-up-to-date или обновления SQL Server 2025, База данных SQL Azure и SQL базы данных в Microsoft Fabric.

Интеграция системы LangChain

LangChain — это известная платформа для разработки приложений на основе языковых моделей. Примеры, показывающие, как можно использовать LangChain для создания чат-бота на собственных данных, см. в следующих примерах:

Несколько примеров использования Azure SQL с LangChain:

Полные примеры:

интеграция Семантического Ядра

Semantic Kernel — это пакет SDK с открытым кодом, который можно использовать для простого создания агентов, вызывающих существующий код. В качестве расширяемого пакета SDK можно использовать Semantic Kernel с моделями из OpenAI, Azure OpenAI, Hugging Face и многое другое. Объединение существующего кода C#, Python и Java кода с этими моделями позволяет создавать агенты, которые отвечают на вопросы и автоматизируют процессы.

Пример того, как легко Semantic Kernel помогает создавать решения с поддержкой ИИ:

  • Конечный чат-бот?: создайте чат-бот на основе собственных данных с помощью шаблонов NL2SQL и RAG для конечного взаимодействия с пользователем.