Multimodelfusie - Entity Enricher-documentatie

Multimodelfusie

Wanneer je dezelfde verrijking over meerdere AI-modellen uitvoert, kan Entity Enricher de resultaten fuseren tot één output met hoge betrouwbaarheid. Fusie detecteert conflicten tussen model-outputs en lost ze op met deterministische regels of LLM-gestuurde arbitrage.

Fusie-pipeline

Modeluitvoer
Claude-resultaat
GPT-4-resultaat
Gemini-resultaat
Conflictdetectie
Vergelijk elk veld
over alle modellen
Resolutie
Regelgebaseerde samenvoeging
of
LLM-arbitrage
Samengevoegd resultaat
Eén output met
conflict-audittrail

Stap 1: Conflictdetectie

De conflictdetector vergelijkt elk veld over alle modeluitvoer. Velden waarover alle modellen het eens zijn, gaan ongewijzigd door. Velden waarover de modellen het oneens zijn, worden gemarkeerd als conflicten die opgelost moeten worden.

Vergelijkingsregels per veldtype
TypeHoe vergelekenOvereenstemming betekent
ScalairGenormaliseerde exacte overeenkomst (getrimd, kleine letters, afgerond)Alle waarden gelijk na normalisatie
MeertaligDe primaire taal van de run beslist; vertaalverschillen activeren alleen een samenvoeging per taalDezelfde tekst in de primaire taal — formuleringsvarianten van een vertaling zijn geen tegenstrijdigheden
ArraySetvergelijking (volgorde-onafhankelijk) op de weergave van items in de primaire taalDezelfde items, ongeacht volgorde of vertaalformulering
ObjectPer eigenschap zolang de identiteitsvelden aantonen dat beide modellen hetzelfde beschrijven — anders vormt het hele object één conflictAlle geneste eigenschappen komen overeen
Null / leegEen waarde die null, een lege string of een lege array is, is een onthouding, geen beweringDe ingevulde waarde wint zonder dat er een conflict wordt geteld
Voorbeeld: “Sanofi” verrijken met 2 modellen
Claude-uitvoer
revenue: 42.2
gmp_status: true
description: “Sanofi is a global...”
GPT-4-output
revenue: 44.1
gmp_status: true
description: “Sanofi SA is a...”
Resultaat: gmp_status = agreed | revenue = conflict (42.2 vs 44.1) | description = conflict (verschillende tekst)

Stap 2: Conflictoplossing

Conflicten worden opgelost met een van twee methoden, afhankelijk van of je een arbitragemodel in de zijbalk hebt geselecteerd.

Optie A

Regelgebaseerde samenvoeging

Deterministische regels worden toegepast op basis van het gegevenstype van elk veld. Bijna altijd is daar helemaal geen LLM-call voor nodig — de resolutie is direct en gratis. De enige uitzondering zijn getallen waarover de modellen het sterk oneens zijn en die geen enkele regel eerlijk kan beslechten; zie hieronder.

VeldtypeRegelOnderbouwing
StringMeerderheidsstem; bij gelijke stand wint de langste waardeMeer detail is meestal beter
GetalModelwaarde die het dichtst bij de mediaan ligtBestand tegen uitschieters, nooit een verzonnen gemiddelde
BooleanMeerderheid; true wint bij gelijke standVoorzichtige standaard
MeertaligMeerderheidsstem per taal, unie van talenElke taal afzonderlijk verwerkt
ArraySleutelbewuste unie: items worden gegroepeerd op hun sleutelvelden, spellingvarianten worden samengevoegd en overeenkomende items worden per veld samengevoegdEén rij per logische entity, niets gaat verloren
ObjectPer veld wanneer de identiteit overeenkomt; anders wordt het object van één model in zijn geheel overgenomenTwee objecten samenvoegen die verschillende entiteiten beschrijven zou een derde verzinnen die geen van beide modellen heeft teruggegeven
Null vs. waardeGeef de voorkeur aan de ingevulde waardeOntbrekende data is erger dan welke waarde dan ook

Doorslaggevende regel: Bij een gelijke stemming wint de waarde van het duurdere model (als indicatie van capaciteit), gevolgd door de alfabetische volgorde van de modelnaam. Voor een heel object dat atomair wordt genomen komt volledigheid — het aantal gevulde bladeren — daartussen: als niets bewijst welke entiteit de echte is, kies dan het sterkere model en vervolgens het antwoord dat meer informatie bevat.

Geneste objecten worden in hun geheel samengevoegd, niet vermengd

Een genest object veld voor veld samenvoegen is alleen veilig zolang beide modellen hetzelfde beschrijven. Als de identiteitsvelden dat niet aantonen — andere sleutels, of helemaal geen sleutels met daaronder een echt meningsverschil — wordt het object één enkel conflict en wordt de versie van één model letterlijk overgenomen. Anders zou fusion een chimaera in elkaar zetten: het adres van het ene model op het bedrijf van het andere. Eén gevolg is bewust gekozen, maar goed om te weten: de winnaar wordt inclusief zijn lege plekken overgenomen, dus een veld dat de winnaar leeg liet blijft leeg — waardoor de entity kan blijven steken bij de toelatingscontrole van de database. De reden wordt meegegeven in de validatiewaarschuwingen van de run.

