Представьте себе мир, в котором мы могли бы общаться с нашими данными на обычном человеческом языке. Преобразование текста в SQL — это проблема, которую стоит решить, и Open AI поможет нам решить эту проблему.

В фильме Финал Тони Старк (Роберт Дауни-младший) использует искусственный интеллект, чтобы помочь решить проблему путешествия во времени, когда он смотрит на проекцию ленты Мебиуса. Он делает это с помощью созданного им ИИ (ПЯТНИЦА). FRIDAY может рассчитать точное местоположение Камней Бесконечности в прошлом, настоящем и будущем. ИИ помог решить проблему путешествий во времени и позволил Мстителям отправиться в прошлое, найти камни и победить Таноса. Этот фильм вдохновляет на использование ИИ для решения сложных и, казалось бы, неразрешимых задач.

Теперь давайте снизим это до очень практического уровня и уровня, подходящего для нашего времени. Можем ли мы задать ИИ вопросы, связанные с данными, и получить данные для нас?

В 1970-х IBM изобрела SQL (язык структурированных запросов). Он был создан для использования с их системой управления реляционными базами данных, которую они выпустили в 1980-х годах, и был специально разработан для бизнес-пользователей, которым нужен доступ к данным для ответов на вопросы, связанные с бизнесом. С технической точки зрения SQL уже очень прост, но вам все еще необходимо изучить его основы, чтобы в полной мере использовать возможности данных, хранящихся в различных базах данных.

С годами популярность SQL упала с появлением технологий баз данных NoSQL (например, MongoDB). Однако для обычного бизнес-пользователя SQL по-прежнему остается наиболее гибким способом доступа к данным и высокоуровневого анализа данных. Несмотря на простоту, SQL требует крутой кривой обучения, чтобы сделать его полностью пригодным для использования бизнес-пользователем. Проблема, которую мы хотели бы решить, заключается в том, можем ли мы позволить бизнес-пользователям задавать вопросы, связанные с данными, без написания сложного кода SQL.

В 2022 году наблюдается экспоненциальный рост технологий ИИ, и довольно скоро мы сможем использовать ИИ подобно тому, как это сделал Тони Старк в фильме. Введите OpenAI, эта технология теперь позволяет нам задавать вопросы типа Напишите мне SQL-запрос для подсчета всех заказов из Финляндии? Затем он напишет следующее:

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

Это не попытка решить эту проблему, а скорее попытка вдохновить любого, кто читает ее, на то, чтобы избавиться от любопытства и исследовать. В течение многих лет было много компаний, которые пытались решить проблемы бизнес-пользователей и придумали решения для запросов данных на основе свободного текста. Как это работает, так это то, что у пользователя есть свободное текстовое поле, где он/она/он/она пишет запрос данных и выводит данные — все это делается без написания единого кода SQL.

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

Решаемой проблемы нет. 1: Сообщите ИИ источник данных, из которого вы хотите, чтобы он запрашивал данные.

Как вы можете видеть в приведенном выше примере, я попросил его подсчитать количество заказов, и он решил, что таблица с именем ***orders*** будет наиболее логичной таблицей для этого запроса.

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

Вот пример:

Решаемой проблемы нет. 2: Сообщите ИИ о столбцах, которые человек хочет запросить.

В этом примере «Покажите мне сумму продаж за 2022 год» ИИ знал, что «продажи» — это столбец:

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

Решаемой проблемы нет. 3. Решите, как ИИ будет фильтровать данные.

По-прежнему используя приведенный выше пример, ИИ отфильтровал order_date между 01.01.2022 и 31.12.2022. ИИ знал, что order_date — это столбец для даты, даже если мы не упомянули об этом, чтобы отфильтровать именно по этому столбцу. Сложность здесь заключается в том, как представлены даты, например, он решил писать в формате ГГГГ-ММ-ДД, так что вы можете себе представить, что это немного отличается в разных регионах мира. Например, в Европе это будет в формате ДД-ММ-ГГГГ.

Решаемой проблемы нет. 4. Решите, как ИИ будет правильно группировать данные.

