Text-to-SQL — генерация SQL из текста
Естественный язык → SQL запросы
Проблема: Бизнес-пользователям нужны данные, но они не умеют писать SQL. Разработчики превращаются в узкое место для каждого запроса "Можете вытащить цифры по...?". Как позволить любому запрашивать базу данных?
Решение: Поговори со своей базой данных
Text-to-SQL использует LLM для преобразования вопросов на естественном языке в SQL-запросы. Модели нужна схема базы данных (таблицы, столбцы, связи) в качестве контекста, после чего она генерирует корректный SQL. Это как переводчик между вопросами человека и языком базы данных — любой член команды может запрашивать данные без знания SQL.
Представьте это как эксперт по базам данных, говорящий обычным языком:
- 1. Предоставляем схему базы данных: Включаем CREATE TABLE, описания столбцов и примеры значений в промпт
- 2. Пользователь спрашивает на естественном языке: "Какие 5 продуктов принесли наибольшую выручку в прошлом месяце?" — знание SQL не нужно
- 3. LLM генерирует SQL-запрос: Модель выдаёт корректный SELECT с нужными JOIN, агрегациями и фильтрами
- 4. Валидируем и очищаем SQL: Парсим AST, отклоняем любые изменяющие данные операторы и применяем row-level security
- 5. Выполняем на read-only реплике: Безопасно выполняем запрос, возвращаем результаты и отображаем в интерфейсе пользователя
Где это используется?
- Бизнес-аналитика: "Покажи продажи по регионам в этом квартале" мгновенно превращается в корректный GROUP BY запрос
- Дашборды поддержки клиентов: Агенты поддержки получают живую статистику тикетов без обращения к дата-инженеру
- Самостоятельная отчётность: Маркетинговые и финансовые команды самостоятельно запрашивают свои данные, устраняя зависимость от разработчиков
- Исследование данных: Аналитики задают уточняющие вопросы на естественном языке вместо переписывания запросов
- Частая ловушка: выполнение SQL без валидации: Никогда не выполняйте SQL от LLM на продакшене без валидации — всегда запускайте на read-only реплике, защищайтесь от инъекций и требуйте подтверждения человека для деструктивных операций (UPDATE, DELETE)
Интересный факт: Бенчмарк Spider для Text-to-SQL содержит более 10 000 вопросов по 200+ базам данных. Топовые LLM достигают 85%+ точности на простых запросах, но снижаются до ~50% на сложных многотабличных JOIN. Секрет? Предоставление описаний столбцов и примеров значений вместе со схемой повышает точность на 15-20%.
Попробуйте сами!
Попробуй интерактивный пример ниже, чтобы увидеть, как вопросы на естественном языке преобразуются в SQL-запросы, и научись распознавать типичные ошибки перевода.
Перевод текста в SQL
Посмотрите, как вопросы на естественном языке превращаются в SQL-запросы шаг за шагом.
- • Без точных имён таблиц и колонок LLM угадывает неверно. Всегда предоставляйте полную схему.
- • Одиночные SELECT с базовыми WHERE дают 85%+ точности. Сложные JOIN требуют ручной проверки.
- • Никогда не запускайте SQL от LLM на продакшене. Используйте read-only. Один пропущенный WHERE может удалить таблицу.
Попробуй сам
Интерактивное демо этой техники
Преобразуй простой вопрос на естественном языке в SELECT-запрос
SELECT * FROM users WHERE city = "Moscow";
SELECT id, name, email, city, created_at
FROM users
WHERE city = 'Moscow'
AND is_active = true
ORDER BY name ASC;
Text-to-SQL без схемы — это угадывание. Предоставление DDL-схемы, стандартов кавычек и правил SELECT * превращает приблизительный запрос в корректный, готовый к выполнению SQL.
Создайте бесплатный аккаунт для решения челленджей
1 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения