Nell'entusiasmo per la generazione di codice con gli LLM per Python, JavaScript e altri linguaggi general-purpose, SQL può sembrare trascurato.
Beekeeper Studio è una GUI per database gratuita & open source
Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.
Eppure SQL è probabilmente alla base dell'economia globale. Quindi vale la pena chiedersi: quanto sono bravi gli LLM a scrivere SQL?
Non siamo i primi a porci questa domanda. Sia accademici che aziende hanno già pubblicato benchmark che misurano le prestazioni degli LLM nella generazione di SQL.
In questo articolo esamineremo alcuni di questi benchmark, vedremo cosa rivelano e rifletteremo su cosa rende significativo un benchmark di generazione di codice SQL.
Cosa rende valido un benchmark per la generazione di SQL con gli LLM?
Quasi tutti abbiamo provato quel misto di sorpresa — e forse un po' di stupore — quando un LLM produce un blocco di codice funzionante al primo tentativo. Ma altrettanto spesso inciampa: richiama una libreria che non esiste, dimentica una variabile o ignora un caso limite indicato esplicitamente nel prompt.
Con SQL, la natura serrata e iterativa dello sviluppo rende ancora più difficile per gli LLM fare centro. Di solito scrivi una query, la esegui, controlli l'output e poi la perfezioni in base a ciò che vedi. Questo perché i dati stessi fanno parte del processo tanto quanto l'SQL.
Questo impone requisiti specifici a qualsiasi benchmark che voglia giudicare la capacità di un LLM di generare SQL. Secondo noi un buon benchmark SQL deve:
- Coprire più database: Postgres, MySQL, SQL Server, ClickHouse e altri hanno tutti le loro particolarità, quindi un benchmark equo deve abbracciare più di un motore.
- Includere una varietà di task: le query vanno da semplici clausole SELECT … WHERE a join complessi, window function e sfide che richiedono la conoscenza dello schema. Un benchmark dovrebbe rispecchiare tutto questo spettro.
- Verificare i risultati, non solo la sintassi: la vera domanda non è se l'SQL viene eseguito, ma se restituisce i dati giusti.
- Tenere conto dell'iterazione: un benchmark utile deve cogliere il botta e risposta del perfezionamento delle query, non solo il primo tentativo.
- Essere trasparente: senza schemi, dataset e codice di valutazione aperti, è più difficile fidarsi dei risultati.
Allora, esistono benchmark di generazione di codice SQL con l'AI all'altezza di questi criteri?
Benchmark SQL
Ovviamente i benchmark SQL esistevano già prima degli LLM. Forse il più noto è Spider, pubblicato nel 2018 come dataset per la comunità di ricerca text-to-SQL. Sebbene sia stato pensato per il semantic parsing e non per gli LLM, da allora è diventato una sorta di riferimento nelle valutazioni degli LLM. Tuttavia, ricercatori e aziende hanno poi introdotto altri benchmark.
Spider
Cos'è: pubblicato nel 2018, Spider è un dataset su larga scala con oltre 200 database e migliaia di task da linguaggio naturale a SQL, creato originariamente per la comunità di ricerca text-to-SQL.
Punti di forza: ampia copertura di schemi; query cross-domain abbastanza complesse; riferimento consolidato per le valutazioni accademiche e degli LLM (inclusi Codex, GPT-3.5, GPT-4).
Limiti: basato su schemi SQLite puliti, ben lontani dai disordinati database di produzione; si concentra sulla valutazione one-shot; non rispecchia il perfezionamento iterativo delle query.
Verdetto: un riferimento utile e ancora il benchmark più citato, ma forse troppo accademico per rappresentare i flussi di lavoro SQL reali.
BIRD-SQL
Cos'è: introdotto nel 2023 come successore di Spider, BIRD-SQL è stato pensato appositamente per mettere alla prova i modelli di grandi dimensioni con carichi di lavoro più realistici in stile BI.
Punti di forza: schemi più grandi e disordinati; query che richiedono ragionamento sullo schema e, in alcuni casi, conoscenze esterne; più impegnativo di Spider.
Limiti: ancora di impostazione accademica; si concentra sulla valutazione a turno singolo; meno accessibile a chi lavora fuori dalla ricerca.
Verdetto: un passo avanti verso le sfide dei dati reali, ma ancora non iterativo né multi-motore.
Tinybird SQL Benchmark
Cos'è: un benchmark nato nell'industria, creato da Tinybird, che valuta 19 LLM su task SQL analitici usando la propria piattaforma (basata su ClickHouse), con confronti rispetto a riferimenti umani.
Punti di forza: presentazione chiara; dataset di grandi dimensioni (centinaia di milioni di righe); risultati affiancati per più modelli.
Limiti: legato all'infrastruttura di Tinybird; limitato alla generazione di query one-shot; i risultati potrebbero non essere generalizzabili al di fuori del loro ambiente.
Verdetto: curato e pratico, ma di portata ristretta e non rappresentativo di come si comportano gli LLM su database diversi o in flussi di lavoro iterativi.
SQL-EVAL
Cos'è: SQL-EVAL è un framework di valutazione open source per verificare la correttezza dell'SQL generato dagli LLM. Ogni task include una query SQL di riferimento verificata da persone. SQL-Eval esegue sia la query del modello sia quella di riferimento, poi confronta i risultati.
Punti di forza: completamente open source e riproducibile; gestisce la complessità SQL (query annidate, join multipli), la varietà semantica e i casi in cui esiste più di una query corretta.
Limiti: verifica se la query restituisce gli stessi risultati di quella di riferimento, non la qualità o l'efficienza della query; supporta solo la generazione one-shot e non simula il perfezionamento iterativo.
Verdetto: una risorsa preziosa per valutare quanto bene i modelli restituiscono i risultati corretti, ed eccellente in quanto a trasparenza, ma non rispecchia ancora i flussi di lavoro iterativi dell'uso reale di SQL.
Altri benchmark da tenere d'occhio
Progetti più recenti cercano di colmare alcune lacune lasciate da Spider e BIRD-SQL.
- BIRD-CRITIC: un benchmark più recente basato su BIRD-SQL. Invece di chiedere al modello di scrivere una query una sola volta, verifica se è in grado di correggere i propri errori. Ad esempio: se il primo tentativo restituisce un errore o un risultato sbagliato, il benchmark chiede al modello di correggersi e riprovare. Lo fa inoltre su diversi sistemi di database (Postgres, MySQL, SQL Server, Oracle).
- BEAVER: un benchmark costruito a partire da query reali prese da data warehouse aziendali, non da dataset accademici creati ad hoc. Include gli schemi grandi e disordinati che ti aspetteresti in ambito finanziario, retail od operativo.
Tirando le somme
Ogni benchmark mette in luce un aspetto diverso della sfida SQL. Spider e BIRD-SQL hanno standardizzato la valutazione text-to-SQL su larga scala, ma su dataset molto più puliti dei veri sistemi di produzione. Tinybird mostra un altro approccio che può rendere i benchmark più accessibili e comparativi, mentre SQL-Eval introduce l'importante dimensione della copertura multi-motore.
Nel complesso, indicano la prossima opportunità: benchmark che vadano oltre le query statiche e one-shot per cogliere il caotico botta e risposta dello sviluppo SQL.
Query SQL con l'AI in Beekeeper Studio
I benchmark sono utili per confrontare i modelli in contesti controllati, ma la vera prova è quanto l'AI si integra davvero nel tuo lavoro quotidiano.
Ed è qui che entra in gioco Beekeeper Studio: è la GUI SQL che si collega al tuo LLM preferito per aiutarti a esplorare e interrogare i tuoi dati tramite un'interfaccia conversazionale e con query SQL manuali. È veloce, open source e multipiattaforma, con supporto per Postgres, MySQL, SQLite, MongoDB e altri.