Arricchimento multilingua - Documentazione di Entity Enricher

Arricchimento multilingua

Entity Enricher può produrre risultati di arricchimento in un massimo di 40 lingue contemporaneamente. I campi multilingua vengono memorizzati come oggetti JSON con chiave per lingua, un formato portabile, interrogabile e compatibile con ogni principale database.

Editor del workflow: interruttore multilingue

Nell'editor dello schema, attivi il flag multilingua su qualsiasi proprietà di tipo stringa o array di stringhe. Quando è abilitato, l'LLM restituisce i valori racchiusi in un oggetto con chiavi di lingua anziché un valore semplice.

Come funziona

1
Contrassegna i campi come multilingue
Nell'editor dello schema, selezioni la casella multilingua sulle proprietà di tipo stringa o array. Il flag viene memorizzato come multilingual: true nello schema JSON.
2
Seleziona le lingue di destinazione
Nelle opzioni della barra laterale, scegliere una o più lingue tra le 40 supportate. Il prompt di arricchimento indica all'LLM di produrre valori in ciascuna lingua selezionata. La prima lingua selezionata è la lingua principale: viene evidenziata con un badge “Principale” ed è utilizzata per tutti i campi stringa non multilingua (descrizioni, nomi, ecc. non contrassegnati come multilingual: true). Utilizzare il pulsante su qualsiasi altro chip per promuoverlo a principale. Il backend filtra inoltre eventuali chiavi di lingua estranee che l'LLM potrebbe emettere e che non rientrano nella selezione.
3
L'LLM restituisce un output indicizzato per lingua
Il modello Pydantic dinamico incapsula i campi multilingue come dict[str, T], dove le chiavi sono codici lingua ISO 639-1 e i valori corrispondono al tipo del campo.

Formato dei dati

I valori multilingua vengono memorizzati come oggetti JSON con i codici di lingua come chiavi. Questo formato è stato scelto rispetto alle alternative per la sua portabilità, interrogabilità ed efficienza di archiviazione.

Stringa multilingua
Proprietà dello schema
"description": {
"type": "string",
"multilingual": true
}
Output di arricchimento
"description": {
"en": "A global pharma company",
"fr": "Une entreprise pharma mondiale",
"ar": "شركة أدوية عالمية"
}
Array multilingua
Proprietà dello schema
"indications": {
"type": "array",
"items": { "type": "string" },
"multilingual": true
}
Output di arricchimento
"indications": {
"en": ["pain relief", "fever"],
"fr": ["anti-douleur", "fièvre"],
"ar": ["تخفيف الألم", "حمى"]
}
Campi non multilingue

I campi senza multilingual: true vengono restituiti come valori semplici. Identificatori, codici, URL, date e numeri in genere rimangono non multilingue.

"atc_code": "N02BE01",
"founded_year": 1973,
"website": "https://example.com"

Perché questo formato?

Esistono due approcci per gli array multilingua. Entity Enricher utilizza il Formato A (oggetto con chiave per lingua) perché è l'unico formato che funziona così com'è in tutti i principali database senza trasformazioni.

CriteriA Oggetto con chiave per linguaB Array di elementi localizzati
Struttura{"en": [...], "fr": [...]}[{"en": "x", "fr": "y"}, ...]
Interroga una linguaAccesso diretto
data -> 'field' -> 'en'
Richiede iterazione
jsonb_array_elements + extract
Aggiungi una linguaAggiunga una chiave all'oggettoAggiorna ogni elemento dell'array
Coerente con gli scalari — stesso pattern {"en": "...", "fr": "..."}No — struttura diversa per le stringhe rispetto agli array
Portabilità del databaseTutti i principali databaseTutti i principali database

Esempi di query sul database

Il formato con chiave per lingua è interrogabile in modo nativo in tutti i principali database che supportano colonne JSON.

PostgreSQL
-- Get English description
SELECT structured_output -> 'description' -> 'en' FROM enrichment_records;
-- Search within a multilingual array
SELECT * FROM enrichment_records
WHERE structured_output -> 'indications' -> 'en' ? 'pain relief';
MySQL 8+
-- Get French description
SELECT JSON_EXTRACT(structured_output, '$.description.fr') FROM enrichment_records;
MongoDB
// Project only Arabic values
db.records.find({}, { "description.ar": 1, "indications.ar": 1 })
SQL Server
-- Get German description
SELECT JSON_VALUE(structured_output, '$.description.de') FROM enrichment_records;

Lingue supportate

Sono disponibili 40 lingue. Selezionatene una qualsiasi combinazione durante l'esecuzione di un enrichment.

Lingue globali
enEnglish
zhChinese
hiHindi
esSpanish
arArabic
frFrench
bnBengali
ptPortuguese
ruRussian
jaJapanese
deGerman
urUrdu
viVietnamese
trTurkish
koKorean
taTamil
mrMarathi
teTelugu
paPunjabi
yueCantonese
itItalian
Lingue europee
plPolish
ukUkrainian
roRomanian
nlDutch
elGreek
csCzech
huHungarian
svSwedish
srSerbian
bgBulgarian
hrCroatian
skSlovak
daDanish
fiFinnish
noNorwegian
ltLithuanian
slSlovenian
lvLatvian
etEstonian

Quali campi dovrebbero essere multilingua?

