Сравнение с ручными SQL-запросами и выгрузками в Excel
Text-to-SQL на русском: вопросы к базе данных обычным языком
ручными SQL-запросами и выгрузками в Excel
Text-to-SQL — это когда нейросеть переводит вопрос на обычном языке («сколько заказов закрыто в сентябре по менеджерам») в запрос к базе данных и возвращает ответ. Языковые модели уже уверенно пишут SQL и понимают русский, поэтому главная трудность не в синтаксисе, а в другом: модель должна знать схему базы и смысл ваших терминов, а запрос должен выполняться с узкими правами. В Интеграме модель вообще не пишет SQL: агент ИИ-чата составляет запрос на языке Интеграма — какие таблицы, колонки, фильтры и итоги нужны, — а ядро платформы само переводит его в SQL и выполняет с правами пользователя. Запрос остаётся в базе обычным отчётом, его можно открыть и проверить.
Text-to-SQL устроен просто. Пользователь пишет вопрос, система передаёт модели этот вопрос вместе с описанием базы — какие есть таблицы, колонки и связи, — модель составляет SQL-запрос, система его выполняет и показывает таблицу или число. Массовым этот подход стал вместе с большими языковыми моделями: они хорошо пишут код, включая SQL, и понимают вопросы на русском. Например, Сбер в описании линейки GigaChat 2 (Lite, Pro и Max) отдельно говорит о написании кода и о вызове внешних функций — двух навыках, на которых держатся и Text-to-SQL, и ИИ-агенты. Сложность Text-to-SQL не в языке SQL, а в смысле вопроса. «Выручка» — с НДС или без, по дате оплаты или отгрузки? Кто считается «активным клиентом»? Что лежит в колонке status2, и почему в поле «Город» встречаются и «Москва», и «г. Москва»? Человек-аналитик знает это из опыта, модель — только из того, что ей передали. Исследователи это учитывают: бенчмарк BIRD собран из 12 751 пары «вопрос — SQL» на 95 реальных базах общим объёмом 33,4 ГБ из более чем 37 предметных областей, со специально «грязными» значениями и вопросами, для которых нужны внешние знания. Даже у людей — инженеров данных и студентов-специалистов по базам — точность исполнения на нём указана на уровне 92,96%. Вывод простой: безошибочного перевода вопроса в запрос не бывает, поэтому важно не только как ИИ пишет запрос, но и как устроены права, проверка и следы. Точность упирается не только в модель, но и в то, что ей передали. Мы проверяли это на своём замере семи моделей: при поиске по словам GigaChat 2 Max, YandexGPT Pro и Claude Opus 5 отвечают верно в 40–42% случаев, а с памятью, которая подаёт модели нужные факты, GigaChat 2 Max выходит на 57% и обходит Claude Opus 5 без неё (41%). Задача там другая — найти в истории проекта изменение, которое уже чинило проблему, — но вывод для Text-to-SQL тот же: актуальная схема и описание данных в контексте дают больше, чем смена модели.
Три способа получить ответ из базы
Text-to-SQL можно «прикрутить» к любой СУБД, но тогда схему, права и проверку ответа приходится решать отдельно. В Интеграме модель пишет не SQL, а запрос платформы, и эти вопросы решает ядро.
| SQL вручную | Text-to-SQL поверх СУБД | ИИ-чат в Интеграме | |
|---|---|---|---|
| Кто составляет запрос | Аналитик или программист, знающий SQL и схему | Модель пишет SQL по вопросу и по описанию схемы, переданному в промт | Агент пишет запрос на языке Интеграма (отчёт: колонки, фильтры, итоги), SQL из него строит ядро |
| Знание схемы | В голове аналитика и в документации | Описание схемы нужно собрать и поддерживать, иначе модель гадает по названиям колонок | Описание таблиц хранится рядом с данными; новая таблица видна агенту сразу после создания |
| С какими правами выполняется | С учётной записью СУБД аналитика | Часто с общим сервисным ключом; нужна отдельная учётная запись только на чтение | С правами пользователя: проверка на сервере, как для действия человека |
| Риск изменить данные | Зависит от дисциплины аналитика | Если у учётной записи есть права записи, модель может сгенерировать UPDATE или DELETE | Удаление и изменение структуры — только после подтверждения человеком |
| Проверка ответа | Аналитик видит свой запрос | Нужно показывать пользователю сгенерированный SQL | Отчёт с видимыми колонками, фильтрами и итогами остаётся в системе — его читают без знания SQL |
| Что остаётся после | Запрос в файле аналитика | Ответ в окне чата | Отчёт в базе и запись в журнале обращений к ИИ |
Контекст
Text-to-SQL нужен там, где вопросы к данным есть у многих, а SQL знают единицы. Типичные вопросы, которые сотрудники хотят задать базе обычным языком:
- руководитель продаж: «сколько сделок закрыто в сентябре по каждому менеджеру и какая средняя сумма»;
- склад: «какие позиции не двигались больше 90 дней и сколько их на остатке»;
- договорной отдел: «у каких клиентов договор истекает в ближайшие 60 дней и кто за них отвечает»;
- финансы: «сравни оплаты по месяцам за этот и прошлый год»;
- сервис: «сколько заявок просрочено и у кого из исполнителей их больше всего».
Как это решает Интеграм
В Интеграме вопрос к данным задают в ИИ-чате внутри базы — он есть и в каждом приложении, собранном через сервис «Excel → приложение». За чатом стоит агент с инструкцией по работе с платформой: он умеет не только отвечать на вопросы, но и достраивать само приложение — таблицы, экраны, роли. Строки подключения к СУБД у него нет, он работает через API Интеграма под учётной записью пользователя. Вопрос к данным проходит так:
- вопрос пишется обычными словами — ИИ-консультанту на экране таблицы, карточки или отчёта, в ИИ-чат базы или во внешнем ИИ-клиенте, подключённом через MCP-сервер integram-mcp;
- агент читает актуальную структуру базы — таблицы, колонки, типы и связи — через API; видно только то, что разрешено этой учётной записи;
- агент составляет запрос на языке Интеграма. Запрос — это запись в служебной таблице «Запрос»: какие колонки взять, из каких таблиц и по каким связям, что суммировать или считать, как сортировать. Условия передаются параметрами — например, «Дата с 01.09.2026 по 30.09.2026», «Статус = Закрыта»;
- ядро переводит такой запрос в SQL — со связями, агрегатами, вложенными запросами и рекурсией — и выполняет его. Маска роли («менеджер видит только своих клиентов») применяется к запросу автоматически, обойти её формулировкой вопроса нельзя;
- ответ приходит в чат, а отчёт остаётся в системе: его можно открыть, проверить фильтры, выгрузить в XLSX или забрать в JSON по тому же адресу;
- если из вопроса вырастает действие — «закрой эти заявки», «добавь колонку», — удаление и изменение структуры выполняются только после подтверждения человеком, а каждое обращение к ИИ записывается в журнал;
- для чувствительных данных модель разворачивается в вашем контуре (Ollama, vLLM), а для внешней модели правила DLP задают таблицы, которые в неё отправлять нельзя.
Вопросы и ответы
Что такое Text-to-SQL простыми словами?
Это перевод вопроса на обычном языке в запрос к базе данных. Вы пишете «сколько заказов закрыто в сентябре», нейросеть по описанию базы составляет SQL-запрос, система его выполняет и показывает результат.
Может ли нейросеть написать SQL-запрос по вопросу на русском?
Да. Большие языковые модели пишут SQL и понимают русский. Основная трудность не в языке, а в том, знает ли модель схему вашей базы и что вы имеете в виду под «выручкой» или «активным клиентом».
Насколько точен Text-to-SQL?
Универсальной цифры нет: всё зависит от модели, схемы, качества данных и формулировки вопроса. Показательно, что на бенчмарке BIRD с реальными «грязными» базами даже у людей-специалистов точность исполнения указана около 93%. Поэтому ответы для важных решений нужно проверять.
Можно ли использовать GigaChat для запросов к базе данных?
GigaChat — семейство моделей Сбера; по описанию разработчиков, GigaChat 2 пишет код и умеет вызывать внешние функции, то есть подходит и для генерации SQL, и для агентных сценариев. Для Text-to-SQL выбор модели — лишь часть задачи: нужны ещё актуальная схема, узкие права и проверка результата. В нашем замере GigaChat 2 Max с хорошим контекстом обошёл Claude Opus 5 с обычным поиском — 57% против 41%.
Пишет ли ИИ-чат Интеграма SQL?
Нет. Агент составляет запрос на языке Интеграма — колонки, связи, фильтры, итоги, — а ядро платформы переводит его в SQL и выполняет с правами пользователя. Поэтому модели не нужно знать устройство хранилища, а запрос остаётся в базе обычным отчётом, который можно открыть и проверить.
Не испортит ли ИИ данные, отвечая на вопрос?
В Интеграме агент работает с правами пользователя, а удаление и изменение структуры выполняет только после подтверждения человеком. Для вопросов к данным агенту достаточно роли только на чтение.
Нужно ли заранее описывать базу для ИИ?
В Интеграме — нет. Агент читает структуру таблиц при каждом запросе, поэтому новая таблица или колонка доступна для вопросов сразу после создания.