Text-to-SQL

Запросы к корпоративным данным на естественном языке. Позвольте каждому сотруднику получать ответы из DWH без знания SQL.

Обсудить проект

Проблема: данные доступны не всем

Корпоративные хранилища данных содержат терабайты ценной информации, но доступ к ней ограничен узким кругом специалистов. Бизнес-пользователи вынуждены ждать аналитиков, а аналитики тонут в очереди ad-hoc запросов.

20%

Сотрудников владеют SQL

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

3-5 дней

Среднее время ожидания

Типичное время выполнения ad-hoc запроса от бизнес-пользователя до получения результата. В пиковые периоды (закрытие квартала, подготовка отчётности) очередь может растягиваться до 2-3 недель.

67%

Решений принимаются без данных

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

Text-to-SQL меняет парадигму. Вместо того чтобы учить каждого сотрудника SQL или нанимать больше аналитиков, AI-система переводит вопросы на естественном языке в точные SQL-запросы, демократизируя доступ к данным в организации.

Два подхода к Text-to-SQL

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

Direct LLM-to-SQL Вопрос пользователя LLM (GPT / Claude) Raw SQL Database / DWH Галлюцинации Неверные JOIN Нет бизнес-логики Нет безопасности Text-to-Semantic-SQL Вопрос пользователя LLM (GPT / Claude) Семантический запрос Semantic Layer Validated SQL Database / DWH Метрики Бизнес-правила Валидация Row-level security

Direct LLM-to-SQL

LLM напрямую генерирует SQL-запрос на основе схемы базы данных и вопроса пользователя.

  • Быстрый старт: не требует предварительной настройки семантического слоя, достаточно предоставить модели DDL-схему
  • Галлюцинации: модель может придумать несуществующие таблицы и столбцы, особенно при сложных схемах с сотнями таблиц
  • Неправильные JOIN: LLM не знает бизнес-логику связей между таблицами и может строить некорректные соединения
  • Дублирование логики: бизнес-правила расчёта метрик приходится описывать в каждом промпте заново
  • Безопасность: нет встроенного контроля доступа к данным, возможны SQL-инъекции и доступ к запрещённым данным

Text-to-Semantic-SQL

LLM генерирует запрос в терминах семантического слоя, который затем транслируется в оптимизированный SQL.

  • Точность 85-95%: семантический слой ограничивает пространство запросов до валидных метрик и измерений, минимизируя галлюцинации
  • Единая бизнес-логика: расчёт метрик определён один раз в семантическом слое и применяется ко всем запросам единообразно
  • Корректные связи: все JOIN и агрегации определены заранее, модель не может построить некорректное соединение
  • Безопасность: row-level security, column-level security и ACL контролируются семантическим слоем
  • Оптимизация: семантический слой генерирует оптимизированный SQL, учитывая специфику целевой СУБД

Почему прямой SQL опасен для enterprise

Прямая генерация SQL с помощью LLM может работать в прототипах и демо, но в производственной среде крупной организации создаёт системные риски.

Галлюцинации в SQL

LLM может использовать несуществующие таблицы, столбцы или функции. При схеме в 500+ таблиц вероятность галлюцинации достигает 30-40%. В лучшем случае запрос вернёт ошибку, в худшем - неверные данные, на основе которых будут приняты бизнес-решения.

Неправильные JOIN

Модель не понимает бизнес-контекст связей между таблицами. Она может выполнить CROSS JOIN вместо LEFT JOIN, пропустить фильтрацию по дате актуальности или соединить таблицы по одноимённым, но семантически разным полям.

Отсутствие бизнес-логики

Метрика «выручка» может рассчитываться по-разному в разных департаментах: с НДС или без, включая возвраты или нет, с учётом скидок или без. LLM не знает, какую формулу применить, и каждый раз может посчитать по-разному.

Проблемы производительности

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

SQL-инъекции

Злонамеренный пользователь может сформулировать вопрос таким образом, чтобы LLM включил в SQL деструктивные команды: DROP TABLE, UPDATE, DELETE. Без песочницы и валидации это прямая угроза данным.

Нет аудита и контроля

Каждый запрос генерируется «с нуля» без централизованного логирования бизнес-намерений. Невозможно понять, какие вопросы задавали пользователи, и проверить корректность ответов постфактум.

Вывод: прямой подход LLM-to-SQL подходит для прототипов и экспериментов, но в production-среде enterprise-компании необходим семантический слой как посредник между LLM и базой данных.

Роль семантического слоя

Семантический слой выступает единым источником бизнес-определений, метрик и правил доступа. Он превращает хаотичную схему DWH в структурированный бизнес-глоссарий, понятный и людям, и AI.

Метрики и KPI

Единые определения всех бизнес-метрик: выручка, маржа, LTV, конверсия, NPS. Каждая метрика определяется один раз с точной формулой расчёта, включая обработку edge-cases, и используется во всех запросах единообразно. Это устраняет классическую проблему «у нас три разных цифры выручки».

