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


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

Применимо к: База данных SQL Azureбазе данных SQL в Fabric

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

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

Просмотрите это видео в серии основных сведений Azure SQL Database для краткого обзора разработки приложения, готового для работы с искусственным интеллектом.

Обзор

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

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

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

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

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

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

Дополненная генерация с использованием извлечения (RAG)

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

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

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

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

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

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

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

Процесс создания хороших запросов для сценария называется проектированием запросов. Дополнительные сведения о запросах и рекомендациях по проектированию запросов см. в службе Azure OpenAI.

Токены

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

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

Векторы

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

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

Встраивания

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

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

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

Рассмотрим сценарий, в котором выполняется запрос на миллионы документов, чтобы найти наиболее похожие документы в данных. Вы можете создавать внедрения для данных и запрашивать документы с помощью Azure OpenAI. Затем можно выполнить векторный поиск, чтобы найти наиболее похожие документы из набора данных. Однако выполнение векторного поиска в нескольких примерах является тривиальным. Выполнение такого же поиска по тысячам или миллионам точек данных становится сложной задачей. Существуют также компромиссы между исчерпывающим поиском и приблизительными методами поиска ближайших соседей (ANN), включая задержку, пропускную способность, точность и стоимость, все из которых зависит от требований вашего приложения.

Векторы в База данных SQL Azure могут эффективно храниться и запрашиваться, как описано в следующих разделах, что позволяет точному поиску ближайших соседей с большой производительностью. Вам не нужно выбирать между точностью и скоростью: вы можете иметь оба. Хранение векторных внедрений вместе с данными в интегрированном решении сводит к минимуму необходимость управления синхронизацией данных и ускоряет вывод на рынок для разработки приложений ИИ.

Azure OpenAI

Внедрение — это процесс представления реального мира в виде данных. Текст, изображения или звуки можно преобразовать в внедрения. Модели Azure OpenAI могут преобразовать реальную информацию в эмбеддинги. Модели доступны как конечные точки REST, поэтому их можно легко использовать из базы данных SQL Azure с помощью sp_invoke_external_rest_endpoint системной хранимой процедуры.

DECLARE @retval INT, @response NVARCHAR(MAX);
DECLARE @payload NVARCHAR(MAX);

SET @payload = JSON_OBJECT('input': @text);

EXEC @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;

SELECT CAST([key] AS INT) AS [vector_value_id],
    CAST([value] AS FLOAT) AS [vector_value]
FROM OPENJSON(JSON_QUERY(@response, '$.result.data[0].embedding'));

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

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

Дополнительные примеры использования База данных SQL и OpenAI см. в следующих статьях:

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

Выделенный векторный тип данных позволяет эффективно и оптимизировано хранить векторные данные и поставляется с набором функций, помогающих разработчикам оптимизировать реализацию поиска векторов и сходства. Вычисление расстояния между двумя векторами можно выполнить в одной строке кода с помощью новой 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-шаблоны с помощью Azure SQL Database и поиска Azure AI. Вы можете запускать поддерживаемые модели чата в данных, хранящихся в База данных SQL Azure, без необходимости обучения или точной настройки моделей благодаря интеграции службы "Поиск ИИ Azure" с Azure OpenAI и База данных SQL Azure. Запуск моделей на ваших данных позволяет общаться на основе данных и анализировать их с большей точностью и скоростью.

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

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

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

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

Интеграция LangChain

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

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

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

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

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

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

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

Возможности Microsoft Copilot в Базе данных SQL Azure

Microsoft Copilot в Базе данных SQL Azure (предварительная версия) — это набор интерфейсов с поддержкой искусственного интеллекта, предназначенный для упрощения проектирования, эксплуатации, оптимизации и работоспособности приложений, управляемых базой данных SQL Azure.

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

  • Администраторы баз данных могут самостоятельно управлять базами данных и устранять проблемы, а также узнать больше о производительности и возможностях базы данных.
  • Разработчики могут задавать вопросы о своих данных в текстовой форме или при беседе, чтобы сгенерировать запрос T-SQL. Разработчики также могут быстрее писать запросы с помощью подробных объяснений созданного запроса.

Примечание.

Навыки Microsoft Copilot в базе данных SQL Azure в настоящее время находятся в режиме предварительного просмотра для ограниченного круга ранних пользователей. Чтобы зарегистрироваться в этой программе, перейдите к запросу доступа к Copilot в База данных SQL Azure: предварительная версия.

Microsoft Copilot в базе данных SQL Fabric (предварительная версия)

Copilot для базы данных SQL в Microsoft Fabric (предварительная версия) включает интегрированную помощь с искусственным интеллектом со следующими функциями:

  • Завершение кода. Начните писать T-SQL в редакторе запросов SQL и Copilot автоматически создаст предложение кода для выполнения запроса. Ключ TAB принимает предложение кода или сохраняет ввод, чтобы игнорировать предложение.

  • Быстрые действия. На ленте редактора запросов SQL параметры исправления и объяснения — это быстрые действия. Выделите выбранный SQL-запрос и выберите одну из кнопок быстрого действия, чтобы выполнить выбранное действие в запросе.

    • Исправление. Copilot может исправить ошибки в коде по мере возникновения сообщений об ошибках. Сценарии ошибок могут включать неправильный или неподдерживаемый код T-SQL, неправильные орфографии и многое другое. Copilot также предоставит комментарии, объясняющие изменения и предлагающие рекомендации по лучшим практикам SQL.

    • Объяснение. Copilot может предоставлять объяснения естественного языка для запроса SQL и схемы базы данных в формате комментариев.

  • Область чата: используйте область чата, чтобы задать вопросы Copilot с помощью естественного языка. Copilot отвечает на созданный SQL-запрос или естественный язык на основе заданного вопроса.

    • Естественный язык в SQL: создание кода T-SQL из запросов природного языка и получение предложений по вопросам, чтобы ускорить рабочий процесс.

    • Вопросы и ответы на основе документов: Задайте Copilot вопросы об общих возможностях SQL-базы данных, и он ответит на них естественным языком. Copilot также помогает найти документацию, связанную с вашим запросом.

Copilot для базы данных SQL использует имена таблиц и представлений, имена столбцов, первичный ключ и метаданные внешнего ключа для создания кода T-SQL. Copilot для базы данных SQL не использует данные в таблицах для создания предложений T-SQL.