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.
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.
multilingual: true no schema JSON.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.dict[str, T], em que as chaves são códigos de idioma ISO 639-1 e os valores correspondem ao tipo do campo.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.
Os campos sem multilingual: true são devolvidos como valores simples. Identificadores, códigos, URLs, datas e números normalmente permanecem não multilingues.
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érios | A Objeto indexado por idioma | B Array de itens localizados |
|---|---|---|
| Estrutura | {"en": [...], "fr": [...]} | [{"en": "x", "fr": "y"}, ...] |
| Consultar um idioma | Acesso diretodata -> 'field' -> 'en' | Requer iteraçãojsonb_array_elements + extract |
| Adicionar um idioma | Adicione uma chave ao objeto | Atualizar todos os itens no array |
| Coerente com escalares | Sim — mesmo padrão {"en": "...", "fr": "..."} | Não — formato diferente para strings vs. arrays |
| Portabilidade da base de dados | Todas as principais bases de dados | Todas as principais bases de dados |
O formato indexado por idioma é consultável nativamente em todas as principais bases de dados que suportam colunas JSON.
Estão disponíveis 40 idiomas. Selecione qualquer combinação ao executar um enriquecimento.
enEnglishzhChinesehiHindiesSpanisharArabicfrFrenchbnBengaliptPortugueseruRussianjaJapanesedeGermanurUrduviVietnamesetrTurkishkoKoreantaTamilmrMarathiteTelugupaPunjabiyueCantoneseitItalianplPolishukUkrainianroRomaniannlDutchelGreekcsCzechhuHungariansvSwedishsrSerbianbgBulgarianhrCroatianskSlovakdaDanishfiFinnishnoNorwegianltLithuanianslSlovenianlvLatvianetEstonianpreserve)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.
A flag multilingue só é válida em certos tipos de propriedade. O editor de esquemas impõe isto automaticamente.
| Tipo de Propriedade | Multilingue? | Formato de saída |
|---|---|---|
| string | Sim | dict[str, str] |
| number / integer | Sim | dict[str, float] |
| boolean | Sim | dict[str, bool] |
| array de primitivos | Sim | dict[str, list[str]] |
| object | Não | Marque antes os campos individuais dentro do objeto — a menos que o objeto seja uma linha por idioma, ver abaixo |
| array de objetos | Não | Em vez disso, marque campos individuais dentro dos itens |
| $ref | Não | Em vez disso, marque campos dentro da entidade referenciada |
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.
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.
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.
Um valor preservado são os seus dados devolvidos intactos, pelo que não há nada para traduzir.
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.
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”.
O suporte multilingue está integrado em todas as fases do pipeline de enriquecimento.
Ao fundir resultados de vários modelos, os campos multilingues são comparados por idioma.
| Cenário | Resolução |
|---|---|
| Os modelos concordam em inglês mas divergem em francês | Nã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ão | Preferir o valor não nulo (o árabe é mantido) |
| Os arrays multilingues diferem em comprimento por modelo | União de todos os itens por idioma |