Prejsť na hlavný obsah

DIN-SQL: Dekomponované učenie v kontexte pre Text-to-SQL

· 7 minút čítania
Mike Thrift
Mike Thrift
Marketing Manager

Minulý týždeň som sa venoval benchmarku BIRD, ktorý odhalil, ako zle LLM zlyhávajú, keď sa text-to-SQL presunie z upravených hračkárskych databáz do schém z reálneho sveta s neporiadnym pomenovaním, doménovými znalosťami a obmedzeniami efektivity. DIN-SQL je článok, ktorý som si mal prečítať ako prvý: definoval, čo dokáže starostlivo dekomponovaný reťazec výziev (prompting pipeline) LLM skutočne dosiahnuť na benchmarkoch Spider a BIRD, a na konferenciu NeurIPS 2023 ho priniesli Mohammadreza Pourreza a Davood Rafiei práve v čase, keď sa GPT-4 stal široko dostupným. Čítať ho teraz – po tom, čo BIRD odhalil stropy – umožňuje jasnejšie vidieť silné stránky a limity.

Článok

2026-06-07-din-sql-decomposed-in-context-learning-text-to-sql

DIN-SQL (arXiv:2304.11015) rieši výraznú medzeru vo výkone. Začiatkom roka 2023 dosahovali najlepšie jemne vyladené modely — RESDSQL-3B+NatSQL — 79,9 % presnosť vykonávania na testovacej sade Spider, zatiaľ čo GPT-4 s naivným few-shot promptingom zvládol na vývojovej sade len 67,4 %. Hypotéza Pourrezu a Rafieiho je, že táto medzera je hlavne problémom rozhrania: LLM sú dostatočne schopné, ale generovanie SQL v jednom kroku od nich vyžaduje vyriešiť prepájanie schém, klasifikáciu zložitosti a syntézu dopytov naraz. Ak tieto kroky rozložíte do sekvenčných podúloh a každé riešenie posuniete ďalej ako kontext, situácia sa zmení.

Ich proces má štyri fázy: (1) modul na prepájanie schém (schema-linking), ktorý využíva chain-of-thought prompting na priradenie otázky v prirodzenom jazyku ku konkrétnym stĺpcom a hodnotám v schéme; (2) modul na klasifikáciu a dekompozíciu, ktorý rozdeľuje dopyt na jednoduchý (jedna tabuľka, žiadne spojenia), komplexný bez vnorenia (spojenia, ale žiadne poddopyty) alebo komplexný vnorený (spojenia, poddopyty, množinové operácie) a pri vnorených dopytoch rozkladá problém na poddopyty; (3) modul na generovanie SQL, ktorý prispôsobuje stratégiu promptingu triede zložitosti — jednoduchý few-shot pre ľahké dopyty, prechodná reprezentácia NatSQL pre nevnorené a viacstupňový chain-of-thought pre vnorené; a (4) modul na samoopravu, ktorý žiada model, aby skontroloval svoj vlastný výstup a hľadal drobné chyby ako chýbajúce DISTINCT alebo nesprávne umiestnené DESC.

Kľúčové myšlienky

  • GPT-4 + DIN-SQL dosahuje 85,3 % presnosť vykonávania na vyhradenej testovacej sade Spider, čo je nárast o +5,4 bodu oproti vtedajšiemu SOTA jemne vyladenému modelu RESDSQL-3B+NatSQL (79,9 %), a to bez akýchkoľvek trénovacích dát špecifických pre danú úlohu.
  • Na vývojovej sade Spider posúva dekompozičný proces model GPT-4 zo 67,4 % (few-shot baseline) na 74,2 % — čistý zisk +6,8 bodu. CodeX Davinci sa posúva z 61,5 % na 69,9 %.
  • Ablácia potvrdzuje, že každá fáza prispieva k výsledku: odstránenie samotného prepájania schém znižuje výkon CodeX z 69,9 % na 65,9 %; odstránenie klasifikácie ho ďalej znižuje na 63,1 %.
  • Zisky sú koncentrované v jednoduchých a stredne ťažkých dopytoch. Pri „extra ťažkých“ dopytoch dosahuje aj kompletný proces DIN-SQL + GPT-4 na vývojovej sade Spider len 43,4 % — dekompozícia nerieši zložitosť, len znižuje zbytočné chyby pri riešiteľných dopytoch.
  • Samooprava je citlivá na model: GPT-4 reaguje na „jemné“ prompty, ktoré žiadajú o potenciálne vylepšenia; CodeX reaguje lepšie na „všeobecné“ prompty, ktoré predpokladajú, že SQL je nesprávne. To naznačuje, že modul vykonáva štylistické čistenie, nie skutočné sémantické overenie.
  • Na vývojovej sade BIRD dosahuje DIN-SQL + GPT-4 skóre 50,72 % oproti základnému GPT-4 s 46,35 % — zlepšenie o +4,4 bodu, čo je podstatne menej ako zisky na Spideri, k čomu sa ešte vrátim.

Čo obstojí — a čo nie

Hlavný výsledok je reálny. Rozklad text-to-SQL na explicitné podúlohy zvyšuje výkon a ablačné štúdie sú dostatočne jasné na to, aby sa dalo veriť príspevkom jednotlivých modulov. Prepájanie schém je najdôležitejšie pri ťažkých dopytoch, čo dáva zmysel: model nemôže vygenerovať správne JOIN-y, ak predtým správne neidentifikoval, na ktoré tabuľky a stĺpce sa otázka vzťahuje.

