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


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

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

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

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

Просмотрите это видео в серии База данных SQL Azure essentials для краткого обзора создания готового приложения искусственного интеллекта:

Обзор

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

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

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

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

Основные понятия

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

Получение дополненного поколения (RAG)

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

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

Шаблон RAG с проектированием запросов служит целью повышения качества отклика, предлагая более контекстную информацию модели. RAG позволяет модели применять более широкую базу знаний путем включения соответствующих внешних источников в процесс создания, что приводит к более всеобъемлющим и информированным ответам. Дополнительные сведения о приземления LLM см. в разделе "Заземление 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 внедрения можно эффективно хранить и запрашивать с помощью поддержки индекса columnstore, что позволяет точному поиску ближайших соседей с большой производительностью, вам не нужно выбирать между точностью и скоростью: вы можете иметь оба варианта. Хранение векторных внедрений вместе с данными в интегрированном решении сводит к минимуму необходимость управления синхронизацией данных и ускорением времени на рынок для разработки приложений ИИ.

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 см. в следующих статьях:

Векторы

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

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

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

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [vector_value_id] [int] NOT NULL,
    [vector_value] [float] NOT NULL
)
GO

CREATE CLUSTERED COLUMNSTORE INDEX ixc
    ON dbo.wikipedia_articles_embeddings_titles_vector
    ORDER (article_id);
GO

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

Другим вариантом использования поиска векторов в базе данных SQL Azure является интеграция с Azure AI с помощью интегрированных возможностей векторизации: векторный поиск с База данных SQL Azure и поиском ИИ Azure

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

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

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

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

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

Интеграция LangChain

LangChain — это известная платформа для разработки приложений на основе языковых моделей.

Пример использования LangChain для создания чат-бота на основе собственных данных см. в статье "Создание собственной базы данных Copilot для SQL Azure с помощью Azure OpenAI GPT-4".

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

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

  • Семантическая ядро и память ядра — соединитель SQL — обеспечивает подключение к базе данных SQL для семантического ядра памяти.
  • Пример внедрения OpenAI. Пример использования семантического ядра и памяти ядра для работы с внедрением в приложение .NET с помощью SQL Server в качестве векторной базы данных.

Навыки Microsoft Copilot в База данных SQL Azure

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

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

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

Примечание.

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

Предварительная версия Copilot для База данных SQL Azure включает два интерфейса портал Azure:

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

Дополнительные сведения см. в статье часто задаваемые вопросы о навыках Microsoft Copilot в База данных SQL Azure (предварительная версия).