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


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

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

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

Для Базы данных SQL Azure просмотрите интеллектуальные приложения и ИИ.

Примеры и примеры см. в репозитории примеров ИИ SQL.

Обзор

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

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

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

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

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

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

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

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

  1. Вставка данных в таблицу.
  2. Связывание экземпляра с поиском ИИ Azure.
  3. Создайте модель GPT4 Azure OpenAI и подключите ее к службе "Поиск ИИ Azure".
  4. Чат и вопросы о данных с помощью обученной модели 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 Server.

Дополнительные примеры использования SQL Azure и OpenAI см. в следующих статьях, которые также относятся к SQL Server и Управляемому экземпляру 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)

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

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

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

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

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

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

Замечание

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

Интеграция LangChain

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

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

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

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

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

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

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