Интеллектуальные приложения с База данных 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 с помощью База данных SQL Azure и Azure OpenAI.
Получение дополненного поколения (RAG)
RAG — это метод, который повышает способность LLM создавать соответствующие и информативные ответы путем получения дополнительных данных из внешних источников. Например, RAG может запрашивать статьи или документы, содержащие знания, относящиеся к домену, связанные с вопросом или запросом пользователя. Затем LLM может использовать полученные данные в качестве ссылки при создании ответа. Например, простой шаблон RAG с помощью База данных SQL Azure может быть следующим:
- Вставка данных в таблицу База данных SQL Azure.
- Связывание База данных SQL Azure с поиском ИИ Azure.
- Создайте модель GPT4 Azure OpenAI и подключите ее к службе "Поиск ИИ Azure".
- Чат и вопросы о данных с помощью обученной модели 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 могут эффективно храниться и запрашиваться, как описано в следующих разделах, что позволяет точному поиску ближайших соседей с большой производительностью. Вам не нужно выбирать между точностью и скоростью: вы можете иметь оба. Хранение векторных внедрений вместе с данными в интегрированном решении сводит к минимуму необходимость управления синхронизацией данных и ускорением времени на рынок для разработки приложений ИИ.
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 и OpenAI см. в следующих статьях:
- Создание образов с помощью Службы Azure OpenAI (DALL-E) и База данных SQL Azure
- Использование конечных точек REST OpenAI с База данных SQL Azure
Векторы
Тип векторных данных
В ноябре 2024 года в База данных 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)
Векторы в более ранних версиях SQL Server
В то время как более старые версии подсистемы SQL Server, вплоть до SQL Server 2022, не имеют собственного типа вектора, вектор не больше, чем упорядоченный кортеж, и реляционные базы данных отлично подходят для управления кортежами. Кортеж можно считать формальным термином для строки в таблице.
База данных 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
Поиск с использованием ИИ Azure
Реализуйте RAG-шаблоны с помощью База данных SQL Azure и поиска ИИ Azure. Вы можете запускать поддерживаемые модели чата в данных, хранящихся в База данных SQL Azure, без необходимости обучения или точной настройки моделей благодаря интеграции службы "Поиск ИИ Azure" с Azure OpenAI и База данных SQL Azure. Работа моделей данных позволяет общаться поверх и анализировать данные с большей точностью и скоростью.
- Azure OpenAI в данных
- Получение расширенного поколения (RAG) в поиске ИИ Azure
- Векторный поиск с помощью База данных SQL Azure и поиска ИИ Azure
интеллектуальные приложения;
База данных SQL Azure можно использовать для создания интеллектуальных приложений, включающих функции ИИ, такие как рекомендации, и извлечение дополненного поколения (RAG), как показано на следующей схеме:
Полный пример создания приложения с поддержкой ИИ с помощью сеансов абстрактно в качестве примера набора данных см. в следующем разделе:
- Как я создал средство рекомендаций сеанса за 1 час с помощью OpenAI.
- Создание помощника по сеансам конференции с помощью получения дополненного поколения
Интеграция LangChain
LangChain — это известная платформа для разработки приложений на основе языковых моделей. Примеры, показывающие, как LangChain можно использовать для создания чат-бота на собственных данных, см. в следующих примерах:
- Создайте чат-бот на основе собственных данных за 1 час с помощью SQL Azure, Langchain и Chainlit: создание чат-бота с помощью шаблона RAG на собственных данных с помощью Langchain для оркестрации вызовов LLM и Chainlit для пользовательского интерфейса.
- Создание собственной базы данных Copilot для SQL Azure с помощью Azure OpenAI GPT-4. Создание интерфейса copilot для запроса баз данных с использованием естественного языка.
Интеграция семантического ядра
Семантический ядро — это пакет SDK с открытым кодом, который позволяет легко создавать агенты, которые могут вызывать существующий код. В качестве расширяемого пакета SDK можно использовать семантические ядра с моделями из OpenAI, Azure OpenAI, Hugging Face и многое другое! Объединяя существующий код C#, Python и Java с этими моделями, вы можете создавать агенты, отвечающие на вопросы и автоматизирующие процессы.
- Конечный чат-бот?: создайте чат-бот на основе собственных данных с помощью шаблонов NL2SQL и RAG для конечного взаимодействия с пользователем.
- Пример внедрения OpenAI. Пример использования семантического ядра и памяти ядра для работы с внедрением в приложение .NET с помощью SQL Server в качестве векторной базы данных.
- Семантическая ядро и память ядра — соединитель SQL — обеспечивает подключение к базе данных SQL для семантического ядра памяти.
Навыки 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 (предварительная версия).