Zadanie text-to-SQL polega na przekształceniu zapytań w języku naturalnym na zapytania SQL wykonywane na relacyjnej bazie danych. Choć nowoczesne modele językowe (LLM) znakomicie radzą sobie z wieloma zadaniami generatywnymi, generowanie poprawnych, złożonych zapytań SQL nadal stanowi wyzwanie. W artykule RetrySQL: text-to-SQL training with retry data for self-correcting query generation autorzy przedstawiają nowy paradygmat treningowy, który uczy model samodzielnej kontroli i korekty wygenerowanych kroków rozumowania.
Idea RetrySQL
Generowanie kroków rozumowania
Dla każdego przykładu z zestawu BIRD tworzony jest ciąg kroków, które prowadzą do budowy zapytania SQL (np.$FROM$
→$WHERE$
→$GROUP\ BY$
), generowany syntetycznie przy użyciu GPT-4o.Tworzenie danych retry
Z każdej sekwencji losowo wybiera się pozycje, w których zostają wprowadzone błędne kroki ($r_{error}$), po czym wstawia się token$[BACK]$
i ponownie prawidłowy krok.
Przykład (Forward Single, $ p_{retry}=0.2 $):… → $r_1$ (FROM orders) → $r_{error}$: WHERE status = 'Oczekujące' → $[BACK]$ → $r_2$ (WHERE status = 'Wysłane') → …
Continued pre-training
Otwartoźródłowy model OpenCoder 1.5B, wcześniej trenowany na kodzie (w tym SQL), jest dalej trenowany na rozszerzonym zestawie BIRD zawierającym retry data. Model przyjmuje dane wejściowe w formacie:[CONTEXT] — DDL schemy + kontekst [QUESTION] — zapytanie w języku naturalnym [REASONING] — kroki rozumowania z retry data [SQL] — prawidłowe zapytanie SQL
Przykład
Kontekst: tabela orders
order_id | status | payment_date |
---|---|---|
1 | Shipped | 2024-06-05 |
2 | Pending | 2024-06-12 |
3 | Shipped | 2024-07-01 |
4 | Shipped | 2024-06-20 |
Zadanie naturalne:
„Ile zamówień o statusie ‘Shipped’ zostało opłaconych w czerwcu 2024?”
Chain-of-thought
r₁: FROM orders r₂: WHERE status = 'Shipped' r₃: WHERE payment_date BETWEEN '2024-06-00' AND '2024-06-31' ← błąd w dacie
Retry
r₃_error: WHERE payment_date BETWEEN '2024-06-00' AND '2024-06-31' [BACK] r₃: WHERE payment_date BETWEEN '2024-06-01' AND '2024-06-30'
Finalne SQL
SELECT COUNT(*) FROM orders WHERE status = 'Shipped' AND payment_date BETWEEN '2024-06-01' AND '2024-06-30';
Wyniki i wnioski
- Poprawa dokładności wykonania (EX): Kontynuacyjne trenowanie z retry data (wariant FS, $p_{retry}=0.2$) zwiększyło $EX_{overall}$ o około 4 punkty procentowe, z największym wzrostem w przypadku zapytań trudnych.
- Zdolność do detekcji błędów: Linear probing na bazowym OpenCoder wykazał balanced accuracy około 82% w rozróżnianiu poprawnych i błędnych kroków, co potwierdza latentną umiejętność modelu do samokorekty.
- Konkurencyjność mniejszych modeli: RetrySQL-trenowany OpenCoder 1.5B osiągnął wykonanie zbliżone do GPT-4o w end-to-end pipeline, mimo znacznie mniejszej liczby parametrów.
Zastosowania
- Systemy BI i analityka danych: Użytkownicy mogą zadawać złożone pytania w naturalnym języku, a model sam koryguje swoje kroki, minimalizując błędy.
- Środowiska o ograniczonych zasobach: Mniejsze, otwarte modele stają się konkurencyjne wobec dużych LLM, co obniża koszty wdrożenia.
- Badania i rozwój: Paradygmat retry data można rozszerzyć na inne zadania generatywne, na przykład pisanie kodu w innych językach czy planowanie procesów.
📎 Linki
- Na podstawie publikacji 📄 2507.02529