Prompt4Vis: L’IA che Trasforma le Tue Domande in Grafici Spettacolari!
Ragazzi, siamo nel pieno dell’era dei Large Language Models (LLM), quei cervelloni artificiali che stanno rivoluzionando un sacco di settori, compreso quello delle banche dati. Oggi voglio parlarvi di come possiamo sfruttarli per una cosa fichissima: trasformare semplici domande scritte in linguaggio naturale in visualizzazioni di dati, ovvero grafici. Immaginate di poter chiedere “mostrami le vendite per regione in un grafico a torta” e ottenere subito il grafico, senza impazzire con codici complicati!
La Sfida della Visualizzazione Dati
La visualizzazione dei dati è fondamentale. Viviamo sommersi dai dati, e analizzarli per scovare trend nascosti è sempre più cruciale. I grafici sono uno strumento potentissimo per farlo. Per questo, l’idea di creare visualizzazioni in modo automatico sta stuzzicando parecchio le comunità scientifiche che si occupano di database e data mining.
Il punto è che, per creare un grafico, di solito bisogna usare linguaggi specifici come Vega-Lite, ggplot2, ECharts… Linguaggi potenti, sì, ma che richiedono di conoscere bene sia i dati che la sintassi. Un bello scoglio, soprattutto per chi è alle prime armi.
Ecco perché il “text-to-visualization” (o text-to-vis), cioè trasformare domande in linguaggio naturale (NLQ – Natural Language Questions) direttamente in query per la visualizzazione (DVQ – Data Visualization Queries), sta prendendo sempre più piede.
I Limiti dei Metodi Attuali
Negli ultimi anni sono stati fatti passi avanti con metodi come DeepEye, NL4DV, Seq2Vis, ncNet e RGVisNet. Alcuni usano regole o analisi semantica, altri reti neurali profonde tipo encoder-decoder, altri ancora un approccio misto di recupero e generazione (come RGVisNet, che cerca un grafico simile già esistente e lo adatta).
Tuttavia, diciamocelo, le performance non sono ancora al top, specialmente quando si prova a usare questi modelli su database diversi da quelli su cui sono stati allenati (il cosiddetto “cross-domain setting”). Lì, l’accuratezza crolla drasticamente. C’è ancora tanta strada da fare.
L’Idea: Sfruttare gli LLM con l’In-Context Learning
E qui entrano in gioco gli LLM, come la serie GPT. Questi modelli hanno imparato tantissimo da quantità enormi di testo e codice, e spesso se la cavano alla pari con gli umani. Una loro capacità affascinante è l’In-Context Learning (ICL). In pratica, invece di riaddestrare tutto il modello (che costerebbe un patrimonio), gli si mostrano solo alcuni esempi pertinenti direttamente nella domanda (il “prompt”), e lui capisce al volo cosa deve fare per rispondere a una nuova richiesta simile. Niente aggiornamenti dei parametri, niente dataset giganteschi etichettati. Sembra promettente per il nostro text-to-vis, vero? Potrebbe aiutarci a superare i limiti di generalizzazione dei vecchi metodi.
Però, c’è un “ma”. Abbiamo fatto qualche prova preliminare e abbiamo visto che chiedere semplicemente a un LLM di creare un grafico da una domanda non dà risultati eccezionali. Perché? Probabilmente perché il text-to-vis è un compito relativamente nuovo, e gli LLM potrebbero non averlo “imparato” bene durante il loro addestramento generale, a differenza di compiti più rodati come il text-to-SQL (generare query SQL da domande).
Ecco Prompt4Vis: La Nostra Soluzione
Allora ci siamo detti: dobbiamo dare una mano all’LLM! E così è nato Prompt4Vis, un framework che abbiamo progettato apposta per adattare gli LLM al compito di generare query di visualizzazione dati partendo da domande in linguaggio naturale, usando proprio l’ICL.
Ma come rendere l’ICL davvero efficace? La chiave sta negli esempi che mostriamo all’LLM. Scegliere quelli giusti può fare la differenza tra un risultato perfetto e uno a caso. E poi, c’è un altro problema: i database possono avere schemi (cioè la struttura delle tabelle e delle colonne) enormi. Dare tutto in pasto all’LLM non solo è costoso, ma può anche confonderlo con informazioni irrilevanti.
Prompt4Vis affronta questi problemi con due componenti principali:
- Un Modulo di Example Mining: Questo è il cuore del sistema. Va a caccia degli esempi davvero efficaci da includere nel prompt per potenziare l’ICL specificamente per il text-to-vis.
- Un Modulo di Schema Filtering: Questo modulo fa pulizia e semplifica lo schema del database da fornire all’LLM, eliminando le parti inutili per la domanda specifica.
Come Funziona l’Example Mining? Il Segreto è Scegliere Bene!
Sapevamo che scegliere esempi simili alla domanda target aiuta [23, 65]. Ma ci siamo chiesti: basta la somiglianza? E se un esempio simile in realtà non aiutasse l’LLM a generare il grafico giusto? Abbiamo quindi deciso di considerare tre fattori per trovare gli esempi perfetti:
- Similarità ((mathcal{C})): Quanto una domanda di esempio è simile (semanticamente) alla domanda target che vogliamo risolvere? Usiamo la distanza Euclidea tra le rappresentazioni vettoriali delle frasi (ottenute con modelli come sentence-transformers) per misurarla.
- Influenza ((mathcal{I})): Questo è il nostro tocco speciale! Quanto un esempio specifico influenza positivamente la capacità dell’LLM di generare la query di visualizzazione corretta per la domanda target? Non esisteva un modo diretto per calcolarlo, quindi abbiamo addestrato un modello apposta, basato sul contrastive learning. In pratica, il modello impara a riconoscere quali esempi portano a risultati migliori (più accurati e semanticamente vicini alla verità) e quali no.
- Diversità ((mathcal{V})): Non vogliamo mostrare all’LLM esempi troppo simili tra loro, altrimenti rischiamo di dargli una visione limitata. Misuriamo la diversità come la distanza media tra tutte le coppie di esempi selezionati. Più alta è, meglio è.
L’obiettivo del modulo di example mining è trovare un piccolo set di K esempi (nel nostro caso, di default K=5) che massimizzi un punteggio combinato di similarità, influenza e diversità. Abbiamo dimostrato che trovare la soluzione ottima a questo problema è computazionalmente difficile (NP-hard, per i tecnici), quindi abbiamo sviluppato un algoritmo greedy efficiente (chiamato ESM) che trova un’ottima approssimazione garantita.
E lo Schema Filtering? Meno è Meglio!
Immaginate un database con centinaia di tabelle e migliaia di colonne. Se per rispondere a una domanda ne servono solo due o tre, perché dare tutto il resto all’LLM? È uno spreco di risorse e introduce rumore che può confondere il modello.
Il nostro modulo di schema filtering affronta proprio questo. Invece di dare l’intero schema, usiamo un altro LLM (sì, usiamo l’IA per aiutare l’IA!) con l’approccio ICL per identificare solo le tabelle rilevanti per la domanda specifica. Gli mostriamo esempi di domande, schemi completi e le tabelle effettivamente usate nella risposta corretta. Così, per una nuova domanda, l’LLM impara a selezionare solo le tabelle necessarie, fornendo un input molto più pulito e mirato al LLM principale che poi genererà la query di visualizzazione. Lavoriamo a livello di tabella perché è un buon compromesso: è più facile da identificare rispetto alle singole colonne e riduce il rischio di omettere informazioni necessarie quando le operazioni coinvolgono più colonne o tabelle.
I Risultati? Impressionanti!
Abbiamo messo alla prova Prompt4Vis sul dataset pubblico NVBench, un riferimento per il text-to-vis, confrontandolo con i metodi precedenti, incluso RGVisNet, considerato lo stato dell’arte. Abbiamo usato diversi LLM come “motore” per Prompt4Vis (Llama-3.1-8B, Mistral-7B, GPT-3.5-Turbo).
I risultati sono stati sbalorditivi! Prompt4Vis (specialmente con GPT-3.5-Turbo) ha superato nettamente tutti i concorrenti, in particolare nelle difficili condizioni cross-domain. Parliamo di un miglioramento dell’accuratezza generale di circa il 35.9% sui set di sviluppo e addirittura del 71.3% sui set di test rispetto a RGVisNet! Questo dimostra l’enorme potenziale del nostro approccio basato su ICL, example mining e schema filtering.
Non solo: Prompt4Vis si è dimostrato anche più stabile, con prestazioni costanti su diverse partizioni dei dati e a diversi livelli di difficoltà delle domande. Anche quando le domande diventavano “extra difficili”, pur calando un po’ (come tutti i modelli), Prompt4Vis manteneva un vantaggio significativo.
Abbiamo anche fatto degli “studi di ablazione”, cioè abbiamo provato a togliere o sostituire pezzi di Prompt4Vis per capire cosa contribuisse di più al successo. I risultati confermano che:
- Non è solo merito della potenza bruta dell’LLM: usare esempi scelti a caso (“w. random”) o solo basati sulla similarità (“w. sim”) dà risultati molto peggiori. Il nostro example mining fa davvero la differenza.
- Lo schema filtering è cruciale: dare tutto lo schema (“w. all schemas”) o usare altri metodi di schema linking (come RAT-SQL) peggiora le performance. Il nostro approccio basato su ICL per filtrare le tabelle è più efficace.
- Il sistema è abbastanza robusto: anche con parametri non perfettamente ottimizzati o con qualche errore nelle fasi precedenti (come nello schema linking), le prestazioni rimangono buone.
- C’è margine per migliorare: abbiamo visto che integrare capacità avanzate di text-to-SQL (ad esempio, usando un modello specializzato per generare la parte SQL della query) può ulteriormente potenziare Prompt4Vis, specialmente per le query che richiedono trasformazioni complesse dei dati.
Limiti e Prossimi Passi
Certo, non è tutto oro quello che luccica. Prompt4Vis ha ancora qualche limite. L’example mining, pur essendo efficace, può diventare lento se il dataset di addestramento è gigantesco (parliamo di centinaia di migliaia di esempi). Dobbiamo trovare modi per renderlo più scalabile.
Inoltre, come abbiamo visto, le domande molto complesse che richiedono manipolazioni intricate dei dati sono ancora una sfida. Stiamo esplorando modi più sofisticati per integrare le capacità di text-to-SQL o usare approcci multi-step (come il Chain-of-Thought, anche se i primi tentativi non sono stati risolutivi).
Infine, c’è il limite intrinseco degli LLM sulla lunghezza dell’input. Anche se abbiamo provato a ottimizzare la lunghezza del prompt (ad esempio comprimendolo o includendo la lunghezza come obiettivo nell’example mining), i risultati non sono stati entusiasmanti. Trovare il giusto equilibrio tra lunghezza del prompt e performance rimane un’area di ricerca attiva. E, naturalmente, dobbiamo tenere d’occhio il fenomeno delle “allucinazioni” degli LLM, cioè quando inventano cose non richieste (come clausole WHERE extra nelle query).
In Conclusione
Nonostante queste sfide, crediamo fermamente che Prompt4Vis rappresenti un passo avanti significativo. È, per quanto ne sappiamo, il primo framework a usare l’In-Context Learning in modo così mirato per il text-to-vis, combinando una selezione intelligente degli esempi (basata su similarità, influenza e diversità) con una pulizia efficace dello schema del database.
I risultati parlano chiaro: l’approccio funziona e apre nuove prospettive non solo per la visualizzazione dei dati, ma potenzialmente per molti altri compiti nel campo della data science dove l’interazione in linguaggio naturale e l’adattamento rapido a nuovi contesti sono fondamentali. Stiamo solo grattando la superficie del potenziale degli LLM usati nel modo giusto!
Fonte: Springer