Niekoľko vecí ma však zaráža. Rozpor medzi 74,2 % na vývojovej sade a 85,3 % na testovacej sade je podozrivý. Vývojové sady sú zvyčajne náročnejšie alebo aspoň rovnako náročné ako testovacie sady, pretože modely sú voči nim implicitne ladené; nárast o +11 bodov pri prechode z vývojovej na testovaciu sadu je neobvyklý. Autori to nevysvetľujú a núti ma to zamyslieť sa, či má testovacia sada iné rozdelenie náročnosti dopytov, alebo či existuje niečo v spôsobe, akým sa vyhodnocuje vyhradený test (cez oficiálny server Spider leaderboard), čo sa líši od ich vyhodnotenia vývojovej sady. Bez tejto výhrady by som 85,3 % necitoval.

Rozdiel v benchmarku BIRD (50,72 % na vývojovej sade) je výrazne menší ako zisky na Spideri. Databázy BIRD majú neporiadne schémy z reálneho sveta so skrátenými názvami stĺpcov, doménovo špecifickou terminológiou a nejednoznačnými hodnotami. Modul DIN-SQL na prepájanie schém bol navrhnutý s ohľadom na relatívne čisté schémy Spider; keď sa schémy stanú „špinavšími“, presnosť prepájania klesá a s ňou degraduje aj zvyšok procesu. To je presne to, čo meral článok BIRD, a DIN-SQL to nerieši.

Čísla týkajúce sa nákladov a latencie sú problémom pre akýkoľvek produkčný systém: zhruba 0,50 USD a 60 sekúnd na otázku s GPT-4. To je v poriadku pre dátového analytika, ktorý spúšťa desať dopytov denne, ale úplne nepoužiteľné pre interaktívne použitie. Článok to uvádza ako známe obmedzenie, ale nenavrhuje cestu k jeho zníženiu. DAIL-SQL (arXiv:2308.15363), ktorý sa objavil o niekoľko mesiacov neskôr, ukázal, že lepší výber príkladov namiesto explicitnej dekompozície by mohol dosiahnuť 86,6 % na Spideri — čím prekonáva DIN-SQL pri výrazne nižších nákladoch.

Modul samoopravy je najslabšou časťou. Autori priznávajú, že zachytáva „drobné“ chyby. Čo však nedokáže, je detegovať sémantické chyby — prípady, kedy je vygenerované SQL syntakticky správne a dokonca sa aj vykoná, ale odpovedá na nesprávnu otázku. To je pre skutočných používateľov ten ťažší režim zlyhania.

Prečo je to dôležité pre finančnú AI

Beanquery (BQL) je dopytovací jazyk podobný SQL určený pre dáta účtovnej knihy Beancount. Má vlastnú štruktúru tabuliek — transactions, postings, balance, prices — s hierarchiami účtov, tagmi a metadátami, ktoré vôbec nevyzerajú ako bežné databázové schémy. Rozhranie v prirodzenom jazyku pre BQL je skutočná a užitočná vec (už existuje experimentálny server beanquery-mcp implementujúci presne toto cez MCP) a stratégia dekompozície DIN-SQL je správnym východiskovým bodom.

Prepájanie schém nad BQL je analogický problém k prepájaniu schém nad relačnými tabuľkami, ale s dvoma ďalšími komplikáciami: názvy účtov sú hierarchické cesty ako Assets:US:Checking:Bank a relevantná schéma závisí od toho, aký druh dopytu používateľ kladie (výsledovka, súvaha, peňažné toky). Klasifikačný modul DIN-SQL naznačuje priamu adaptáciu: najprv klasifikovať zámer dopytu (zostatok vs. tok vs. vyhľadávanie cien) a potom smerovať do rôznych šablón promptov.

Zistenie benchmarku BIRD, že neporiadok reálneho sveta škodí LLM pri text-to-SQL, je priamo relevantné. Účtovná kniha Beancount je tiež „neporiadna“ — používateľom definované názvy účtov, nekonzistentné symboly komodít, vlastné kľúče metadát. Zlepšenie o 4,4 bodu na BIRD oproti 6,8 bodu na Spideri mi hovorí, že režim štruktúrovaných a čistých schém preceňuje to, nakoľko dekompozícia pomôže pri skutočných BQL dopytoch. V praxi očakávajte menšie zisky.

Nákladové obmedzenie je reálne, ale tu menej limitujúce. Používateľ osobnej finančnej správy, ktorý spustí 10–20 dopytov denne, znesie náklady na API vo výške 5–10 USD/deň, ak je rozhranie skutočne užitočné. Latencia (60 sekúnd) je skôr problémom pre interaktívne použitie; dávkové spracovanie analytických dopytov by to mohlo obísť.

Čo si prečítať ďalej

  • DAIL-SQL: Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation (arXiv:2308.15363) — systematická štúdia stratégií inžinierstva promptov; dosahuje 86,6 % na Spideri zameraním sa na výber príkladov namiesto architektonickej dekompozície, čo je užitočný protipól k DIN-SQL.
  • RESDSQL: Decoupling Schema Linking and Skeleton Parsing for Text-to-SQL (arXiv:2302.05965, AAAI 2023) — jemne vyladená základná línia (baseline), ktorú DIN-SQL prekonal; pochopenie toho, čo jemne vyladený prístup robí dobre, objasňuje, kde prompting stále zaostáva.
  • MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL (arXiv:2312.11242) — rozširuje myšlienku viacstupňovej dekompozície do explicitného multi-agentného procesu so Selektorom, Dekompozitorom a Refinerom; s GPT-4 dosahuje 59,59 % na BIRD a je to najviac agentovo orientovaný prístup v tejto oblasti.