Wanneer LLM's gestructureerde data produceren, kunnen ze plausibel ogende feiten verzinnen. Entity Enricher gebruikt 8 verdedigingslagen om ervoor te zorgen dat je accurate data of geen data krijgt — nooit overtuigend klinkende fictie.
In vrije tekst is een gehallucineerde zin duidelijk vaag. In gestructureerde uitvoer ziet een gehallucineerd veld als "founded_year": 1987 er gezaghebbend uit en is het bijna onmogelijk te onderscheiden van een correcte waarde. Drie factoren maken dit bijzonder gevaarlijk:
Een gehallucineerde JSON-waarde ziet er precies uit als een echte. Geen slag om de arm, geen “ongeveer” — gewoon een net, zelfverzekerd gegeven dat toevallig verkeerd is.
Verplichte velden dwingen het LLM een waarde te produceren, zelfs als het geen kennis heeft. Het model verzint gegevens in plaats van een gat in de structuur te laten.
Gestructureerde data stromen rechtstreeks naar databases, analyses en automatiseringen. Een verkeerde waarde verspreidt zich door de pijplijnen zonder menselijke controle.
| Patroon | Voorbeeld | Oorzaak |
|---|---|---|
| Zelfverzekerde verzinsels | "ceo": "John Smith" | LLM vult verplicht veld in met een plausibele naam |
| Temporele verwarring | "revenue": "$2.3B" | Afkappunt van trainingsdata of samenvoeging van periodes |
| Entiteitsvermenging | Attributen van Bedrijf A op Bedrijf B | Vergelijkbare namen in overlappende trainingsdata |
| Plausibele standaardwaarden | "employees": 500 | LLM kiest een “redelijk” getal in plaats van toe te geven dat het iets niet weet |
| Verzonnen relaties | "subsidiary_of": "Alphabet" | LLM leidt een relatie af die niet bestaat |
Entity Enricher vertrouwt niet op één enkele techniek. Het stapelt 8 onafhankelijke verdedigingslagen, elk gericht op een andere faalwijze. Als de ene laag een hallucinatie mist, vangt de volgende die op.
Voordat de verrijking begint, classificeert een snelle LLM of de entiteit overeenkomt met het schematype. Dit blokkeert hallucinatie van hele entiteiten bij de bron.
Voorbeeld: “Titan” tegen een “Planet”-schema wordt gemarkeerd als maan — verrijkingsmodellen ontvangen deze context en gebruiken null voor planeetspecifieke velden.
Alle strategieën instrueren de LLM: "Wees nauwkeurig en voorzichtig — geef liever null dan te gokken." Nullable schemavelden geven het model expliciet toestemming om "ik weet het niet" te zeggen.
Dit pakt schemadruk rechtstreeks aan — de belangrijkste oorzaak van gestructureerde hallucinatie.
Schema-eigenschappen worden gegroepeerd per expertisedomein. Elke LLM-aanroep ziet alleen velden binnen zijn domein, met de instructie zich uitsluitend op dat gebied te richten.
Een beperktere scope betekent minder kans op hallucinatie. Een financieel expert gokt nooit over reguleringsdata.
Sleuteleigenschappen (gemarkeerd met is_key: true) worden in prompts gemarkeerd om de LLM te verankeren op identificerende informatie voordat andere velden worden ingevuld.
Dit gronddt het model op bekende feiten, waardoor de afdrijving naar verzonnen details vermindert.
8 validatieregels controleren de LLM-output op typefouten, ongeldige verwijzingen en structurele fouten. Een mislukte validatie activeert ModelRetry — fouten worden voor correctie teruggestuurd naar de LLM.
Tot 6 automatische correctiepogingen binnen één agent-run. De LLM herstelt zijn eigen fouten.
Velden gemarkeerd als preserve: true (ID's, SKU's, tijdstempels) worden na verrijking hersteld naar hun oorspronkelijke invoerwaarden. De LLM kan geen brongegevens overschrijven.
Beschermde velden: entity-ID's, systeemcodes (EAN, SKU), import-identifiers, aanmaaktijdstempels.
Dezelfde entiteit door 2 of meer onafhankelijke modellen halen en de outputs veld voor veld vergelijken. Meningsverschillen worden gemarkeerd als mogelijke hallucinaties.
Als Claude zegt dat de omzet $2,3 mld is en GPT-4 zegt $1,8 mld — dan wordt dat conflict gedetecteerd en zichtbaar gemaakt.
Gedetecteerde conflicten worden opgelost via op regels gebaseerde stemming (meerderheid, mediaan, unie) of door een speciale LLM-arbiter die nauwkeurigheid, volledigheid en consistentie beoordeelt.
Elke arbitration-beslissing bevat een onderbouwing en een betrouwbaarheidsniveau — volledige transparantie over hoe conflicten zijn opgelost.
Kernprincipe
Ontbrekende data is altijd beter dan verkeerde data. Elke laag versterkt dit principe — het systeem is ontworpen om null terug te geven in plaats van een plausibel klinkende verzinsel.