Измерения и иерархии

Бизнес-измерения (время, география, продукт, клиент) с определёнными иерархиями и связями. Модель знает, что «регион» включает «города», а «квартал» состоит из «месяцев». Это позволяет LLM корректно агрегировать данные и применять drill-down.

Связи между сущностями

Все отношения между бизнес-сущностями определены явно: клиент - заказ - товар - категория. Семантический слой гарантирует корректные JOIN и предотвращает fan-out проблемы при соединении таблиц разной гранулярности.

Бизнес-правила и фильтры

Правила вроде «активный клиент = покупка за последние 12 месяцев» или «рабочий день = исключая выходные и праздники» определяются в семантическом слое. LLM использует готовые определения вместо того, чтобы угадывать бизнес-логику.

Контроль доступа

Row-level security и column-level security на уровне семантического слоя. Менеджер по продажам видит только данные по своему региону, а HR-аналитик не имеет доступа к финансовым показателям. Все ограничения применяются автоматически, независимо от формулировки вопроса.

Кэширование и оптимизация

Семантический слой может кэшировать результаты популярных запросов, применять материализованные представления и оптимизировать SQL под конкретную СУБД. Это снижает нагрузку на DWH и ускоряет время отклика для пользователя.

Единый источник правды

Семантический слой становится single source of truth для всей организации. Одни и те же метрики используются в BI-отчётах, Text-to-SQL запросах, API и embedded analytics. Это устраняет расхождения между отчётами разных департаментов и повышает доверие к данным.

Ускорение разработки

Новые метрики и аналитические сценарии добавляются в семантический слой за часы, а не за недели. При этом они сразу становятся доступны через все каналы: BI, Text-to-SQL, API. Это кардинально ускоряет time-to-insight для бизнеса.

Интеграция с корпоративными DWH

Text-to-SQL через семантический слой работает с любым современным хранилищем данных. Мы обеспечиваем оптимизацию генерируемого SQL под специфику каждой платформы.

Snowflake

Полная поддержка Snowflake SQL, включая semi-structured data (VARIANT), Time Travel, dynamic tables. Оптимизация под warehouse sizing и micro-partitions.

ClickHouse

Генерация запросов с учётом колоночного хранения, materialized views, движков MergeTree. Оптимизация агрегирующих запросов для максимальной производительности.

PostgreSQL

Поддержка расширенного PostgreSQL, включая оконные функции, CTE, JSONB-запросы. Интеграция с TimescaleDB для временных рядов и PostGIS для геоданных.

Greenplum

Оптимизация для MPP-архитектуры Greenplum: распределённые запросы, partitioning, колокация данных. Учёт специфики параллельного выполнения.

Мультибазовые запросы

Семантический слой может объединять данные из нескольких источников в рамках одного запроса. Пользователь спрашивает «покажи выручку по регионам с учётом NPS», а система автоматически собирает данные из финансового DWH и CRM, объединяя их на уровне семантики.

Защита от деструктивных запросов

Семантический слой по определению генерирует только SELECT-запросы. Это физически исключает возможность SQL-инъекции, приводящей к модификации или удалению данных. Дополнительно применяются лимиты на объём выборки и время выполнения запроса.

Важно: независимо от выбранного DWH, семантический слой обеспечивает единый интерфейс для Text-to-SQL. При миграции с одного хранилища на другое (например, с PostgreSQL на ClickHouse) пользовательский опыт не меняется — перестраивается только нижний уровень генерации SQL.

Как BI Consult внедряет Text-to-SQL

Наш подход основан на итеративном наращивании покрытия: от MVP с ключевыми метриками до полноценной системы самообслуживания.

Аудит и discovery (1-2 недели)

Инвентаризация существующих источников данных, анализ наиболее частых ad-hoc запросов от бизнес-пользователей, определение ключевых метрик и измерений для семантического слоя. Формирование приоритизированного списка сценариев.

Построение семантического слоя (2-4 недели)

Моделирование метрик, измерений и связей в семантическом слое. Настройка бизнес-правил, формул расчёта, иерархий и ACL. Интеграция с целевым DWH и валидация результатов на исторических данных.

Настройка AI-интерфейса (1-2 недели)

Интеграция LLM с семантическим слоем, настройка промптов, тестирование на реальных вопросах пользователей. Развёртывание чат-интерфейса или интеграция в существующие инструменты (Slack, Teams, корпоративный портал).

Пилот и итерации (2-4 недели)

Запуск пилота с группой бизнес-пользователей, сбор обратной связи, расширение покрытия метрик, тонкая настройка промптов на основе реальных ошибок. Доведение точности до 90%+ на целевых сценариях.

Готовы дать данным голос?

Обсудим, как внедрить Text-to-SQL в вашей организации: от выбора подхода до запуска пилота с первыми бизнес-пользователями.

Обсудить проект