Quando gli LLM producono dati strutturati, possono inventare fatti dall'aspetto plausibile. Entity Enricher utilizza 8 livelli di difesa per garantire dati accurati oppure nessun dato — mai finzioni dal tono convincente.
Nel testo libero, una frase allucinata è palesemente vaga. In un output strutturato, un campo allucinato come "founded_year": 1987 sembra autorevole ed è quasi impossibile distinguerlo da un valore corretto. Tre fattori rendono tutto ciò particolarmente pericoloso:
Un valore JSON allucinato appare esattamente come uno reale. Non c'è alcuna cautela, nessun "approssimativamente" — solo un dato pulito e sicuro che si dà il caso sia errato.
I campi obbligatori costringono l'LLM a produrre un valore anche quando non dispone di alcuna conoscenza. Il model inventa i dati invece di lasciare una lacuna nella struttura.
I dati strutturati confluiscono direttamente in database, analisi e automazioni. Un valore errato si propaga attraverso le pipeline senza revisione umana.
| Pattern | Esempio | Causa |
|---|---|---|
| Fabbricazione sicura | "ceo": "John Smith" | L'LLM riempie un campo obbligatorio con un nome plausibile |
| Confusione temporale | "revenue": "$2.3B" | Data di cutoff dei dati di addestramento o confusione tra periodi |
| Sovrapposizione di entità | Attributi dell'azienda A sull'azienda B | Nomi simili in dati di addestramento sovrapposti |
| Valori predefiniti plausibili | "employees": 500 | L'LLM sceglie un numero «ragionevole» invece di ammettere di non saperlo |
| Relazioni inventate | "subsidiary_of": "Alphabet" | L'LLM deduce una relazione che non esiste |
Entity Enricher non si affida a un'unica tecnica. Combina 8 livelli di difesa indipendenti, ciascuno mirato a una diversa modalità di errore. Se un livello non rileva un'allucinazione, la individua quello successivo.
Prima dell'inizio dell'arricchimento, un LLM veloce classifica se l'entità corrisponde al tipo dello schema. Questo blocca alla fonte l'allucinazione dell'intera entità.
Esempio: «Titan» rispetto a uno schema «Planet» viene contrassegnato come luna — i modelli di enrichment ricevono questo contesto e usano null per i campi specifici dei pianeti.
Tutte le strategie istruiscono l'LLM: "Sii preciso e prudente — preferisci null all'ipotesi." I campi dello schema che ammettono null danno al modello il permesso esplicito di dire "Non lo so."
Questo affronta direttamente la pressione dello schema — la causa numero uno delle allucinazioni strutturate.
Le proprietà dello schema sono raggruppate per dominio di competenza. Ogni chiamata LLM vede solo i campi del proprio dominio, con l'istruzione di concentrarsi esclusivamente su quell'area.
Un ambito più ristretto significa meno possibilità di allucinazioni. Un esperto finanziario non tira mai a indovinare sui dati normativi.
Le proprietà chiave (contrassegnate con is_key: true) vengono evidenziate nei prompt per ancorare l'LLM alle informazioni identificative prima di compilare gli altri campi.
Questo ancora il model a fatti noti, riducendo la deriva verso dettagli inventati.
8 regole di validazione verificano l'output dell'LLM per individuare tipi non corrispondenti, riferimenti non validi ed errori strutturali. Una validazione fallita attiva ModelRetry: gli errori vengono rinviati all'LLM per la correzione.
Fino a 6 tentativi automatici di correzione all'interno di una singola esecuzione dell'agente. L'LLM corregge i propri errori.
I campi contrassegnati con preserve: true (ID, SKU, timestamp) vengono ripristinati ai valori di input originali dopo l'enrichment. L'LLM non può sovrascrivere i dati di ground truth.
Campi protetti: ID delle entità, codici di sistema (EAN, SKU), identificatori di importazione, timestamp di creazione.
Esegue la stessa entità attraverso più di un modello indipendente confrontando gli output campo per campo. Le discordanze vengono segnalate come potenziali allucinazioni.
Se Claude indica un fatturato di 2,3 mld di $ e GPT-4 indica 1,8 mld di $, quel conflitto viene rilevato ed evidenziato.
I conflitti rilevati vengono risolti tramite votazione basata su regole (maggioranza, mediana, unione) o da un arbitro LLM dedicato che valuta accuratezza, completezza e coerenza.
Ogni decisione di arbitration include la motivazione e il livello di confidenza — piena trasparenza sul modo in cui i conflitti sono stati risolti.
Principio fondamentale
Un dato mancante è sempre preferibile a un dato errato. Ogni livello rafforza questo principio: il sistema è progettato per restituire null anziché una plausibile invenzione.