1 Tabella = 1000 parole? Modelli fondazionali per dati tabulari
I dati tabulari svolgono un ruolo fondamentale in settori come finanza, sanità e ricerca scientifica, fornendo informazioni strutturate che supportano il processo decisionale. A differenza dei dati non strutturati, che i modelli di IA sono stati in grado di elaborare in modo più flessibile, i dati strutturati rimangono una sfida. L’analisi tradizionale si basa su query strutturate e modelli predefiniti, rendendo difficile lavorare con tabelle che variano nel formato, contengono valori mancanti o richiedono analisi oltre le semplici ricerche. Questi vincoli limitano la capacità di estrarre insight in modo efficiente, soprattutto man mano che i dataset crescono in dimensioni e complessità.
In un recente webinar di Zilliz, Stefan Webb, developer advocate presso Zilliz, ha esaminato se i modelli di IA addestrati su tabelle diverse potessero offrire un approccio più adattabile. I foundation model, addestrati su dataset ampi e vari per apprendere schemi generali applicabili a diversi casi d’uso, hanno dimostrato la capacità di generalizzare su dataset differenti senza necessitare di fine-tuning specifico per il compito, rendendoli particolarmente adatti all’analisi delle tabelle. A differenza dei modelli convenzionali di machine learning che richiedono un addestramento esteso per ogni dataset, TableGPT2, un modello fondazionale per l’analisi delle tabelle, applica la propria comprensione delle strutture tabulari per rispondere a query, riassumere dati ed estrarre insight, riducendo la necessità di intervento manuale.
Affinché questi modelli siano efficaci, hanno bisogno di modi efficienti per archiviare e recuperare dati strutturati. È qui che entrano in gioco i database vettoriali come Milvus, database specializzati progettati per archiviare e cercare rappresentazioni numeriche ad alta dimensionalità dei dati. L’archiviazione degli embedding delle tabelle consente ai modelli di IA di cercare record simili, recuperare informazioni pertinenti e migliorare l’analisi dei dati strutturati. Vediamo cosa ha trattato Stefan.
Guarda il riepilogo dell’intervento di Stefan su YouTube
Perché i dati tabulari hanno bisogno di un nuovo approccio
Gli approcci tradizionali all’analisi dei dati tabulari si basano fortemente su query strutturate e schemi predefiniti. Metodi come le query SQL sono efficaci quando i dataset rimangono coerenti, ma anche piccole variazioni tra tabelle possono interrompere i flussi di lavoro, richiedendo significativi aggiustamenti manuali. Ad esempio, i database utilizzati dalle banche hanno in genere schemi rigidamente definiti, rendendo l’analisi semplice finché non devono essere integrati nuovi dati provenienti da fonti esterne con strutture diverse. Questa rigidità ostacola la capacità di riutilizzare efficientemente i modelli analitici e limita l’elaborazione automatizzata.
Questa sfida è dovuta principalmente alla variabilità degli schemi, ovvero alle differenze naturali nelle strutture delle tabelle tra varie fonti. Un dataset sanitario potrebbe avere colonne che rappresentano l’anamnesi dei pazienti e la diagnostica medica, mentre i dati finanziari possono registrare transazioni, prezzi o date, ciascuno seguendo regole e formati distinti.
Figura 1: Dati strutturati vs. non strutturati
Poiché anche piccole differenze di schema possono interrompere gli strumenti analitici tradizionali, diventano necessari aggiustamenti manuali per adattarsi a queste variazioni. Ciò comporta maggiore impegno, analisi più lente e scalabilità limitata.
Gli attuali metodi di machine learning, come gli alberi decisionali con boosting del gradiente, dipendono inoltre in modo significativo da feature progettate manualmente e adattate a ciascun dataset. Ogni nuova tabella o lieve modifica nello schema richiede in genere aggiustamenti manuali a queste feature, limitando efficienza e scalabilità. Man mano che i dati diventano più complessi e voluminosi, i metodi analitici tradizionali diventano sempre più impraticabili. Ciò ha portato i ricercatori a rivolgersi ai foundation model, che apprendono pattern generalizzabili da grandi dataset.
Foundation Model per dati tabulari: un nuovo paradigma
I foundation model sono modelli di intelligenza artificiale addestrati su dataset ampi e diversificati per apprendere pattern generali. Invece di richiedere un addestramento specifico per ogni nuovo compito, questi modelli riutilizzano conoscenze apprese in precedenza in molteplici scenari. Questo approccio è particolarmente efficace per analizzare dati tabulari, dove le strutture delle tabelle possono differire in modo significativo.
Un buon esempio di foundation model progettato specificamente per l'analisi dei dati strutturati è TableGPT2, sviluppato da ricercatori della Zhejiang University. TableGPT2 elabora le tabelle attraverso diverse fasi attentamente progettate. Innanzitutto, i dati tabulari vengono inseriti in un componente chiamato Table Encoder. Questo encoder identifica le relazioni chiave all'interno dei dati analizzando ogni singola cella, riga e colonna. Utilizza una tecnica nota come attenzione bidimensionale, che esamina le relazioni in due dimensioni simultaneamente, attraverso le righe (orizzontalmente) e le colonne (verticalmente), consentendo al modello di comprendere meglio come le diverse parti dei dati all'interno di una tabella siano correlate tra loro. Inoltre, il Table Encoder impiega il cell embedding, convertendo il contenuto di ogni cella della tabella in embedding. Questi embedding catturano sia il contenuto sia la struttura della tabella, rendendo i dati comprensibili per le attività downstream.
Figura 2: Diagramma dell'architettura di TableGPT2 che mostra il Table Encoder convertire i dati tabulari in embedding strutturati e un Adapter (Q-Former) preparare gli embedding per il modello linguistico.
Dopo che il Table Encoder ha creato questi embedding strutturati, essi necessitano ancora di un'ulteriore trasformazione perché i modelli linguistici tipici come GPT comprendono meglio input basati su testo rispetto agli embedding numerici. A questo scopo, TableGPT2 introduce un Adapter, talvolta chiamato Q-Former, che traduce gli embedding numerici in rappresentazioni testuali. L'Adapter riformatta efficacemente l'embedding numerico in prompt simili al linguaggio naturale. Questi prompt testuali integrano sia le informazioni provenienti dalle tabelle sia le domande dell'utente, creando input chiari e comprensibili che i modelli linguistici possono interpretare facilmente.
Figura 3: Paradigma di modellazione che illustra come TableGPT2 trasforma gli embedding delle tabelle in prompt testuali
Una volta combinati in un prompt testuale unificato, i dati e la domanda dell'utente possono essere elaborati da un modello linguistico. Questo approccio consente a TableGPT2 di rispondere a query in linguaggio naturale, riassumere il contenuto delle tabelle e fornire insight basati sui dati senza fare affidamento su regole predefinite o query manuali adattate a schemi specifici. Poiché il modello apprende strutture generali durante l'addestramento, può gestire schemi di tabelle variabili con uno sforzo manuale significativamente inferiore rispetto ai metodi tradizionali.
Per generare output analitici strutturati e riproducibili, TableGPT2 utilizza anche un’istruzione predefinita nota come System Prompt. A differenza dei prompt tipici, questo system prompt istruisce esplicitamente il modello su come eseguire attività analitiche generando codice Python eseguibile. Ad esempio, quando riceve una domanda come, Quali prodotti hanno registrato le vendite più alte nell’ultimo trimestre? TableGPT2 interpreta queste linee guida fornite dal sistema e produce il codice Python corrispondente per analizzare le colonne pertinenti. Il codice risultante viene eseguito in un ambiente controllato (ad es., una sandbox IPython), garantendo l’isolamento dal modello principale e proteggendo dai rischi. Il modello interpreta poi questi risultati per fornire risposte accurate, trasparenti e riproducibili. Questo approccio strutturato garantisce che i risultati possano essere facilmente verificati, aumentando la fiducia nelle capacità analitiche del modello. Il system prompt qui sotto è esattamente quello che TableGPT2 utilizza nel suo codice.
Figura 4: System Prompt di TableGPT2 che mostra le istruzioni che guidano il modello a generare codice Python per l’analisi strutturata dei dati.
Per comprendere meglio come i foundation model come TableGPT2 raggiungano questa flessibilità, esploriamo i metodi di addestramento e i dataset specifici utilizzati per costruire questi modelli.
Addestramento del modello: il ruolo dei dati
L’efficacia dei foundation model come TableGPT2 dipende fortemente dal loro processo di addestramento, che è progettato con attenzione per aiutare il modello a comprendere e analizzare diverse strutture tabellari. Per ottenere questo, TableGPT2 segue un approccio di addestramento specializzato composto da più fasi interconnesse, ognuna delle quali svolge un ruolo distinto nel consentire al modello di gestire i dati tabellari in modo flessibile e accurato.
Figura 5: Processo di addestramento di TableGPT2
Inizialmente, TableGPT2 sfrutta un large language model (LLM) generale, Qwen 2.5, addestrato su enormi dataset testuali. Questa fase iniziale, chiamata continual pretraining, aiuta il modello ad acquisire ampie capacità di comprensione del linguaggio. Successivamente, il modello viene sottoposto a un processo chiamato supervised fine-tuning, in cui impara a svolgere meglio attività specifiche come rispondere a domande o riassumere informazioni, utilizzando oltre due milioni di esempi accuratamente etichettati. Questo passaggio costruisce una base solida, consentendo al modello di gestire efficacemente query complesse in linguaggio naturale.
Una volta preparata la componente linguistica, l’addestramento si sposta specificamente verso la comprensione delle tabelle. Qui, il contrastive learning column-wise svolge un ruolo centrale. In questo processo, TableGPT2 impara a differenziare le colonne in base alle loro relazioni e al loro contenuto confrontando molte tabelle e colonne fianco a fianco, imparando a riconoscere somiglianze e differenze tra circa 86.000 tabelle diverse. Il modello passa poi al multi-task feature alignment, dove apprende simultaneamente più attività, come classificare le colonne delle tabelle ed estrarre riassunti significativi dalle tabelle. Addestrandosi su centinaia di migliaia di campioni tabellari diversi, TableGPT2 diventa abile nell’identificare schemi strutturali comuni a molte tabelle differenti.
Infine, le componenti di linguaggio e di comprensione delle tabelle vengono sottoposte a un processo finale di ottimizzazione noto come joint instruction tuning. Questo passaggio prevede l’integrazione accurata di queste capacità separate, permettendo al modello di interpretare chiaramente le strutture tabellari e di rispondere con precisione alle istruzioni dell’utente. Dopo questo addestramento completo, TableGPT2 è in grado di interpretare e analizzare tabelle provenienti da vari domini senza un’ampia personalizzazione, migliorando significativamente la flessibilità nelle attività analitiche pratiche.
Questo processo di addestramento strutturato assicura che TableGPT2 non solo comprenda e interagisca efficacemente con i dati strutturati, ma riduca anche la dipendenza da query e schemi progettati manualmente, affrontando le limitazioni che abbiamo evidenziato in precedenza.
Esempio pratico: usare TableGPT2 per interrogare dati tabellari
Per capire come TableGPT2 funzioni nella pratica, considera uno scenario in cui un utente ha dati strutturati memorizzati in un semplice file CSV. Immagina di voler identificare rapidamente righe specifiche che corrispondono a determinati criteri, come trovare partite da un dataset in cui il record è esattamente 40 vittorie e 40 sconfitte. Invece di filtrare manualmente le tabelle, TableGPT2 può generare automaticamente il codice Python necessario per questa attività basandosi esclusivamente sulla query in linguaggio naturale dell’utente.
Vediamo passo dopo passo come funziona. Per iniziare, devi configurare il tuo ambiente per interagire con TableGPT2. Il primo passaggio consiste nell’installare la libreria Hugging Face Transformers, un toolkit Python che fornisce accesso semplice a modelli come TableGPT2:
!pip install transformers
Una volta installata, carica il modello e prepara i tuoi dati:
from transformers import AutoModelForCausalLM, AutoTokenizer
import pandas as pd
from io import StringIO
# Sample structured data in CSV format
csv_content = """
"Loss","Date","Score","Opponent","Record","Attendance"
"Hampton (14-12)","September 25","8-7","Padres","67-84","31,193"
"Speier (5-3)","September 26","3-2","Giants","40-40","29,004"
"Perez (2-2)","September 27","5-4","Reds","40-40","27,500"
"Hampton (13-11)","September 6","9-5","Dodgers","61-78","31,407"
"""
import pandas as pd
from io import StringIO
# Load the CSV data into a DataFrame
csv_file = StringIO(EXAMPLE_CSV_CONTENT)
df = pd.read_csv(csv_file)
I dati CSV sopra rappresentano partite sportive, incluse colonne per l’avversario, la data della partita, il punteggio, i record della squadra (vittorie-sconfitte) e i dati di affluenza. Per analizzare questi dati usando TableGPT2, per prima cosa carichi il modello pre-addestrato e il tokenizer:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "tablegpt/TableGPT2-7B"
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype="auto", device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
Successivamente, usi TableGPT2 per rispondere a una domanda sui tuoi dati. Qui useremo un esempio specifico: identificare le partite con un record vittorie-sconfitte esattamente di 40-40. Per ottenere questo risultato, fornisci al modello un prompt formattato con attenzione, guidandolo a generare codice Python per rispondere alla query:
example_prompt_template = """Given access to several pandas dataframes, write the Python code to answer the user's question
/*
"df.head(5).to_string(index=False)" as follows:
{df_info}
*/
Question: {user_question}
Questo prompt istruisce chiaramente TableGPT2, specificando la struttura della tabella (nomi delle colonne e un campione di dati) insieme alla tua domanda.
La funzione seguente invierà quindi questo prompt a TableGPT2 e recupererà il codice Python come risposta:
def ask_table_question(question: str):
prompt = example_prompt_template.format(
var_name="df",
df_info=df.head(5).to_string(index=False),
user_question=question
)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=512)
response = tokenizer.decode(generated_ids[0], skip_special_tokens=True)
return response
Ora poniamo al modello una domanda e vediamo come risponde:
question = "Which games have a record of 40 wins and 40 losses?"
generated_code = ask_table_question(question)
print(generated_code)
Ecco il codice Python restituito da TableGPT2
Figura 6: Output generato da TableGPT2
Come puoi vedere, questo codice filtra accuratamente i dati. Ecco come funziona questo codice generato:
Il codice prima divide i valori nella colonna
"Record"in due numeri separati, che rappresentano vittorie e sconfitte, usando.str.split("-").Poi converte questi valori da stringhe in interi, rendendo possibili i confronti numerici.
Infine, il codice identifica solo quelle righe in cui vittorie e sconfitte sono entrambe uguali a 40, creando un dataset filtrato.
Questa dimostrazione mostra come TableGPT2 possa semplificare l’analisi dei dati. Gli utenti possono interagire con dati strutturati in modo naturale, ricevendo risultati trasparenti e verificabili senza scrivere manualmente query complesse. Questo metodo rende gli insight sui dati accessibili anche ai principianti o agli stakeholder non tecnici. Nota che, oltre al codice, puoi istruire TableGPT affinché ti fornisca direttamente l’output tramite il prompt.
Come Milvus migliora la ricerca tabellare basata sull’IA
I modelli fondazionali come TableGPT2 offrono flessibilità nell’analisi dei dati strutturati, ma trovare in modo efficiente informazioni rilevanti all’interno di database su larga scala è impegnativo. Milvus, un database vettoriale open-source, integra i modelli fondazionali archiviando e cercando rapidamente gli embedding.
Milvus funziona convertendo dati, come testo o tabelle, in embedding. Un embedding è essenzialmente una rappresentazione numerica che posiziona i punti dati in uno spazio ad alta dimensionalità, consentendo al modello di trovare rapidamente voci simili o correlate. Ad esempio, incorporare transazioni finanziarie posizionerebbe transazioni simili, come acquisti di prodotti correlati, vicine tra loro all’interno di questo spazio numerico. Diamo un’occhiata al workflow di Milvus.
Figura 7: Workflow che illustra Milvus mentre elabora dati testuali, li converte in embedding e recupera risultati rilevanti
Il processo inizia quando un utente inserisce una query in linguaggio naturale. Milvus prima analizza il testo di questa query, scomponendolo e convertendolo in un embedding. Gli embedding della query vengono poi confrontati con una raccolta di embedding precedentemente archiviati. Per identificare le corrispondenze più rilevanti, Milvus utilizza metodi di scoring come BM25, una tecnica che valuta sia la frequenza sia l’importanza delle parole chiave nei documenti. Combinando il significato semantico (catturato dagli embedding) e la rilevanza delle parole chiave, Milvus recupera rapidamente risultati di ricerca accurati, aiutando i modelli fondazionali a fornire risposte meglio informate.
Milvus può essere utilizzato in vari scenari e supporta più metodi di deployment, a seconda della scala e della complessità richieste:
Figura 8: Opzioni di deployment per Milvus
Milvus Lite è ideale per test rapidi e progetti su piccola scala, comunemente utilizzato direttamente all’interno di ambienti come i notebook Jupyter. Consente esperimenti rapidi senza configurazioni complesse o infrastrutture aggiuntive. Milvus Standalone è adatto a carichi di lavoro di dimensioni moderate. Tipicamente ospitato su un singolo server utilizzando tecnologie come Docker, offre una manutenzione semplificata per applicazioni che necessitano di uno storage affidabile ma di capacità moderata. Milvus Cluster supporta scenari su larga scala, scalando efficientemente fino a miliardi di vettori su più server. Distribuisce il carico di lavoro su più nodi, migliorando significativamente la velocità e consentendo la gestione di dataset estremamente grandi.
I vantaggi prestazionali di Milvus sono importanti per le applicazioni che richiedono tempi di risposta rapidi, come i sistemi di raccomandazione in tempo reale o le query interattive. I benchmark dimostrano che Milvus supera significativamente altri database vettoriali in termini di velocità, gestendo milioni di ricerche vettoriali con maggiore efficienza:
Figura 9: Benchmark che confrontano la velocità di ricerca (query al secondo) di Milvus rispetto ad altri database vettoriali
Inoltre, Milvus supporta workflow che combinano modelli di IA con processi di retrieval, garantendo che le risposte generate rimangano accurate ancorandole direttamente a dati fattuali. Questo processo è chiamato Retrieval-Augmented Generation (RAG) e consente a foundation model come TableGPT2 di produrre risultati basati su dati reali archiviati in Milvus. In pratica, ciò significa che TableGPT2 non si basa esclusivamente sui pattern appresi durante l’addestramento, ma recupera anche dati attuali e pertinenti direttamente dal database ogni volta che risponde alle query degli utenti.
Figura 10: Workflow agentico
Nello specifico, un agente di IA prima normalizza e prepara i dati di input, quindi recupera informazioni contestuali correlate da Milvus. Una volta recuperate queste informazioni aggiuntive, l’agente inoltra sia la query dell’utente sia il contesto a TableGPT2. TableGPT2 utilizza quindi le proprie capacità apprese insieme ai dati aggiornati provenienti da Milvus per generare risposte chiare, accurate e tempestive alle domande degli utenti. Ciò garantisce che le informazioni fornite dal modello siano accurate e aggiornate, migliorando l’affidabilità e l’utilità per gli utenti finali.
Comprendendo chiaramente il workflow, le opzioni di deployment e i vantaggi prestazionali di Milvus, diventa evidente come la combinazione di foundation model con database vettoriali ottimizzati migliori notevolmente l’efficienza e l’accuratezza nelle attività di analisi dei dati strutturati.
Sfide e limitazioni dei foundation model per dati tabulari
Nonostante la loro flessibilità e le prestazioni migliorate rispetto ai metodi tradizionali, i foundation model come TableGPT2 incontrano ancora diverse sfide pratiche quando vengono applicati all’analisi dei dati strutturati. Queste includono:
Variabilità dello schema: Le tabelle provenienti da settori diversi raramente seguono strutture uniformi. Anche se i foundation model generalizzano meglio rispetto ai metodi tradizionali, differenze significative nelle strutture delle tabelle possono comunque influire sull’accuratezza. Ad esempio, analizzare record finanziari con un modello addestrato estensivamente su dati sanitari potrebbe portare a insight meno precisi a causa di differenze fondamentali nei tipi di dati e nella struttura.
Scalabilità: L’elaborazione di tabelle grandi o complesse spesso richiede risorse computazionali sostanziali, rendendo costosa e complessa l’implementazione di foundation model su larga scala. Quando i dataset crescono fino a milioni o miliardi di record, le risorse necessarie per un’analisi efficace aumentano significativamente, rallentando potenzialmente i workflow o aumentando i costi operativi.
Interpretabilità: I foundation model, tipicamente basati su reti neurali, forniscono spiegazioni limitate su come arrivano a risposte o decisioni specifiche. I metodi analitici tradizionali, come gli alberi decisionali, mostrano chiaramente la logica alla base delle previsioni, mentre i foundation model basati su reti neurali operano come scatole nere. Questa limitazione può restringerne l’uso in settori in cui la trasparenza e la conformità normativa sono fondamentali, come la sanità, la finanza o gli ambiti legali.
Bias dai dati di addestramento: I foundation model rischiano di ereditare bias dai loro dataset di addestramento. Se i dati di addestramento contengono bias, tali bias possono riflettersi nelle previsioni o negli insight del modello. Ciò può comportare risultati ingiusti o inaccurati, soprattutto in aree sensibili come le decisioni di assunzione, la diagnosi medica o il credit scoring. Rilevare e correggere questi bias può essere difficile a causa della natura opaca dei modelli neurali.
Mancanza di benchmark standardizzati: Valutare i foundation model per l’analisi di dati strutturati rimane difficile a causa della mancanza di standard di valutazione universali. A differenza delle attività di linguaggio naturale, per le quali esistono benchmark ben consolidati, l’analisi di dati strutturati attualmente non dispone di misure di performance ampiamente accettate. Questo complica gli sforzi per confrontare o validare oggettivamente modelli diversi.
Riconoscere queste sfide è importante per distribuire e migliorare efficacemente i foundation model. Quando utilizzi questi modelli, sono necessarie strategie chiare per gestire tali limitazioni, assicurando che i benefici superino i rischi.
Conclusione
I foundation model come TableGPT2 rappresentano un cambiamento significativo nell’analisi dei dati tabulari, offrendo una maggiore adattabilità rispetto ai metodi tradizionali. Quando integrati con database vettoriali come Milvus, questi modelli accedono in modo efficiente ai dati rilevanti, migliorando significativamente la loro accuratezza e utilità pratica. Tuttavia, utilizzare efficacemente i foundation model richiede di affrontare sfide come la variabilità degli schemi, la scalabilità, l’interpretabilità, i potenziali bias e la mancanza di metodi di valutazione standardizzati. Man mano che questi modelli continuano a evolversi, affrontare tali limitazioni consentirà alle organizzazioni di utilizzare in modo più sicuro ed efficace i dati strutturati per prendere decisioni informate.
Continua a leggere

Zilliz Cloud Just Landed in Claude Code
The Zilliz Cloud Plugin brings the full power of Zilliz Cloud directly into your Claude Code terminal as natural-language conversations.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

Will Amazon S3 Vectors Kill Vector Databases—or Save Them?
AWS S3 Vectors aims for 90% cost savings for vector storage. But will it kill vectordbs like Milvus? A deep dive into costs, limits, and the future of tiered storage.


