Prevenzione delle allucinazioni - Documentazione di Entity Enricher

Prevenzione delle allucinazioni

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.

Il problema dell'allucinazione strutturata

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:

Falsa precisione

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.

Pressione sullo schema

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.

Propagazione silenziosa

I dati strutturati confluiscono direttamente in database, analisi e automazioni. Un valore errato si propaga attraverso le pipeline senza revisione umana.

Pattern comuni di allucinazione

PatternEsempioCausa
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 BNomi simili in dati di addestramento sovrapposti
Valori predefiniti plausibili"employees": 500L'LLM sceglie un numero «ragionevole» invece di ammettere di non saperlo
Relazioni inventate"subsidiary_of": "Alphabet"L'LLM deduce una relazione che non esiste

8 livelli di difesa

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.

1
Classification preliminare

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.

2
Campi nullable e prompting conservativo

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.

3
Definizione del dominio di competenza

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.

4
Focalizzazione della chiave di ricerca

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.

5
Validazione dello schema e autocorrezione

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.

6
Mantieni la logica

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.

7
Consenso multi-modello

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.

8
Risoluzione dei conflitti e arbitration

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.

Pipeline di difesa

1Classification preliminareBlocca i tipi di entità errati
2Nullable + Prompt conservativiRiduci la pressione dello schema
3Definizione del dominio di competenzaRestringere ciò a cui l'LLM deve rispondere
4Focalizzazione della chiave di ricercaAncorarsi agli identificatori
5Convalida e autocorrezioneCorreggere gli errori strutturali
6Mantieni la logicaProteggi i dati di riferimento
7Consenso multi-modelloRileva le discordanze
8Arbitration dei conflittiRisolvi con ragionamento
Pre-enrichment
Durante l'arricchimento
Post-enrichment

Filosofia di progettazione

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.

Che cosa fa Entity Enricher
  • Concede agli LLM il permesso esplicito di restituire null
  • Esegue la convalida incrociata con più modelli indipendenti
  • Protegge dalla sovrascrittura i dati verificati come corretti
  • Mostra la piena trasparenza nella risoluzione dei conflitti
Che cosa fanno gli strumenti tipici
  • Costringere gli LLM a compilare ogni campo, a qualunque costo
  • Affidati a un singolo model senza convalida incrociata
  • Consenti all'LLM di sovrascrivere liberamente i dati di input
  • Restituisce i risultati come una scatola nera senza traccia di controllo