В этом случае использования я должен был явно указать группу по оператору, иначе он не использовал группу по оператору. Обычные бизнес-пользователи вряд ли написали бы запрос таким образом.

Решаемой проблемы нет. 5. Как объединить данные?

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

Ну, это немного сложно, но знаете что? Я узнал, что ИИ предлагает разместить столбец продавца внутри таблицы заказов, удивительно, не так ли? Таким образом, предполагается, что соединения таблиц не требуются.

В некотором смысле это имеет смысл для простоты, потому что не нужно выполнять соединения, и обычный бизнес-пользователь не будет знать, что данные о заказах и продавцах находятся в двух отдельных таблицах. К сожалению, в классических принципах управления базами данных вы обычно разделяете таблицы фактов и измерений. Но эй, вот почему они изобрели представления, верно? Позвольте ИИ использовать представления БД или кураторские таблицы, чтобы включить ИИ.

Решаемой проблемы нет. 6. Соберите данные от ваших бизнес-пользователей, как они обычно задают бизнес-вопросы о данных и как они решают эту проблему?

Здесь вы можете обратиться к заявкам (например, JIRA, Github), которые были написаны для групп разработки данных или аналитики, а затем был создан соответствующий запрос для создания результатов для этого бизнес-пользователя. Затем вы, вероятно, можете использовать подходы ИИ для обучения модели, которая может анализировать написанные людьми вопросы в SQL-запросы — это немного сложно, но, как уже говорилось, если у вас нет контролируемых наборов данных, это будет означать многочисленные соединения SQL и сложную логику для поставить фундаментальный вопрос.

Решаемой проблемы нет. 7. Используйте НЛП для решения задач ИИ.

Помните, в задачах 1 и 2 мы использовали функцию замены. Что, если бы мы использовали подход обработки естественного языка (NLP) и построили модель, которая могла бы заменить любое естественное слово и перевести его в технический текст, например, мы могли бы создать модель, которая могла бы классифицировать слово и определить, какой технический термин он должен использовать. ссылка к:

Суть в том, чтобы собрать как можно больше данных от ваших пользователей данных и выяснить, какие типы естественных слов они будут использовать и какие данные они ожидают получить. Сбор слов, а затем их маркировка утомительны, а также подвержены проблемам с похожими именами таблиц/столбцов. Но это то, что стоит изучить.

Решаемой проблемы нет. 8. С кем мы можем объединить усилия, чтобы решить проблему преобразования текста в SQL.

  1. Data QnA (Google) — разрабатывается Google и сейчас находится в альфа-версии, документацию можно найти по ссылке: https://cloud.google.com/blog/products/data-analytics/introduction-data-qna
  2. QueryGenie — Шивапрасад Бхат решает проблему с помощью GPT3. Вы можете проверить эту работу через QueryGenie: https://sqlgenie-co.web.app/
  3. Alphaa.ai — Saurabh Moddy смог решить объединение нескольких таблиц и деконструкцию на уровне значений столбцов. Посмотрите его демо: https://youtu.be/65Z26y8pzoo
  4. NLIDB — Интерфейс естественного языка к базе данных (NLIDB) — это система, которая позволяет пользователю получать доступ к информации, хранящейся в базе данных, путем ввода запросов, выраженных на каком-либо естественном языке (например, английском) или подмножестве естественного языка. Если вы хотите узнать подробнее они опубликовали руководство: https://arxiv.org/pdf/cmp-lg/9503016.pdf
  5. Код Lolo — Создание чат-бота SQL WhatsApp с использованием OpenAI: https://www.youtube.com/watch?v=vm2oJmU_buI

Краткое содержание

Проблема text-to-sql — это проблема, которая еще не имеет идеального решения, а если и решалась, то известные технологии еще не известны или все еще находятся в зачаточном состоянии. С выпуском Open AI эта проблема теперь может быть решена гораздо дальше, пока коммерчески жизнеспособное решение не станет основным. Спасибо за чтение, и я надеюсь, что это вдохновит вас на решение этой проблемы.