Язык структурированных запросов (SQL) — это сложный язык, требующий понимания баз данных и метаданных. Сегодня, генеративный ИИ может помочь людям без знаний SQL. Эта генеративная задача ИИ называется преобразованием текста в SQL, которая генерирует SQL-запросы на основе обработки естественного языка (NLP) и преобразует текст в семантически правильный SQL. Решение в этом посте направлено на то, чтобы вывести операции корпоративной аналитики на новый уровень за счет сокращения пути к вашим данным с использованием естественного языка.
С появлением больших языковых моделей (LLM) генерация SQL на основе NLP претерпела значительную трансформацию. Демонстрируя исключительную производительность, LLM теперь способны генерировать точные SQL-запросы на основе описаний на естественном языке. Однако проблемы все еще остаются. Во-первых, человеческий язык по своей сути неоднозначен и зависит от контекста, тогда как SQL является точным, математическим и структурированным. Этот пробел может привести к неточному преобразованию потребностей пользователя в сгенерированный SQL. Во-вторых, вам может потребоваться создать функции преобразования текста в SQL для каждой базы данных, поскольку данные часто не хранятся в одном целевом объекте. Возможно, вам придется воссоздать возможности для каждой базы данных, чтобы предоставить пользователям возможность генерировать SQL на основе NLP. В-третьих, несмотря на более широкое внедрение решений централизованной аналитики, таких как озера данных и хранилища, сложность возрастает из-за разных имен таблиц и других метаданных, необходимых для создания SQL для нужных источников. Поэтому сбор всеобъемлющих и высококачественных метаданных также остается проблемой. Дополнительные сведения о передовых методах преобразования текста в SQL и шаблонах проектирования см. Создание ценности из корпоративных данных: лучшие практики для Text2SQL и генеративного искусственного интеллекта.
Наше решение направлено на решение этих проблем с помощью Коренная порода Амазонки и Аналитические сервисы AWS, Мы используем Антропный Клод v2.1 на Amazon Bedrock в качестве нашего LLM. Чтобы решить эти проблемы, наше решение сначала включает метаданные источников данных в Каталог данных AWS Glue для повышения точности создаваемого SQL-запроса. Рабочий процесс также включает в себя цикл окончательной оценки и исправления на случай, если какие-либо проблемы с SQL будут выявлены Амазонка Афина, который используется в качестве механизма SQL. Athena также позволяет нам использовать множество поддерживаемые конечные точки и соединители чтобы охватить большой набор источников данных.
После того, как мы пройдемся по шагам построения решения, мы представим результаты некоторых тестовых сценариев с различными уровнями сложности SQL. Наконец, мы обсудим, как легко включать различные источники данных в ваши запросы SQL.
Обзор решения
В нашей архитектуре есть три важнейших компонента: поисковая расширенная генерация (RAG) с метаданными базы данных, многоэтапный цикл самокоррекции и Athena в качестве нашего механизма SQL.
Мы используем метод RAG для получения описаний таблиц и схем (столбцов) из метахранилища AWS Glue, чтобы гарантировать, что запрос относится к правильной таблице и наборам данных. В нашем решении мы построили отдельные шаги для запуска платформы RAG с каталогом данных AWS Glue в демонстрационных целях. Однако вы также можете использовать базы знаний в Amazon Bedrock для быстрого создания решений RAG.
Многошаговый компонент позволяет LLM корректировать сгенерированный запрос SQL для обеспечения точности. Здесь сгенерированный SQL отправляется на наличие синтаксических ошибок. Мы используем сообщения об ошибках Athena, чтобы обогатить подсказку LLM для более точных и эффективных исправлений в сгенерированном SQL.
Сообщения об ошибках, время от времени поступающие от Athena, можно рассматривать как обратную связь. Стоимость этапа исправления ошибок пренебрежимо мала по сравнению с полученной ценностью. Вы даже можете включить эти корректирующие шаги в качестве примеров усиленного обучения под учителем для более точной настройки ваших LLM. Однако в целях простоты мы не рассматривали этот поток в нашей статье.
Обратите внимание, что всегда существует риск возникновения неточностей, который, естественно, связан с генеративными решениями ИИ. Даже если сообщения об ошибках Athena очень эффективны для снижения этого риска, вы можете добавить дополнительные элементы управления и представления, такие как отзывы пользователей или примеры запросов для тонкой настройки, чтобы еще больше минимизировать такие риски.
Athena не только позволяет нам исправлять SQL-запросы, но и упрощает для нас общую проблему, поскольку она служит концентратором, где лучами являются несколько источников данных. Управление доступом, синтаксис SQL и многое другое осуществляется через Athena.
Следующая диаграмма иллюстрирует архитектуру решения.
Технологическая схема включает в себя следующие этапы:
- Создайте каталог данных AWS Glue. с помощью сканера AWS Glue (или другой метод).
- Посмотрите на график Модель Titan-Text-Embeddings на Amazon Bedrock, преобразовать метаданные во встраивания и сохранить их в Amazon OpenSearch без сервера векторный магазин, который служит нашей базой знаний в нашей структуре RAG.
На этом этапе процесс готов принять запрос на естественном языке. Шаги 7–9 представляют собой цикл коррекции, если применимо.
- Пользователь вводит запрос на естественном языке. Вы можете использовать любое веб-приложение для предоставления пользовательского интерфейса чата. Поэтому мы не стали освещать детали пользовательского интерфейса в нашей статье.
- В решении применяется структура RAG через поиск сходства, который добавляет дополнительный контекст из метаданных из базы данных векторов. Эта таблица используется для поиска правильной таблицы, базы данных и атрибутов.
- Запрос объединяется с контекстом и отправляется в Антропный Клод v2.1 на Амазонке.
- Модель получает сгенерированный SQL-запрос и подключается к Athena для проверки синтаксиса.
- Если Athena выдает сообщение об ошибке, в котором упоминается неверный синтаксис, модель использует текст ошибки из ответа Athena.
- Новая подсказка добавляет ответ Афины.
- Модель создает исправленный SQL и продолжает процесс. Эту итерацию можно выполнять несколько раз.
- Наконец, мы запускаем SQL с помощью Athena и генерируем выходные данные. Здесь результат представляется пользователю. В целях архитектурной простоты мы не показали этот шаг.
Предпосылки
Для этого поста вы должны выполнить следующие предварительные условия:
- Есть Аккаунт AWS.
- Установите домен Интерфейс командной строки AWS (Интерфейс командной строки AWS).
- Настройте SDK для Python (Boto3).
- Создайте каталог данных AWS Glue. с помощью сканера AWS Glue (или другой метод).
- Посмотрите на график Модель Titan-Text-Embeddings на Amazon Bedrock, преобразовать метаданные во встраивания и сохранить их в бессерверном хранилище OpenSearch. векторный магазин.
Реализуйте решение
Вы можете использовать следующие Блокнот Jupyter, который включает все фрагменты кода, представленные в этом разделе, для создания решения. Мы рекомендуем использовать Студия Amazon SageMaker чтобы открыть этот блокнот с помощью экземпляра ml.t3.medium с ядром Python 3 (Data Science). Инструкции см. Обучение модели машинного обучения. Для настройки решения выполните следующие шаги:
- Создайте базу знаний в OpenSearch Service для платформы RAG:
- Создайте подсказку (
final_question
) путем объединения пользовательского ввода на естественном языке (user_query
), соответствующие метаданные из векторного хранилища (vector_search_match
) и наши инструкции (details
): - Вызовите Amazon Bedrock для LLM (Claude v2) и предложите ему сгенерировать SQL-запрос. В следующем коде он предпринимает несколько попыток, чтобы проиллюстрировать этап самоисправления: x
- Если возникают какие-либо проблемы с сгенерированным SQL-запросом (
{sqlgenerated}
) из ответа Афины ({syntaxcheckmsg}
), новое приглашение (prompt
) генерируется на основе ответа, и модель снова пытается сгенерировать новый SQL: - После генерации SQL вызывается клиент Athena для запуска и генерации выходных данных:
Проверить решение
В этом разделе мы запускаем наше решение с различными примерами сценариев для тестирования SQL-запросов разных уровней сложности.
Чтобы протестировать преобразование текста в SQL, мы используем два наборы данных доступны на IMDB. Подмножества данных IMDb доступны для личного и некоммерческого использования. Вы можете загрузить наборы данных и сохранить их в Простой сервис хранения Amazon (Амазонка S3). Вы можете использовать следующий фрагмент Spark SQL для создания таблиц в AWS Glue. Для этого примера мы используем title_ratings
и title
:
Храните данные в Amazon S3, а метаданные — в AWS Glue.
В этом сценарии наш набор данных хранится в корзине S3. Athena имеет разъем S3, который позволяет использовать Amazon S3 в качестве источника данных, к которому можно запрашивать данные..
Для нашего первого запроса мы предоставляем входные данные: «Я новичок в этом. Можете ли вы помочь мне увидеть все таблицы и столбцы в схеме imdb?»
Ниже приведен сгенерированный запрос:
На следующем снимке экрана и в коде показан наш результат.
Для нашего второго запроса мы просим: «Покажите мне все названия и детали в регионе США, рейтинг которого превышает 9.5».
Ниже приведен наш сгенерированный запрос:
Ответ следующий.
Для нашего третьего запроса мы вводим «Отличный ответ! А теперь покажите мне все оригинальные шрифтовые названия с рейтингом выше 7.5 и не из региона США».
Создается следующий запрос:
Получаем следующие результаты.
Генерация самокорректируемого SQL
Этот сценарий имитирует запрос SQL, имеющий проблемы с синтаксисом. Здесь сгенерированный SQL будет автоматически корректироваться на основе ответа от Athena. В следующем ответе Афина дала COLUMN_NOT_FOUND
ошибка и упомянул, что table_description
невозможно решить:
Использование решения с другими источниками данных
Если вы хотите использовать решение с другими источниками данных, Athena выполнит эту работу за вас. Для этого Афина использует соединители источников данных что можно использовать с федеративные запросы. Соединитель можно рассматривать как расширение механизма запросов Athena. Существуют готовые соединители источников данных Athena для таких источников данных, как Журналы Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (с совместимостью с MongoDB)и Сервис реляционной базы данных Amazon (Amazon RDS) и JDBC-совместимые реляционные источники данных, такие как MySQL и PostgreSQL, по лицензии Apache 2.0. После настройки подключения к любому источнику данных вы можете использовать предыдущую базу кода для расширения решения. Для получения дополнительной информации см. Отправляйте запросы к любому источнику данных с помощью нового интегрированного запроса Amazon Athena..
Убирать
Чтобы очистить ресурсы, вы можете начать с очистка корзины S3 где находятся данные. Если ваше приложение не использует Amazon Bedrock, оно не потребует никаких затрат. В целях использования передового опыта управления инфраструктурой мы рекомендуем удалить ресурсы, созданные в этой демонстрации.
Заключение
В этом посте мы представили решение, которое позволяет использовать NLP для генерации сложных SQL-запросов с использованием различных ресурсов, поддерживаемых Athena. Мы также повысили точность генерируемых SQL-запросов с помощью многоэтапного цикла оценки на основе сообщений об ошибках последующих процессов. Кроме того, мы использовали метаданные в каталоге данных AWS Glue, чтобы учитывать имена таблиц, запрашиваемые в запросе через платформу RAG. Затем мы протестировали решение в различных реалистичных сценариях с разными уровнями сложности запросов. Наконец, мы обсудили, как применить это решение к различным источникам данных, поддерживаемым Athena.
Amazon Bedrock находится в центре этого решения. Amazon Bedrock может помочь вам создать множество генеративных приложений искусственного интеллекта. Чтобы начать работу с Amazon Bedrock, мы рекомендуем выполнить быстрый старт, описанный ниже. Репо GitHub и ознакомление с созданием генеративных приложений искусственного интеллекта. Вы также можете попробовать базы знаний в Amazon Bedrock для быстрого создания таких решений RAG.
Об авторах
Санджиб Панда — инженер данных и машинного обучения в Amazon. Имея опыт работы в области искусственного интеллекта и машинного обучения, науки о данных и больших данных, Санджиб проектирует и разрабатывает инновационные решения для обработки данных и машинного обучения, которые решают сложные технические задачи и достигают стратегических целей для глобальных 3P-продавцов, управляющих своим бизнесом на Amazon. Помимо работы инженером по обработке данных и машинному обучению в Amazon, Санджиб Панда является заядлым гурманом и любителем музыки.
Бурак Гозлуклу — главный специалист по архитектуре решений AI/ML в Бостоне, Массачусетс. Он помогает стратегическим клиентам внедрять технологии AWS и, в частности, решения генеративного искусственного интеллекта для достижения своих бизнес-целей. Бурак имеет докторскую степень в области аэрокосмической техники в METU, степень магистра в области системной инженерии и постдок по системной динамике в Массачусетском технологическом институте в Кембридже, штат Массачусетс. Бурак по-прежнему является научным сотрудником Массачусетского технологического института. Бурак увлечен йогой и медитацией.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :имеет
- :является
- :нет
- :куда
- $UP
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- О нас
- выше
- доступ
- точность
- точный
- Достигать
- Добавить
- Дополнительно
- адрес
- Добавляет
- принять
- Принятие
- Аэрокосмическая индустрия
- Affiliate
- После
- снова
- AI
- AI / ML
- Цель
- Выравнивает
- Все
- позволяет
- причислены
- альтернатива
- всегда
- am
- Amazon
- Амазон РДС
- Amazon Web Services
- an
- аналитика
- и
- ответ
- Антропный
- любой
- апаш
- отношение
- Применение
- Приложения
- применяется
- Применить
- архитектурный
- архитектура
- МЫ
- AS
- спросить
- At
- атланта
- попытка
- попытки
- Атрибуты
- дополненная
- уполномоченный
- доступен
- AWS
- Клей AWS
- фон
- Использование темпера с изогнутым основанием
- основанный
- BE
- , так как:
- ниже
- ЛУЧШЕЕ
- лучшие практики
- большой
- Big Data
- Заблокировать
- Бостон
- приносить
- строить
- Строительство
- построенный
- бизнес
- бизнес
- но
- by
- под названием
- Кембридж
- CAN
- не могу
- возможности
- способный
- заботится
- случаев
- каталог
- Центр
- централизованная
- вызов
- проблемы
- чат
- проверил
- контроль
- чистым
- кли
- клиент
- код
- кодовая база
- Сбор
- Column
- Колонки
- комбинируя
- выходит
- приход
- сравненный
- сравнив
- совместимость
- полный
- комплекс
- сложность
- компонент
- компоненты
- комплексный
- связи
- подключает
- Рассматривать
- контекст
- продолжается
- контрольная
- Конверсия
- конвертировать
- исправить
- исправленный
- исправления
- Цена
- считать
- чехол для варгана
- Создайте
- создали
- создает
- критической
- Клиенты
- данным
- наука о данных
- База данных
- базы данных
- Наборы данных
- Время
- Дата и время
- поставляется
- демонстрирующий
- Проект
- шаблоны проектирования
- желанный
- Несмотря на
- подробнее
- развивать
- диаграмма
- DID
- различный
- обсуждать
- обсуждается
- Разное
- do
- Документы
- Документация
- скачать
- в течение
- динамика
- Эффективный
- еще
- появление
- включить
- включен
- Двигатель
- инженер
- Проект и
- обогащать
- обеспечивать
- Enter
- Предприятие
- Вводит
- энтузиаст
- ошибка
- ошибки
- оценка
- Даже
- Каждая
- пример
- Примеры
- исключительный
- проведение
- существовать
- существующий
- Объяснять
- продлить
- расширение
- дополнительно
- XNUMX ошибка
- ложный
- Особенности
- Обратная связь
- окончательный
- в заключение
- обнаружение
- First
- поток
- следовать
- после
- следующим образом
- Что касается
- Рамки
- от
- далее
- разрыв
- дал
- порождать
- генерируется
- генерирует
- порождающий
- поколение
- генеративный
- Генеративный ИИ
- получить
- получает
- Глобальный
- Цели
- есть
- Ручки
- Есть
- имеющий
- he
- помощь
- помогает
- здесь
- высококачественный
- очень
- его
- Как
- How To
- Однако
- HTML
- HTTP
- HTTPS
- хаб
- человек
- i
- идентифицированный
- if
- иллюстрировать
- иллюстрирует
- последствия
- важную
- in
- неточный
- включают
- включает в себя
- включать
- включает в себя
- неправильный
- Увеличение
- расширились
- индекс
- individual
- info
- информация
- Инфраструктура
- свойственный
- по существу
- начальный
- внутренний
- инновационный
- вход
- пример
- инструкции
- в
- вызывается
- Запускает
- вопрос
- вопросы
- IT
- итерация
- работа
- присоединиться
- JPG
- знания
- озера
- язык
- большой
- больше
- УЧИТЬСЯ
- изучение
- уровень
- уровни
- Лицензия
- такое как
- ОГРАНИЧЕНИЯ
- линия
- LLM
- расположенный
- любят
- машина
- обучение с помощью машины
- сделать
- ДЕЛАЕТ
- управление
- управления
- многих
- математический
- Май..
- me
- медитация
- средний
- упомянутый
- упоминает
- сообщение
- Сообщения
- Метаданные
- метод
- может быть
- минимизировать
- MIT
- смягчать
- ML
- модель
- Модели
- MongoDB
- БОЛЕЕ
- MS
- с разными
- множество
- Музыка
- mysql
- имя
- имена
- натуральный
- Обработка естественного языка
- Необходимость
- потребности
- Новые
- следующий
- НЛП
- некоммерческий
- ноутбук
- сейчас
- номер
- целей
- of
- .
- on
- только
- открытый
- Операционный отдел
- or
- заказ
- оригинал
- Другое
- наши
- выходной
- внешнюю
- общий
- Прошло
- страстный
- путь
- паттеранами
- Люди
- производительность
- выполнены
- личного
- кандидат наук
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- пожалуйста
- После
- Postgresql
- практиками
- предшествующий
- необходимость
- предпосылки
- представить
- представлены
- Основной
- Проблема
- процесс
- Процессы
- обработка
- наводящие
- обеспечивать
- при условии
- приводит
- целей
- Питон
- Запросы
- запрос
- вопрос
- САЙТ
- быстро
- кавычки
- тряпка
- рейтинг
- рейтинги
- Читать
- готовый
- реалистичный
- Получать
- получила
- рекомендовать
- относиться
- область
- Связанный
- соответствующие
- оставаться
- остатки
- представлять
- запросить
- обязательный
- Требования
- требуется
- исследованиям
- проживает
- решение
- решен
- Полезные ресурсы
- уважение
- ответ
- результат
- Итоги
- поиск
- возвращают
- правую
- Встает
- Снижение
- рисках,
- надежный
- РЯД
- Run
- sagemaker
- Сакэ
- то же
- видел
- сценарий
- Сценарии
- Наука
- поиск
- Во-вторых
- Раздел
- посмотреть
- выберите
- SELF
- Продавцы
- послать
- Serverless
- служит
- обслуживание
- Услуги
- набор
- должен
- показывать
- показ
- показанный
- сторона
- значительный
- просто
- простота
- упрощает
- одинарной
- отрывок
- Решение
- Решения
- РЕШАТЬ
- некоторые
- Источник
- Источники
- Искриться
- специалист
- конкретно
- Этап
- Начало
- и политические лидеры
- Область
- заявление
- Статус:
- Шаг
- Шаги
- По-прежнему
- диск
- магазин
- хранить
- простой
- Стратегический
- строка
- структурированный
- такие
- Поддержанный
- Убедитесь
- синтаксис
- SYS
- система
- системы
- ТАБЛИЦЫ
- взять
- цель
- Сложность задачи
- Технический
- технологии
- тестXNUMX
- проверенный
- текст
- чем
- который
- Ассоциация
- концентратор
- их
- Их
- тогда
- Там.
- следовательно
- Эти
- В третьих
- этой
- те
- три
- Через
- раз
- Название
- позиций
- в
- сегодня
- трансформация
- стараться
- два
- напишите
- Типы
- ui
- под
- претерпели
- понимание
- если не
- Обновление ПО
- обновление
- us
- использование
- используемый
- Информация о пользователе
- пользователей
- использования
- через
- VALIDATE
- ценностное
- разнообразие
- различный
- Различная
- с помощью
- Просмотры
- Услуга
- от
- Путь..
- we
- Web
- веб приложение
- веб-сервисы
- в то время как
- который
- в то время как
- чья
- будете
- в
- без
- Работа
- рабочий
- записывать
- письмо
- X
- Йога
- Ты
- ВАШЕ
- себя
- зефирнет