Non-determinismecontrole - Entity Enricher-documentatie

Non-determinismecontrole

Detecteer schema-eigenschappen waarvan de waarden variëren tussen modellen of tussen runs, en corrigeer ze voordat ze je data vervuilen — voor verrijkingen die reproduceerbaar, vergelijkbaar en nauwkeurig zijn.

Waarom determinisme belangrijk is

Entity Enricher behandelt LLM's als doorzoekbare kennisbanken. Dat werkt alleen als een eigenschapsnaam één enkel reproduceerbaar antwoord vastlegt. Een eigenschap als annual_revenue doet dat niet: welk boekjaar? Welke valuta? Miljoenen of eenheden? Elk model — en elke herhaling van hetzelfde model — mag een ander kader kiezen, dus de waarden verschillen zelfs wanneer geen enkel model fout zit.

Wisselvallige eigenschappen schaden alles verderop: multimodelfusie ziet conflicten die eigenlijk verschillen in kadering zijn, en de consistentiespreidingen van de benchmark worden breder om redenen die niets met modelkwaliteit te maken hebben. De non-determinismecontrole vindt deze eigenschappen en vertelt je hoe je ze vastpint.

De vier oorzaken

Elke gemarkeerde eigenschap wordt geclassificeerd in een van vier oorzaken, elk met een eigen oplossing:

OorzaakVoorbeeldOplossing
Temporeel
ceo, stock_priceceo_2025
Een veranderlijk feit zonder ankerdatum — leg de periode vast, of herstructureer naar een array met de periode als sleutel.
Dubbelzinnig
annual_revenuerevenue_fy2024_usd_millions
De naam pint de eenheid, valuta, periode of scope niet vast — verwerk het ontbrekende kader in de naam of beschrijving.
Subjectief
reputationesg_risk_rating_sustainalytics
Geen objectieve grondwaarheid — vervang door een meetbare proxy of een vaste schaal; anders blijft het gemarkeerd als adviserend.
Meervoudig
top_competitorstop_3_competitors_by_revenue
Meerdere even juiste antwoorden, meestal een onbegrensde lijst — begrens die en geef het sorteercriterium op.

Hernoemen is niet de enige oplossing: voor schema-eigenschappen stelt de analyzer ook een beschrijvingsfix voor die het ontbrekende kader vastlegt. Een scherpere beschrijving bereikt de verrijkende AI precies zoals de naam dat doet, maar breekt nooit je datacontract — daarom is het de voorkeursoplossing voor schema's die al in gebruik zijn.

Waar de controle draait

Tijdens het genereren van het voorbeeld

Nadat een voorbeeld is gegenereerd, controleert de analyzer het. Ondubbelzinnige hernoemingen worden automatisch toegepast op door AI bedachte sleutels (nooit op velden die je zelf hebt benoemd), en structurele fixes worden teruggekoppeld naar de generator voor maximaal twee correctierondes. Voorbeelden die gebaseerd zijn op bijgevoegde documenten worden overgeslagen — hun waarden komen uit het bronbestand, niet uit de kennis van het model.

Na het genereren van het schema

Zodra een gegenereerd schema is opgeslagen, annoteert een nabewerking elke eigenschap met het non-determinismeniveau ervan. Deze stap is best-effort: als die mislukt, blijft de generatie zelf onaangetast.

Op aanvraag vanuit de Schema-editor

De knop Opnieuw controleren analyseert alleen eigenschappen die nog geen annotatie hebben, en schakelt over op een volledige heranalyse zodra elke eigenschap is geannoteerd.

Op geplakte voorbeelden

Voorbeeld-JSON die je plakt voor het aanmaken van een schema kan stateless worden geanalyseerd — je krijgt een rapport met riskante eigenschapsnamen zonder dat er iets wordt gewijzigd.

De controle is alleen adviserend. Ze blokkeert nooit de generatie, wijst nooit een verrijking af, en de annotaties worden verwijderd uit elke prompt die naar de verrijkende modellen wordt gestuurd — ze informeert jou, niet de AI.

De resultaten lezen

Gemarkeerde eigenschappen tonen een “varieert”-badge in de Schema-editor: amber voor gemiddeld risico, rood voor hoog risico. Als je met de muis over de badge gaat, verschijnt de notitie van de analyzer die uitlegt wat er varieert en waarom. Eigenschappen die als deterministisch worden beoordeeld, krijgen geen badge.

Annotaties volgen de eigenschap

Een oordeel wordt geveld op de naam én de beschrijving van een eigenschap samen — dus het hernoemen van een eigenschap, of het bewerken van de beschrijving, laat de annotatie vervallen. De editor markeert zulke eigenschappen als verouderd en biedt een hercontrole aan, die alleen analyseert wat ontbreekt. Dit is precies wat je wilt na het toepassen van een voorgestelde hernoeming: de hercontrole bevestigt of de nieuwe naam deterministisch is.

Schakelaar per schema

De controle kan per schema worden uitgeschakeld via het overloopmenu van de Schema-editor. Wanneer die is uitgeschakeld, wordt de nabewerking na generatie overgeslagen en worden de badges, de knop Opnieuw controleren en de verouderingswaarschuwingen verborgen. Bestaande annotaties blijven behouden (alleen verborgen), en de controle opnieuw inschakelen op een schema dat nooit is geanalyseerd, voert die automatisch uit.

Schema's die zijn gegenereerd uit bijgevoegde documenten beginnen met de controle uitgeschakeld: hun waarden worden overgenomen uit het brondocument, dus variantie van run tot run in modelkennis is niet van toepassing.

Goed om te weten

Notities spreken jouw taal

Analyzer-notities worden geschreven in je interfacetaal — een Franse gebruiker ziet Franse uitleg, een Japanse gebruiker Japanse. Voorgestelde eigenschapsnamen blijven in het Engels, conform de naamgevingsconventies van schema's.

Analyse is een gefactureerde AI-aanroep

Elke analyse is een echte (goedkope) modelaanroep, geregistreerd als een eigen prompt op het record en afgeschreven van je credits zoals elk ander AI-gebruik. Incrementele hercontroles rekenen alleen af voor de eigenschappen die daadwerkelijk zijn geanalyseerd.

Preventie werkt ook stroomopwaarts

De schemageneratie zelf krijgt de instructie om deterministische namen en beschrijvingen te produceren (vastgepinde perioden, eenheden, sorteercriteria), zodat de meeste schema's schoon uitkomen en de analysator alleen de achterblijvers hoeft op te vangen.

API- & MCP-toegang

De controle is programmatisch beschikbaar:

SymptoomBeschrijving
POST /api/schema/analyze-sampleAnalyseer geplakte voorbeeld-JSON — stateless rapport, er wordt niets gewijzigd
POST /api/schema/saved/{id}/analyzeAnalyseer een opgeslagen schema en schrijf annotaties — standaard incrementeel, force=true heranalyseert alles
analyze_sample_determinismMCP-tool — hetzelfde stateless voorbeeldrapport vanuit Claude of een willekeurige MCP-client
analyze_schema_determinismMCP-tool — annoteer een opgeslagen schema; combineer met edit_schema om een voorgestelde hernoeming toe te passen

Zie de API-referentie en de MCP Server-gids voor authenticatie en de volledige toolcatalogus.

Volgende stappen