Text2SQL — сервис, который превращает запрос на естественном языке в SQL. Пользователь пишет «Покажи всех пользователей старше 25 лет», система возвращает готовый SELECT и при необходимости выполняет его в БД и визуализирует результат.
Пайплайн Text2SQL
НЯ — естественный язык. Классификация сложности (easy/medium/hard) задаёт число кандидатов SQL (1, 3 или 5); Schema Linking находит релевантные таблицы и условия JOIN; Few-shot подтягивает похожие успешные примеры; Self-consistency генерирует несколько вариантов; LLM-as-a-judge выбирает лучший.
Как это устроено
Запрос проходит многоступенчатый пайплайн: предобработка и перефразирование, классификация сложности (easy/medium/hard), автоматический поиск релевантных таблиц (Schema Linking), поиск похожих успешных примеров (Few-shot), генерация нескольких вариантов SQL (Self-consistency), выбор лучшего варианта (LLM-as-a-judge), валидация и при необходимости выполнение в БД и визуализация (таблица, график, текст).
Сценарии применения
- Бизнес-аналитика: не-технические пользователи получают данные без знания SQL; быстрые отчёты и дашборды.
- Интеграция в приложения: голосовые помощники, чат-боты по БД, Natural Language Interface к данным.
- Разработка и тестирование: быстрая генерация SQL, проверка сценариев, документирование примеров.
- Обучение и демо: обучение SQL на примерах, прототипирование запросов.
- Автоматизация аналитики: регулярные отчёты, интеграция в мониторинг.
Ключевые возможности
| Возможность | Описание |
|---|---|
| Точность | До 80–86% за счёт self-consistency и LLM-as-a-judge |
| Сложность | Разные стратегии: easy — 1 кандидат, medium — 3, hard — 5 |
| Безопасность | По умолчанию только SELECT |
| JOIN | Автоматический поиск таблиц и условий JOIN |
| Без БД | Можно работать без сохранения схем и данных — передавать schema_definition в запросе |
Стек: FastAPI, LLM (например инструкционная Qwen для кода/SQL), эмбеддинги для поиска примеров, PostgreSQL опционально (кэш, история, few-shot), Prometheus и Grafana для метрик.
Итого: Text2SQL переводит вопрос с естественного языка в SQL через пайплайн с классификацией сложности, schema linking, few-shot и self-consistency; можно использовать без своей БД, передавая схему в запросе.