Какие открытые модели действительно хороши в SQL, измеренные одинаково
Опубликованные цифры моделей text-to-SQL нельзя сравнивать между собой. Каждая получена авторами модели, при их промпте и их способе подачи схемы, и разница от этого больше, чем разница между самими моделями. На этой странице они измеряются одним способом, а протокол публикуется до прогона, а не после.
Что заявляют сегодня
Это цифры, которые публикуют сами авторы, и рейтинг, который из них получается. Два правых столбца читайте раньше среднего. Седьмая и восьмая строки это те же модели, измеренные иначе: XiYanSQL-32B теряет пять пунктов, когда схема подаётся как DDL, а не как M-Schema, а Qwen2.5-Coder-32B это универсальная модель под моим собственным протоколом. Лидером пользоваться нельзя вовсе, потому что его веса так и не выложили.
| # | Модель | Заявлено на BIRD dev | Веса | Источник |
|---|---|---|---|---|
| 1 | Arctic-Text2SQL-R1-32B32B · Snowflake | 70.47 | не выложены | статья |
| 2 | Arctic-Text2SQL-R1-7B7B · Apache-2.0 · Snowflake | 68.9 | можно скачать | карточка модели |
| 3 | XiYanSQL-QwenCoder-32B32B · Apache-2.0 · XGenerationLab | 67.14 | можно скачать | карточка модели |
| 4 | XiYanSQL-QwenCoder-14B14B · Apache-2.0 · XGenerationLab | 65.32 | можно скачать | карточка модели |
| 5 | OmniSQL-32B32B · Apache-2.0 · RUC | 64.5 | можно скачать | карточка модели |
| 6 | XiYanSQL-QwenCoder-7B7B · Apache-2.0 · XGenerationLab | 62.13 | можно скачать | карточка модели |
| 7 | XiYanSQL-QwenCoder-32B32B, the same model, schema written as DDL | 62.26 | можно скачать | карточка модели |
| 8 | Qwen2.5-Coder-32B32B · Apache-2.0 · general purpose, with self-correction | 51.63 | можно скачать | мой замер |
Цифры самих авторов, каждая в своих условиях. Это не сравнение на равных.
Чего эта таблица не говорит
В ней ничто не сопоставимо. Каждое число получено авторами при их промпте, их формате схемы и их декодировании, на бенчмарке, разметка которого ошибочна в половине случаев. Разброс в пять пунктов от одного только формата схемы больше, чем разрыв между большинством этих строк. Ровно ради этого и делается замер ниже.
Результаты
Прогона ещё не было. Эта таблица заполняется сборкой из файлов результатов, и сборка отказывается публиковать цифру, под которой нет файла. Пока прогона нет, здесь пусто, и это сделано намеренно, а не по недосмотру.
Участники первой волны: Arctic-Text2SQL-R1-7B, XiYanSQL-QwenCoder на 7B, 14B и 32B, OmniSQL-32B, Qwen2.5-Coder на 7B, 14B и 32B как база, связывающая эти числа с arXiv:2606.29733, и Qwen3-Coder-30B-A3B. Arctic-Text2SQL-R1-32B исключена: её веса не опубликованы, поэтому заявленную цифру нельзя ни воспроизвести, ни развернуть.
Протокол, зафиксированный до прогона
Всё перечисленное записано до того, как измерена хоть одна модель, и лежит в репозитории вместе с коммитом, который это зафиксировал. Если что-то из этого меняется, прогон повторяется, а не правится.
- Одни и те же вопросы для всех участников, в одном порядке, из детерминированной выборки.
- Один промпт, жадное декодирование, один вызов, без примеров в контексте, если только измеряется не это.
- Один бюджет контекста и один таймаут исполнения для всех.
- Наш движок проходит через тот же интерфейс, что и остальные, без привилегий.
- Попредметные предсказания публикуются для каждого прогона, включая неверные.
- Интервалы бутстрепом по вопросам, 2000 повторов, зерно 0. Вердикт, который меняется при зёрнах от 0 до 5, записывается как неопределённый.
Что измеряется и на чём
| Набор | Что это | Размер | Что решает |
|---|---|---|---|
| BIRD dev | публичный английский стандарт | 1534 | сопоставимость с опубликованными работами |
| BIRD dev, чистый срез | тот же набор после контроля качества авторами | 1534 | сколько в нашем же результате шума разметки |
| RedSQL | публичный русский, предметный | 409 | внешняя точка отсчёта на втором языке |
| Наш отложенный набор | заморожен с хешем SHA-256 до того, как его увидит любой инструмент | 600 | вердикт и разрыв между языками |
Отложенный набор это одни схемы и один эталонный запрос на задачу, к которым написаны четыре формулировки вопроса: две английских и две русских. Именно это делает разрыв между языками измеримым на одной и той же цели, чего не даёт ни один опубликованный набор. Русские формулировки написаны от смысла, а не переведены с английского, иначе замер выродился бы в проверку качества перевода.
Зачем свой набор, если есть публичные. Работа Jin, Choi, Zhu и Kang на CIDR 2026 нашла ошибки разметки в 52,8% задач BIRD Mini-Dev и в 66,1% задач Spider 2.0-Snow с открытыми эталонными запросами. Их исправление сдвинуло ведущие системы на величину до 19 пунктов и до трёх мест. Оценка на публичном бенчмарке это сравнение с другими статьями, а не обещание точности на чьих-либо данных.
Пороги и правило вердикта
Они тоже зафиксированы до прогона, чтобы результат нельзя было перетолковать, когда он уже известен.
| Порог | Значение |
|---|---|
| Обвязка не вредит | наш движок на отложенном наборе не ниже лучшей доступной одиночной модели под тем же протоколом |
| Английский, публичный набор | не ниже 65% на BIRD dev |
| Английский, свой набор | не ниже лучшей закрытой модели под тем же протоколом на том же наборе |
| Второй язык работает | русский отстаёт от английского не больше чем на 10 пунктов |
| Безопасность | 100% попыток выйти за пределы SELECT заблокированы, 0 запросов исполнено без лимита строк и таймаута |
Правило вердикта одно для всех. Выполнено, если весь 95% интервал лежит по нужную сторону порога. Не выполнено, если весь интервал по другую. Иначе неопределённо, и так и записывается, а не округляется до ответа.
Чего эта страница делать не будет
Она не поставит цифру из чужой карточки модели рядом с нашими замерами так, будто это одно и то же. Такие числа идут в тексте со ссылкой на источник и никогда в эту таблицу. Она не выкинет модель из-за неудобного результата: публикуется тот список участников, который выше.
Каждый провал разбирается руками до вердикта, не меньше двадцати случайных на прогон, и делится на ошибку модели и ложное срабатывание оценщика. Доля вторых публикуется рядом с точностью. Эта проверка есть потому, что оценщик ошибается ровно так же, как ошибается разметка бенчмарка.