Enriquecimento Multilingue - Documentação do Entity Enricher

Enriquecimento Multilingue

O Entity Enricher pode produzir resultados de enriquecimento em até 40 idiomas em simultâneo. Os campos multilingues são armazenados como objetos JSON indexados por idioma — um formato portável, consultável e compatível com todas as principais bases de dados.

Editor de Workflow: alternador multilingue

No editor de schemas, ative o sinalizador multilingue em qualquer propriedade de string ou array de strings. Quando ativado, o LLM devolve os valores envolvidos num objeto indexado por idioma em vez de um valor simples.

Como Funciona

1
Marcar campos como multilingues
No editor de schemas, marque a caixa de verificação multilingue nas propriedades de string ou array. O sinalizador é armazenado como multilingual: true no schema JSON.
2
Selecione os idiomas de destino
Nas opções da barra lateral, escolha um ou mais idiomas entre os 40 idiomas suportados. O prompt de enriquecimento instrui o LLM a produzir valores em cada idioma selecionado. O primeiro idioma selecionado é o idioma principal: é destacado com um badge “Principal” e é usado para todos os campos de string não multilíngues (descrições, nomes, etc. que não estejam marcados como multilingual: true). Use o botão em qualquer outro chip para o promover a principal. O backend também filtra quaisquer chaves de idioma perdidas que o LLM possa emitir e que não estejam na sua seleção.
3
O LLM devolve saída indexada por idioma
O modelo Pydantic dinâmico encapsula os campos multilíngues como dict[str, T], em que as chaves são códigos de idioma ISO 639-1 e os valores correspondem ao tipo do campo.

Formato dos Dados

Os valores multilingues são armazenados como objetos JSON com códigos de idioma como chaves. Este formato foi escolhido em detrimento de alternativas pela sua portabilidade, capacidade de consulta e eficiência de armazenamento.

String Multilingue
Propriedade do esquema
"description": {
"type": "string",
"multilingual": true
}
Saída do enriquecimento
"description": {
"en": "A global pharma company",
"fr": "Une entreprise pharma mondiale",
"ar": "شركة أدوية عالمية"
}
Array Multilingue
Propriedade do esquema
"indications": {
"type": "array",
"items": { "type": "string" },
"multilingual": true
}
Saída do enriquecimento
"indications": {
"en": ["pain relief", "fever"],
"fr": ["anti-douleur", "fièvre"],
"ar": ["تخفيف الألم", "حمى"]
}
Campos não multilingues

Os campos sem multilingual: true são devolvidos como valores simples. Identificadores, códigos, URLs, datas e números normalmente permanecem não multilingues.

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

Porquê este formato?

Existem duas abordagens para arrays multilingues. O Entity Enricher usa o Formato A (objeto indexado por idioma) porque é o único formato que funciona tal como está em todas as principais bases de dados sem transformação.

CritériosA Objeto indexado por idiomaB Array de itens localizados
Estrutura{"en": [...], "fr": [...]}[{"en": "x", "fr": "y"}, ...]
Consultar um idiomaAcesso direto
data -> 'field' -> 'en'
Requer iteração
jsonb_array_elements + extract
Adicionar um idiomaAdicione uma chave ao objetoAtualizar todos os itens no array
Coerente com escalaresSim — mesmo padrão {"en": "...", "fr": "..."}Não — formato diferente para strings vs. arrays
Portabilidade da base de dadosTodas as principais bases de dadosTodas as principais bases de dados

Exemplos de Consulta à Base de Dados

O formato indexado por idioma é consultável nativamente em todas as principais bases de dados que suportam colunas 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;

Idiomas suportados

Estão disponíveis 40 idiomas. Selecione qualquer combinação ao executar um enriquecimento.

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

Que campos devem ser multilingues?

Marcar como multilingue
  • Nomes e etiquetas (cidade, país, nome do produto)
  • Descrições e resumos
  • Termos médicos/científicos
  • Etiquetas de estado (“Aprovado”, “Ativo”)
  • Rótulos e etiquetas de categoria
  • Instruções e recomendações
Manter não multilingue
  • Campos preservados (marcados como preserve)
  • Identificadores técnicos (UUIDs, IDs)
  • Códigos padronizados (ATC, CAS, ISO)
  • Siglas (FDA, EMA, WHO)
  • Números, datas, percentagens
  • URLs, emails, números de telefone
  • Sinalizadores booleanos

