25.08.2026 Платформа «Неравнодушный человек» делится результатами ВКР студентов НИ ТГУ под руководством Дмитрия Котова, генерального директора аналитического агентства Vox populi, руководителя Интеллект’Лаб платформы «Неравнодушный человек».
Для нас важен не только результат этой работы, но и сам подход. Платформа «Неравнодушный человек» помогает студентам пробовать новые технологии на практике, работать с реальными задачами и получать опыт вместе с экспертами. Для платформы «Неравнодушный человек» это близкая тема: мы работаем с исследованиями и большими массивами данных, поэтому с интересом следим за новыми решениями и делимся ими с вами!
Можно ли задавать вопросы к данным обычными словами?
Обычно, чтобы получить информацию из базы данных, нужно понимать, где именно она хранится, какие таблицы использовать и как сформулировать SQL-запрос. Но человек формулирует вопросы не на языке SQL. Он спрашивает: «Как изменились продажи за последний месяц?», «Какие товары чаще всего возвращают?», «Что происходило с остатками на складе?».
И здесь возникает интересная задача: может ли система понять такой вопрос, перевести его в SQL код и при этом не ошибиться в том, что именно хотел узнать пользователь? Если вопрос сформулирован неоднозначно, система не должна угадывать и галлюцинировать – она должна понять, что ей не хватает информации, и попросить пользователя уточнить запрос. А еще лучше – конструировать SQL-запрос прямо по ходу ведения диалога в чате, чтобы в реальном времени пользователь увидел свой запрос в SQL коде. А когда все условия учтены, пользователь мог отправить этот SQL запрос на выполнение и получить ответ. И чтобы была возможность так работать со всей базой данных.
Именно такую идею исследовали студенты НИ ТГУ Максим Резниченко, Илья Числов и Любовь Ильина в рамках ВКР под руководством Дмитрия Котова, генерального директора аналитического агентства Vox populi, руководителя Интеллект’Лаб платформы «Неравнодушный человек».
Как устроен NL2SQL-агент
Студенты исследовали, можно ли задавать вопросы к данным словами. Обычно, чтобы получить информацию из базы данных, нужно понимать ее структуру и самостоятельно формировать SQL-запрос. Но пользователь не думает в терминах таблиц, полей и SQL – он просто задает вопрос, например: «Как изменились продажи за последний месяц?». Возникает вопрос: можно ли сделать так, чтобы система сама перевела такой вопрос в SQL-запрос?
Именно для решения этой задачи студенты разработали прототип NL2SQL-агента – системы, которая переводит вопрос человека с естественного языка в запрос к базе данных.
Но одного перевода вопроса в SQL недостаточно. Сначала нужно было подготовить данные. Для работы использовали данные розничной сети. 15 таблиц с исходной информацией объединили в 16-ю – подготовленную витрину данных. Для нее заранее определили, что хранится в данных, какие есть показатели, за какие периоды они доступны, как они связаны между собой и какие особенности нужно учитывать при запросах. Такая подготовка нужна для того, чтобы агент понимал, с какими данными он работает и где искать информацию для ответа на конкретный вопрос.
Как агент работает с вопросом пользователя?
Например, человек спрашивает: «Как изменились продажи за месяц?». В это время агент определяет, какие данные нужны для ответа, формирует SQL-запрос, проверяет запрос, выполняет его, получает данные из 16-й витрины и возвращает ответ пользователю. При этом человеку не нужно самостоятельно разбираться в устройстве базы.
Но что делать, если вопрос сформулирован неоднозначно? Человек может задать вопрос так, что система не сможет однозначно понять, какие данные и показатели нужны для ответа. Например: «Как изменились продажи за месяц?». Что считать продажами? Какой именно месяц? Какие данные использовать?
Если агент не может однозначно сформировать SQL-запрос, он не выдает предположительный ответ, а просит пользователя уточнить вопрос. Таким образом, сначала поступает вопрос пользователя, затем агент анализирует формулировку и определяет, можно ли сформировать SQL. Если да – формирует и выполняет запрос. Если нет – просит уточнить вопрос.
Такой подход позволяет отделить правильный ответ от догадки: либо формируется корректный SQL-запрос, либо система возвращается к пользователю за уточнением.
Что получилось в результате
Прототип протестировали на сценариях операционной аналитики. Среднее время ответа – 1,2 секунды. Однако главный результат эксперимента оказался не только в скорости работы. Исследование показало, что для такого агента важно не просто научиться генерировать SQL-запросы. Агент должен понимать, когда вопрос сформулирован недостаточно точно.
В результате получился прототип NL2SQL-агента – системы, которая переводит вопросы человека с естественного языка в запросы к базе данных.
«Очень ценно работать с замотивированными студенческими командами, которые видят интерес и пользу в том, чем занимаются. Совместная работа над реальными проектами и воплощение идей – полезный опыт как для ребят, так и для экспертов. Мы изучаем вопрос и пробуем воплотить его в жизнь через работающий прототип. Конкретно в этой работе видно, что будущее аналитики – за созданием ИИ-ассистентов для исследователей, которые понимают данные и умеют с ними работать. Такое решение помогает ускорить процесс исследования и поиск инсайтов в данных» –
прокомментировал Дмитрий Котов, генеральный директор аналитического агентства Vox populi, руководитель Интеллект’Лаб платформы «Неравнодушный человек».
«Выбрали эту тему, потому что нам было интересно проверить, можно ли сделать работу с базами данных такой же простой, как обычный диалог. Самым сложным оказалось научить систему не просто переводить вопросы в SQL, а понимать их смысл и запрашивать уточнения, если информации недостаточно» –
отметил Максим Резниченко, один из студентов, работавших над ВКР.