Wanneer getallen te ver uiteenlopen om samen te voegen

„Dichtst bij de mediaan” is juist voor modellen die verschillend afronden en verkeerd voor modellen die elkaar tegenspreken — 0 tegenover 1854 is geen afrondingsverschil. Zodra de relatieve spreiding van de waarden 20% bereikt, wordt dat veld geëscaleerd naar een LLM-arbiter die automatisch wordt gekozen via de gebruikelijke modelselectie van je organisatie, en de aanroep wordt net als elke andere gefactureerd. Die velden worden in de fusie-audittrail gemarkeerd als automatisch geëscaleerd, zodat een samenvoeging die tokens heeft gekost altijd vermeldt welke velden dat veroorzaakten.

Optie B

LLM-arbitrage

Wanneer je in de zijbalk een arbitragemodel selecteert, worden conflicten naar een LLM gestuurd voor intelligente oplossing. De arbiter ontvangt de entiteitscontext, de beschrijvingen van de schemavelden en alle conflicterende waarden en neemt vervolgens onderbouwde beslissingen.

Wat de arbiter teruggeeft
Gekozen waardeDe waarde die het als het meest accuraat beschouwt
BronmodelUit welk model de gekozen waarde afkomstig is
RedenerenWaarom het die waarde boven alternatieven koos
BetrouwbaarheidHoe zeker het is van de beslissing (hoog, gemiddeld, laag)

Fallback: Als het arbitragemodel faalt (timeout, fout), valt het systeem automatisch terug op een regelgebaseerde samenvoeging zodat je altijd een resultaat krijgt.

Stap 3: Het samengevoegde resultaat

Na conflictoplossing bouwt het systeem één samengevoegd resultaat op en slaat dit op als een “arbitrage”-record in de database. Elk samengevoegd resultaat bevat een audittrail zodat je kunt nagaan hoe elk conflict is opgelost.

Audittrail (arbitrage-metadata)

Elk samengevoegd resultaat bevat metadata die het fusieproces documenteert:

“method”: “rule_based” | “llm”
“source_record_ids”: [“uuid-1”, “uuid-2”]
“total_fields”: 23
“agreed_fields”: 18
“conflicted_fields”: 5
“decisions”: [{ path, chosen_value, rule_used, ... }]

Hetzelfde audittraject wordt getoond voor elk samengevoegd record op de History-pagina, op het tabblad Overzicht. Een samengevoegd record vermeldt de modellen die het heeft samengevoegd in plaats van een eigen model — en als het samenvoegen op regels gebaseerd was, is er helemaal geen LLM-aanroep gedaan, dus het bevat geen prompt, geen tokens en geen kosten.

Wat je ziet in de UI

Nadat de fusie is voltooid, toont het tabblad “Samengevoegd” in het resultatenpaneel:

1
Samenvattingskop
Toont de oplossingsmethode (regelgebaseerd of LLM) en een telling zoals “18 overeengekomen / 5 opgelost / 23 velden totaal”.
2
Samengevoegde JSON
De volledige gestructureerde uitvoer die overeengekomen waarden en opgeloste conflicten combineert in één JSON-document.
3
Conflictrapport
Uitvouwbare kaarten voor elk conflict met: het veldpad, de badge van de oplossingsmethode (Meerderheidsstem, Mediaan, Union, enz.), alle modelwaarden waarbij de gekozen waarde is gemarkeerd, en redeneringstekst als LLM-arbitrage is gebruikt.

Automatische fusion bij batchverwerking

Bij batchverrijking gebeurt fusie automatisch zodra je twee of meer modellen selecteert. Je hoeft niet handmatig op “Resultaten samenvoegen” te klikken — zodra elk model voor een entiteit is geslaagd, draait de fusie en verschijnt het samengevoegde resultaat naast de uitvoer van de afzonderlijke modellen. Een run waarin één model is mislukt, wordt bewust niet gefuseerd: de rest samenvoegen zou stilletjes een gedeeltelijk antwoord publiceren alsof het het overeengekomen antwoord was. Herstel eerst het ontbrekende model — als je de mislukte expertises opnieuw uitvoert, wordt de run automatisch gefuseerd zodra hij weer compleet is.

Streaming fusion: Tijdens zowel enrichment van één entiteit als batch-enrichment wordt de voortgang van de fusion gestreamd via Server-Sent Events. Je ziet de events fusion_started, conflicts_detected en fusion_completed in real-time.

Regelgebaseerd vs. LLM-arbitrage: wanneer gebruik je wat

Op basis van regels (direct, vrijwel altijd gratis)
  • Voornamelijk feitelijke/numerieke gegevens waar stemlogica goed werkt
  • Groot volume of batchverwerking waarbij kosten belangrijk zijn
  • Eenvoudige schema's met weinig verwachte conflicten
  • Wanneer je deterministische, reproduceerbare resultaten wilt
LLM-arbitrage (extra kosten)
  • Complexe schema's waarbij context van belang is voor de resolutie
  • Tekstuele gegevens (beschrijvingen, samenvattingen) waar stemmen onvoldoende is
  • Wanneer je verklaarbare beslissingen met onderbouwing nodig hebt
  • Cruciale verrijkingen waarbij nauwkeurigheid de extra kosten waard is