Entity Enricher kan verrijkingsresultaten in maximaal 40 talen tegelijk produceren. Meertalige velden worden opgeslagen als JSON-objecten met taalcodes als sleutel — een formaat dat overdraagbaar en doorzoekbaar is en compatibel met elke grote database.
In de schema-editor schakel je de vlag 'meertalig' in voor elke string- of array-van-strings-eigenschap. Wanneer ingeschakeld, retourneert de LLM waarden verpakt in een object met taalsleutels in plaats van een gewone waarde.
multilingual: true in het JSON-schema.multilingual: true). Gebruik de ↑-knop op een andere chip om deze tot primair te promoveren. De backend filtert ook eventuele losse taalsleutels weg die de LLM zou kunnen produceren en die niet in je selectie staan.dict[str, T], waarbij de sleutels ISO 639-1-taalcodes zijn en de waarden overeenkomen met het veldtype.Meertalige waarden worden opgeslagen als JSON-objecten met taalcodes als sleutels. Dit formaat is boven alternatieven gekozen vanwege de overdraagbaarheid, doorzoekbaarheid en opslagefficiëntie.
Velden zonder multilingual: true worden als platte waarden geretourneerd. Identifiers, codes, URL's, datums en getallen blijven doorgaans niet-meertalig.
Er bestaan twee benaderingen voor meertalige arrays. Entity Enricher gebruikt Format A (object met taal als sleutel), omdat dit het enige formaat is dat zonder transformatie direct werkt in alle grote databases.
| Criteria | A Object met taalsleutels | B Array met gelokaliseerde items |
|---|---|---|
| Structuur | {"en": [...], "fr": [...]} | [{"en": "x", "fr": "y"}, ...] |
| Bevraag één taal | Directe toegangdata -> 'field' -> 'en' | Vereist iteratiejsonb_array_elements + extract |
| Een taal toevoegen | Voeg één sleutel toe aan het object | Elk item bijwerken in de array |
| Consistent met scalairen | Ja — hetzelfde {"en": "...", "fr": "..."}-patroon | Nee — andere vorm voor strings dan voor arrays |
| Overdraagbaarheid van database | Alle grote databases | Alle grote databases |
Het op taal gesleutelde formaat is native queryable in alle grote databases die JSON-kolommen ondersteunen.
Er zijn 40 talen beschikbaar. Selecteer een willekeurige combinatie bij het uitvoeren van een verrijking.
enEnglishzhChinesehiHindiesSpanisharArabicfrFrenchbnBengaliptPortugueseruRussianjaJapanesedeGermanurUrduviVietnamesetrTurkishkoKoreantaTamilmrMarathiteTelugupaPunjabiyueCantoneseitItalianplPolishukUkrainianroRomaniannlDutchelGreekcsCzechhuHungariansvSwedishsrSerbianbgBulgarianhrCroatianskSlovakdaDanishfiFinnishnoNorwegianltLithuanianslSlovenianlvLatvianetEstonianpreserve)De meertalige vlag kan niet worden gecombineerd met de preserve-vlag: een behouden waarde wordt onvertaald doorgegeven, in één enkele taal. De schema-editor schakelt de conflicterende schakelaar uit en de API weigert schema's die beide vlaggen bevatten. Sleutelvelden (natuurlijke of database-sleutels) kunnen meertalig zijn — de identiteit van de entiteit gebruikt dan de vergrendelde sleuteltaal van het schema.
De meertalige vlag is alleen geldig op bepaalde eigenschapstypes. De schema-editor dwingt dit automatisch af.
| Type eigenschap | Meertalig? | Uitvoerformaat |
|---|---|---|
| string | Ja | dict[str, str] |
| number / integer | Ja | dict[str, float] |
| boolean | Ja | dict[str, bool] |
| array met primitieven | Ja | dict[str, list[str]] |
| object | Nee | Markeer in plaats daarvan de afzonderlijke velden binnen het object — tenzij het object één rij per taal is, zie hieronder |
| array met objecten | Nee | Markeer in plaats daarvan afzonderlijke velden binnen items |
| $ref | Nee | Markeer in plaats daarvan velden binnen de gerefereerde entiteit |
Een meertalige waarde is een map van talen, geen enkelvoudige waarde — dus attributen die één waarde beperken, kunnen er niet op van toepassing zijn. Deze conflicten worden opgelost bij het genereren van het schema en geweigerd wanneer je er handmatig een opslaat, in plaats van later bij de verrijking mis te gaan.
Een eigenschap die tot een vaste set leden is beperkt, kan niet ook meertalig zijn: de leden zijn canonieke tokens, en een afnemende database beperkt er een kolom mee. Vertaalde labels horen thuis in je eigen opzoektabel, met het token als sleutel.
Een datum, een UUID of een code die tegen een regex wordt gecontroleerd, heeft één machineleesbare vorm, niet één per taal. Het opslaan van een eigenschap die beide is, wordt geweigerd.
Een bewaarde waarde is je eigen data die ongewijzigd wordt teruggegeven, dus er valt niets te vertalen.
Deze is wél toegestaan. Identiteit wordt in één taal opgelost — vastgelegd voor het schema zodra het voor het eerst naar een database wordt gepubliceerd — zodat een naam vertaald kan worden zonder dat zijn identiteit verschuift.
Sommige bronnen modelleren taal als rijen: een lijst waarin elk item een taalcode en eigen waarden bevat, één per taal. Dat is een andere vorm dan een meertalige eigenschap, en de twee mogen niet door elkaar lopen. De generatie herkent zo'n eigenschap als de taalas van het object — alleen als elke waargenomen waarde echt een taalcode is — en schakelt vervolgens het ingebouwde mechanisme uit voor die hele subboom. Losse velden binnen het item markeren, het gebruikelijke advies bij objecten, is hier precies het verkeerde middel: je krijgt dan vertalingen van rijen die al één per taal zijn.
Nog een onderscheid om goed uit elkaar te houden: de talen waarin je enrichment uitvoert kies je per run; de taal waarin de tekst van een schema zelf is geschreven (de beschrijvingen en labels) ligt vast op het schema; en de taal waarin identiteit wordt opgelost ligt vast per database. Drie aparte instellingen die allemaal klinken als “de taal”.
Meertalige ondersteuning is verweven in elke fase van de verrijkingspijplijn.
Bij het fuseren van resultaten van meerdere modellen worden meertalige velden per taal vergeleken.
| Scenario | Resolutie |
|---|---|
| Modellen zijn het eens over Engels maar verschillen over Frans | Geen meningsverschil. Identiteit wordt beoordeeld in de primaire taal van de run, dus dit telt als overeenstemming: Engels gaat gewoon door en Frans wordt geregeld door de samenvoegregel per taal. Vertaalverschillen gaan nooit naar een arbiter — een model betalen om te kiezen tussen twee correcte vertalingen is geld uitgeven aan niets |
| Het ene model heeft Arabisch, het andere niet | Voorkeur voor de niet-null-waarde (Arabisch blijft behouden) |
| Meertalige arrays verschillen in lengte per model | Unie van alle items per taal |