多语言富集 - Entity Enricher 文档

多语言富集

Entity Enricher 最多可同时生成 40 种语言的增强结果。多语言字段以语言为键的 JSON 对象形式存储——这种格式便于移植、可查询,并兼容所有主流数据库。

Schema 编辑器:多语言切换

在 schema 编辑器中,在任何字符串或字符串数组属性上切换多语言标志。启用后,LLM 会返回以语言为键的对象包装的值,而不是普通值。

工作原理

1
将字段标记为多语言
在 schema 编辑器中,勾选字符串或数组属性上的多语言复选框。该标志在 JSON schema 中存储为 multilingual: true
2
选择目标语言
在侧边栏选项中,从 40 种支持的语言中选择一种或多种语言。增强提示词会指示 LLM 以每种所选语言生成值。首个选中的语言即主语言:它会以“主”徽章高亮显示,并用于所有非多语言字符串字段(未标记 multilingual: true 的描述、名称等)。点击其他任意语言块上的 按钮可将其设为主语言。后端还会过滤掉 LLM 可能输出的、不在你所选范围内的多余语言键。
3
LLM 返回以语言为键的输出
动态 Pydantic 模型将多语言字段封装为 dict[str, T],其中键为 ISO 639-1 语言代码,值与字段类型匹配。

数据格式

多语言值以 JSON 对象形式存储,语言代码作为键。选择此格式而非其他方案,是因为它具有可移植性、可查询性和存储效率。

多语言字符串
Schema 属性
"description": {
"type": "string",
"multilingual": true
}
丰富化输出
"description": {
"en": "A global pharma company",
"fr": "Une entreprise pharma mondiale",
"ar": "شركة أدوية عالمية"
}
多语言数组
Schema 属性
"indications": {
"type": "array",
"items": { "type": "string" },
"multilingual": true
}
丰富化输出
"indications": {
"en": ["pain relief", "fever"],
"fr": ["anti-douleur", "fièvre"],
"ar": ["تخفيف الألم", "حمى"]
}
非多语言字段

未设置 multilingual: true 的字段会以普通值返回。标识符、代码、URL、日期和数字通常保持非多语言。

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

为何采用此格式?

多语言数组有两种处理方式。Entity Enricher 使用 格式 A(以语言为键的对象),因为这是唯一无需转换即可在所有主流数据库中直接使用的格式。

条件A 以语言为键的对象B 本地化项数组
结构{"en": [...], "fr": [...]}[{"en": "x", "fr": "y"}, ...]
查询一种语言直接访问
data -> 'field' -> 'en'
需要迭代
jsonb_array_elements + extract
添加语言为对象添加一个键更新数组中的每一项
与标量保持一致——相同的 {"en": "...", "fr": "..."} 模式 — 字符串与数组的结构不同
数据库可移植性所有主流数据库所有主流数据库

数据库查询示例

以语言为键的格式在所有支持 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;

支持的语言

提供 40 种语言。运行富化时可选择任意组合。

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

哪些字段应支持多语言?

标记为多语言
  • 名称(公司、产品、城市、国家/地区)
  • 描述与摘要
  • 医学/科学术语
  • 状态标签(“已批准”、“活跃”)
  • 类别标签和标记
  • 说明与建议
保持非多语言
  • 技术标识符(UUID、ID)
  • 标准化代码(ATC、CAS、ISO)
  • 缩写词(FDA、EMA、WHO)
  • 数字、日期、百分比
  • URL、电子邮件、电话号码
  • 布尔标志

有效的字段类型

多语言标志仅对某些属性类型有效。schema 编辑器会自动强制执行此规则。

属性类型多语言?输出格式
stringdict[str, str]
number / integerdict[str, float]
booleandict[str, bool]
基本类型数组dict[str, list[str]]
object改为标记对象内部的各个字段
对象数组改为标记项内部的各个字段
$ref改为标记被引用实体内部的字段

富集管道集成

多语言支持贯穿富集流程的每个阶段。

Schema
multilingual: true
作用于选定字段
提示词构建器
注入语言
指令 + 示例
动态模型
str → dict[str, str]
Pydantic 校验
JSONB 存储
输出中以语言为键的
对象
多专业领域: 使用多专业领域策略时,每个专业领域都会在各自的 prompt 中收到多语言指令。各字段按专业领域独立翻译,然后合并到最终输出中。

融合中的多语言字段

融合来自多个模型的结果时,多语言字段会按语言进行比较。

场景解析
模型在英语上一致,但在法语上存在分歧英语直接通过;法语按语言通过多数投票或仲裁解析
一个模型支持阿拉伯语,另一个则不支持优先选择非空值(保留阿拉伯语)
多语言数组在各模型间长度不同每种语言中所有项的并集