Структурована мова запитів (SQL) – це складна мова, яка потребує розуміння баз даних і метаданих. сьогодні, генеративний ШІ може допомогти людям без знання SQL. Це генеративне завдання AI називається text-to-SQL, яке генерує SQL-запити з обробки природної мови (NLP) і перетворює текст у семантично правильний SQL. Рішення в цій публікації має на меті вивести операції корпоративної аналітики на наступний рівень, скоротивши шлях до ваших даних за допомогою природної мови.
З появою великих мовних моделей (LLM) генерація SQL на основі NLP зазнала значних змін. Демонструючи виняткову продуктивність, LLM тепер здатні генерувати точні SQL-запити з описів природною мовою. Проте проблеми все ще залишаються. По-перше, людська мова за своєю суттю неоднозначна і залежить від контексту, тоді як SQL є точним, математичним і структурованим. Ця прогалина може призвести до неточного перетворення потреб користувача у згенерований SQL. По-друге, вам може знадобитися створити функції перетворення тексту в SQL для кожної бази даних, оскільки дані часто не зберігаються в одній цілі. Можливо, вам доведеться відтворити можливості для кожної бази даних, щоб дозволити користувачам генерувати SQL на основі NLP. По-третє, незважаючи на широке впровадження централізованих аналітичних рішень, таких як озера даних і сховища, складність зростає з різними іменами таблиць та іншими метаданими, які потрібні для створення SQL для бажаних джерел. Тому збір повних та високоякісних метаданих також залишається проблемою. Щоб дізнатися більше про найкращі методи перетворення тексту в SQL і шаблони проектування, див Створення цінності з корпоративних даних: найкращі практики для Text2SQL і генеративного штучного інтелекту.
Наше рішення спрямоване на вирішення цих проблем за допомогою Amazon Bedrock та Аналітичні служби AWS. Ми використовуємо Антропний Клод v2.1 на Amazon Bedrock як наш LLM. Щоб вирішити ці проблеми, наше рішення спочатку включає метадані джерел даних у Каталог даних AWS Glue для підвищення точності сформованого SQL-запиту. Робочий процес також включає цикл остаточної оцінки та виправлення на випадок виявлення будь-яких проблем із SQL Амазонка Афіна, який використовується нижче за течією як механізм SQL. Афіна також дозволяє нам використовувати безліч підтримувані кінцеві точки та з’єднувачі щоб охопити великий набір джерел даних.
Після того, як ми пройдемо кроки для створення рішення, ми представимо результати деяких сценаріїв тестування з різними рівнями складності SQL. Нарешті, ми обговорюємо, як легко включати різні джерела даних у ваші запити SQL.
Огляд рішення
У нашій архітектурі є три критично важливі компоненти: Retrieval Augmented Generation (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 Serverless векторний магазин, який служить нашою базою знань у нашій структурі RAG.
На цьому етапі процес готовий прийняти запит природною мовою. Кроки 7–9 представляють цикл корекції, якщо це можливо.
- Користувач вводить свій запит природною мовою. Ви можете використовувати будь-яку веб-програму для надання інтерфейсу користувача чату. Тому ми не описували деталі інтерфейсу користувача в нашій публікації.
- Рішення застосовує структуру RAG через пошук подібності, який додає додатковий контекст із метаданих векторної бази даних. Ця таблиця використовується для пошуку правильної таблиці, бази даних і атрибутів.
- Запит об’єднується з контекстом і надсилається Антропний Клод v2.1 на Amazon Bedrock.
- Модель отримує згенерований SQL-запит і підключається до Athena для перевірки синтаксису.
- Якщо Athena надає повідомлення про помилку, у якому згадується, що синтаксис неправильний, модель використовує текст помилки з відповіді Athena.
- Нова підказка додає відповідь Афіни.
- Модель створює виправлений SQL і продовжує процес. Цю ітерацію можна виконувати кілька разів.
- Нарешті ми запускаємо SQL за допомогою Athena та генеруємо вихідні дані. Тут вихідні дані представлені користувачеві. Заради архітектурної простоти ми не показали цей крок.
Передумови
Для цієї посади ви повинні виконати наступні вимоги:
- Довірте Обліковий запис AWS.
- Встановлювати Інтерфейс командного рядка AWS (AWS CLI).
- Налаштуйте SDK для Python (Boto3).
- Створіть каталог даних AWS Glue за допомогою сканера AWS Glue (або інший спосіб).
- Використання Модель Titan-Text-Embeddings на Amazon Bedrock, перетворити метадані на вбудовування та зберегти їх у OpenSearch Serverless векторний магазин.
Реалізуйте рішення
Ви можете використовувати наступне Блокнот Юпітера, який містить усі фрагменти коду, надані в цьому розділі, для створення рішення. Рекомендуємо використовувати Студія 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 (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. У наступній відповіді Афіна дала a 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. Маючи досвід роботи зі штучним інтелектом/ML, наукою про дані та великими даними, Sanjeeb проектує та розробляє інноваційні рішення для даних і машинного навчання, які вирішують складні технічні завдання та досягають стратегічних цілей для глобальних сторонніх продавців, які керують своїм бізнесом на Amazon. Окрім роботи інженером із обробки даних і машинного навчання в Amazon, Санджіб Панда є завзятим гурманом і ентузіастом музики.
Бурак Гозлуклу є головним архітектором рішень спеціаліста зі штучного інтелекту та ML, що знаходиться в Бостоні, Массачусетс. Він допомагає стратегічним клієнтам застосовувати технології AWS і, зокрема, рішення Generative AI для досягнення їхніх бізнес-цілей. Бурак має ступінь доктора філософії в аерокосмічній інженерії в METU, ступінь магістра в галузі системної інженерії та пост-документацію в системній динаміці в MIT в Кембриджі, Массачусетс. Бурак досі є дослідницьким співробітником Массачусетського технологічного інституту. Бурак захоплюється йогою та медитацією.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: 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
- МЕНЮ
- вище
- доступ
- точність
- точний
- Achieve
- додавати
- Додатково
- адреса
- Додає
- прийняти
- Прийняття
- Авіаційно-космічний
- філія
- після
- знову
- AI
- AI / ML
- Цілі
- Вирівнює
- ВСІ
- дозволяє
- Також
- альтернатива
- завжди
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- аналітика
- та
- відповідь
- Антропний
- будь-який
- Apache
- застосовно
- додаток
- застосування
- застосовується
- Застосовувати
- архітектурний
- архітектура
- ЕСТЬ
- AS
- запитати
- At
- атланта
- спроба
- Спроби
- Атрибути
- збільшено
- уповноважений
- доступний
- AWS
- Клей AWS
- фон
- база
- заснований
- BE
- оскільки
- нижче
- КРАЩЕ
- передового досвіду
- Великий
- Великий даних
- Блокувати
- Бостон
- приносити
- будувати
- Створюємо
- побудований
- бізнес
- підприємства
- але
- by
- званий
- Кембридж
- CAN
- не може
- можливості
- здатний
- який
- випадок
- каталог
- Центр
- централізована
- виклик
- проблеми
- чат
- перевірено
- контроль
- очистити
- cli
- клієнт
- код
- кодова база
- Збір
- Колонка
- Колони
- об'єднання
- приходить
- майбутній
- порівняний
- порівняння
- сумісність
- повний
- комплекс
- складність
- компонент
- Компоненти
- всеосяжний
- зв'язку
- з'єднує
- Вважати
- контекст
- триває
- управління
- Перетворення
- конвертувати
- виправити
- виправлений
- Виправлення
- Коштувати
- вважати
- обкладинка
- створювати
- створений
- створює
- критичний
- Клієнти
- дані
- наука про дані
- Database
- базами даних
- набори даних
- Дата
- дата, час
- поставляється
- демонстрація
- дизайн
- шаблони дизайну
- бажаний
- Незважаючи на
- деталі
- розвивати
- схема
- DID
- різний
- обговорювати
- обговорювалися
- Різне
- do
- Документи
- документація
- скачати
- під час
- динаміка
- Ефективний
- ще
- поява
- включіть
- включений
- двигун
- інженер
- Машинобудування
- збагачувати
- забезпечувати
- Що натомість? Створіть віртуальну версію себе у
- підприємство
- Входить
- ентузіаст
- помилка
- помилки
- оцінка
- Навіть
- Кожен
- приклад
- Приклади
- винятковий
- виконання
- існувати
- існуючий
- Пояснювати
- продовжити
- розширення
- додатково
- не вдалося
- false
- риси
- зворотний зв'язок
- остаточний
- в кінці кінців
- виявлення
- Перший
- потік
- стежити
- після
- слідує
- для
- Рамки
- від
- далі
- розрив
- дав
- породжувати
- генерується
- генерує
- породжує
- покоління
- генеративний
- Генеративний ШІ
- отримати
- отримує
- Глобальний
- Цілі
- є
- Ручки
- Мати
- має
- he
- допомога
- допомагає
- тут
- високоякісний
- дуже
- його
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- Концентратор
- людина
- i
- ідентифікований
- if
- ілюструвати
- ілюструє
- наслідки
- важливо
- in
- неточні
- включати
- includes
- включати
- об'єднує
- неправильний
- Augmenter
- збільшений
- індекс
- індивідуальний
- інформація
- інформація
- Інфраструктура
- притаманне
- за своєю суттю
- початковий
- внутрішній
- інноваційний
- вхід
- екземпляр
- інструкції
- в
- викликали
- викликає
- питання
- питання
- IT
- ітерація
- робота
- приєднатися
- JPG
- знання
- озера
- мова
- великий
- більше
- УЧИТЬСЯ
- вивчення
- рівень
- рівні
- ліцензія
- як
- МЕЖА
- Лінія
- LLM
- розташований
- любов
- машина
- навчання за допомогою машини
- зробити
- РОБОТИ
- управління
- управління
- багато
- математичний
- Може..
- me
- медитація
- середа
- згаданий
- згадує
- повідомлення
- повідомлення
- метадані
- метод
- може бути
- мінімізувати
- MIT
- Пом'якшити
- ML
- модель
- Моделі
- MongoDB
- більше
- MS
- множинний
- безліч
- музика
- MySQL
- ім'я
- Імена
- Природний
- Обробка природних мов
- Необхідність
- потреби
- Нові
- наступний
- nlp
- некомерційний
- ноутбук
- зараз
- номер
- цілей
- of
- часто
- on
- тільки
- відкрити
- операції
- or
- порядок
- оригінал
- Інше
- наші
- вихід
- поза
- загальний
- Пройшов
- пристрасний
- шлях
- моделі
- Люди
- продуктивність
- виконується
- персонал
- Вчений ступінь
- plato
- Інформація про дані Платона
- PlatoData
- будь ласка
- пошта
- postgresql
- практики
- попередній
- необхідність
- передумови
- представити
- представлений
- Головний
- Проблема
- процес
- процеси
- обробка
- підказок
- забезпечувати
- за умови
- забезпечує
- цілей
- Python
- запити
- запит
- питання
- Швидко
- швидко
- лапки
- ганчіркою
- рейтинг
- рейтинги
- Читати
- готовий
- реалістичний
- отримати
- отримано
- рекомендувати
- послатися
- регіон
- пов'язаний
- доречний
- залишатися
- залишається
- представляти
- запросити
- вимагається
- Вимога
- Вимагається
- дослідження
- проживає
- рішення
- вирішене
- ресурси
- повага
- відповідь
- результат
- результати
- пошук
- повертати
- право
- Піднімається
- Risk
- ризики
- міцний
- ROW
- прогін
- мудрець
- користь
- то ж
- бачив
- сценарій
- сценарії
- наука
- Грати короля карти - безкоштовно Nijumi логічна гра гри
- другий
- розділ
- побачити
- вибрати
- SELF
- Продавці
- посланий
- Без сервера
- служить
- обслуговування
- Послуги
- комплект
- Повинен
- Показувати
- показ
- показаний
- сторона
- значний
- простий
- простота
- спрощує
- один
- уривок
- рішення
- Рішення
- ВИРІШИТИ
- деякі
- Source
- Джерела
- Іскритися
- спеціаліст
- конкретно
- Стажування
- старт
- почалася
- стан
- Заява
- Статус
- Крок
- заходи
- Як і раніше
- зберігання
- зберігати
- зберігати
- просто
- Стратегічний
- рядок
- структурований
- такі
- Підтриманий
- Переконайтеся
- синтаксис
- SYS
- система
- Systems
- таблиця
- Приймати
- Мета
- Завдання
- технічний
- Технології
- тест
- перевірений
- текст
- ніж
- Що
- Команда
- концентратор
- їх
- Їх
- потім
- Там.
- отже
- Ці
- третій
- це
- ті
- три
- через
- times
- назва
- назви
- до
- сьогодні
- Перетворення
- намагатися
- два
- тип
- Типи
- ui
- при
- зазнав
- розуміння
- якщо не
- Оновити
- оновлений
- us
- використання
- використовуваний
- користувач
- користувачі
- використовує
- використання
- ПЕРЕВІР
- значення
- різноманітність
- різний
- різний
- через
- думки
- послуга
- ходити
- шлях..
- we
- Web
- Веб-додаток
- веб-сервіси
- в той час як
- який
- в той час як
- чий
- волі
- з
- в
- без
- Work
- робочий
- запис
- лист
- X
- йога
- Ти
- вашу
- себе
- зефірнет