A flag multilingual não pode ser combinada com a flag preserve: um valor preservado passa sem tradução, num único idioma. O editor de schema desativa o botão em conflito e a API rejeita schemas que tenham ambas as flags. Os campos-chave (chaves naturais ou de base de dados) podem ser multilingues — a identidade da entidade utiliza então o idioma de chave bloqueado do schema.

Tipos de campo válidos

A flag multilingue só é válida em certos tipos de propriedade. O editor de esquemas impõe isto automaticamente.

Tipo de PropriedadeMultilingue?Formato de saída
stringSimdict[str, str]
number / integerSimdict[str, float]
booleanSimdict[str, bool]
array de primitivosSimdict[str, list[str]]
objectNãoMarque antes os campos individuais dentro do objeto — a menos que o objeto seja uma linha por idioma, ver abaixo
array de objetosNãoEm vez disso, marque campos individuais dentro dos itens
$refNãoEm vez disso, marque campos dentro da entidade referenciada

Com o que o multilingue não pode ser combinado

Um valor multilingue é um mapa de idiomas, e não um valor único — pelo que os atributos que restringem um valor único não se lhe podem aplicar. Estes conflitos são resolvidos aquando da geração do esquema e recusados quando guarda um manualmente, em vez de falharem mais tarde no enriquecimento.

Os vocabulários fechados prevalecem

Uma propriedade restrita a um conjunto fixo de membros não pode ser também multilingue: os membros são tokens canónicos e uma base de dados consumidora restringe uma coluna com base neles. As etiquetas traduzidas pertencem a uma tabela de correspondência sua, indexada pelo token.

Format e pattern não se aplicam

Uma data, um UUID ou um código validado por regex têm uma só forma legível por máquina, não uma por idioma. Guardar uma propriedade que seja ambas as coisas é rejeitado.

Preservar prevalece sobre multilingue

Um valor preservado são os seus dados devolvidos intactos, pelo que não há nada para traduzir.

As chaves podem ser multilingues

Esta é permitida. A identidade é resolvida numa única língua — fixada para o schema na primeira vez que este é publicado numa base de dados — pelo que um nome pode ser traduzido sem que a sua identidade se altere.

Quando a língua é dados, e não uma tradução

Algumas fontes modelam o idioma como linhas: uma lista em que cada item traz um código de idioma e os seus próprios valores, um por idioma. Essa forma é diferente de uma propriedade multilingue e as duas não devem ser misturadas. A geração reconhece uma propriedade destas como o eixo de idioma do objeto — apenas se todos os valores observados forem mesmo códigos de idioma — e desativa então o mecanismo integrado em toda essa subárvore. Marcar campos individuais dentro do item, o conselho habitual para objetos, é precisamente o remédio errado neste caso: dar-lhe-ia traduções de linhas que já existem uma por idioma.

Mais uma distinção a manter clara: os idiomas para os quais enriquece são uma escolha por execução; o idioma em que está escrito o texto do próprio esquema (as suas descrições e etiquetas) é fixado no esquema; e o idioma em que a identidade é resolvida é fixado por base de dados. Três definições distintas que soam todas a “o idioma”.

Integração do Pipeline de Enriquecimento

O suporte multilingue está integrado em todas as fases do pipeline de enriquecimento.

Esquema
multilingual: true
nos campos selecionados
Construtor de Prompts
Injeta instruções de
idioma + exemplos
Modelo dinâmico
str → dict[str, str]
Validação Pydantic
Armazenamento JSONB
Objetos indexados por idioma
no resultado
Multi-especialização: Ao utilizar a estratégia de multi-especialização, cada domínio de especialização recebe as instruções multilingues no seu próprio prompt. Os campos são traduzidos de forma independente por especialização e, em seguida, combinados no resultado final.

Campos Multilingues na Fusão

Ao fundir resultados de vários modelos, os campos multilingues são comparados por idioma.

CenárioResolução
Os modelos concordam em inglês mas divergem em francêsNão é uma divergência. A identidade é avaliada no idioma principal da execução, pelo que isto conta como concordância: o inglês passa tal como está e o francês é resolvido pela regra de fusão por idioma. A variação de tradução nunca é enviada para um árbitro — pagar a um modelo para escolher entre duas traduções corretas seria gastar por nada
Um modelo tem árabe, outro nãoPreferir o valor não nulo (o árabe é mantido)
Os arrays multilingues diferem em comprimento por modeloUnião de todos os itens por idioma