Contrassegna come multilingue
  • Nomi ed etichette (città, paese, nome del prodotto)
  • Descrizioni e riepiloghi
  • Termini medici/scientifici
  • Etichette di stato ("Approvato", "Attivo")
  • Etichette e tag di categoria
  • Istruzioni e raccomandazioni
Mantieni non multilingue
  • Campi preservati (contrassegnati con preserve)
  • Identificatori tecnici (UUID, ID)
  • Codici standardizzati (ATC, CAS, ISO)
  • Acronimi (FDA, EMA, WHO)
  • Numeri, date, percentuali
  • URL, email, numeri di telefono
  • Flag booleani

Il flag multilingue non può essere combinato con il flag preserve: un valore preservato viene trasmesso senza traduzione, in un'unica lingua. L'editor dello schema disabilita l'interruttore in conflitto e l'API rifiuta gli schema che presentano entrambi i flag. I campi chiave (chiavi naturali o di database) possono essere multilingue: l'identità dell'entity utilizza allora la lingua della chiave bloccata dallo schema.

Tipi di campo validi

Il flag multilingua è valido solo su determinati tipi di proprietà. L'editor dello schema lo applica automaticamente.

Tipo ProprietàMultilingua?Formato di output
stringdict[str, str]
number / integerdict[str, float]
booleandict[str, bool]
array di primitividict[str, list[str]]
objectNoContrassegnare invece i singoli campi all'interno dell'oggetto — a meno che l'oggetto non corrisponda a una riga per lingua, vedere di seguito
array di oggettiNoContrassegna invece i singoli campi all'interno degli elementi
$refNoContrassegna invece i campi all'interno dell'entity referenziata

Con che cosa il multilingua non è combinabile

Un valore multilingua è una mappa di lingue, non un valore singolo: gli attributi che vincolano un valore singolo non possono quindi applicarsi. Questi conflitti vengono risolti alla generazione dello schema e rifiutati quando ne salva uno a mano, invece di far fallire l'arricchimento più tardi.

I vocabolari chiusi prevalgono

Una proprietà limitata a un insieme fisso di membri non può essere anche multilingua: i membri sono token canonici e un database consumatore vi vincola una colonna. Le etichette tradotte vanno in una tabella di lookup di sua proprietà, indicizzata sul token.

Formato e pattern non si applicano

Una data, un UUID o un codice validato da regex hanno un'unica forma leggibile dalla macchina, non una per lingua. Il salvataggio di una proprietà che è entrambe le cose viene rifiutato.

«Conserva» prevale su «multilingua»

Un valore preservato è un suo dato restituito intatto: non c'è nulla da tradurre.

Le chiavi possono essere multilingue

Questa è consentita. L'identità viene risolta in un'unica lingua — fissata per lo schema alla prima pubblicazione su un database — perciò un nome può essere tradotto senza che la sua identità cambi.

Quando la lingua è un dato, non una traduzione

Alcune fonti modellano la lingua come righe: un elenco in cui ogni elemento riporta un codice lingua e i propri valori, uno per lingua. Si tratta di una forma diversa da quella di una proprietà multilingua, e le due non vanno mescolate. La generazione riconosce una proprietà di questo tipo come asse linguistico dell'oggetto — solo se ogni valore osservato è davvero un codice lingua — e disattiva quindi il meccanismo integrato per l'intero sottoalbero. Contrassegnare i singoli campi all'interno dell'elemento, il consiglio abituale per gli oggetti, è qui esattamente il rimedio sbagliato: otterrebbe traduzioni di righe che sono già una per lingua.

Un'ulteriore distinzione da tenere a mente: le lingue in cui si arricchisce sono una scelta per singola esecuzione; la lingua in cui è scritto il testo dello schema stesso (descrizioni ed etichette) è fissata sullo schema; e la lingua in cui viene risolta l'identità è fissata per database. Tre impostazioni distinte che suonano tutte come “la lingua”.

Integrazione della pipeline di arricchimento

Il supporto multilingua è integrato in ogni fase della pipeline di arricchimento.

Schema
multilingual: true
sui campi selezionati
Generatore di prompt
Inserisce istruzioni di
lingua + esempi
Modello dinamico
str → dict[str, str]
Convalida Pydantic
Archiviazione JSONB
Oggetti con chiave
per lingua nell'output
Multi-expertise domain: Quando si utilizza la strategia multi-expertise domain, ogni expertise domain riceve le istruzioni multilingue nel proprio prompt. I campi vengono tradotti in modo indipendente per ciascun expertise domain, quindi uniti nell'output finale.

Campi multilingua nella fusione

Quando si fondono i risultati di più modelli, i campi multilingue vengono confrontati per lingua.

ScenarioRisoluzione
I modelli concordano sull'inglese ma divergono sul franceseNon è un disaccordo. L'identità viene valutata nella lingua principale dell'esecuzione, quindi questo conta come accordo: l'inglese passa così com'è e il francese viene risolto dalla regola di unione per lingua. Le varianti di traduzione non vengono mai inviate a un arbitro: pagare un modello perché scelga tra due traduzioni corrette significherebbe spendere per nulla
Un modello ha l'arabo, un altro noPreferisci il valore non nullo (viene mantenuto l'arabo)
Gli array multilingua hanno lunghezza diversa per modelloUnione di tutti gli elementi per lingua