Многоязычное обогащение — документация Entity Enricher

Многоязычное обогащение

Entity Enricher может выдавать результаты обогащения одновременно на 40 языках. Многоязычные поля хранятся как объекты JSON с ключами по языкам — этот формат переносим, доступен для запросов и совместим со всеми основными базами данных.

Редактор схем: переключатель мультиязычности

В редакторе схем включите флаг «многоязычный» для любого свойства типа строка или массив строк. Когда он включён, LLM возвращает значения, обёрнутые в объект с ключами по языкам, вместо простого значения.

Как это работает

1
Отметьте поля как многоязычные
В редакторе схем установите флажок «многоязычный» для свойств типа строка или массив. Флаг сохраняется как multilingual: true в схеме JSON.
2
Выберите целевые языки
В параметрах боковой панели выберите один или несколько языков из 40 поддерживаемых. Промпт обогащения указывает LLM генерировать значения на каждом выбранном языке. Первый выбранный язык является основным: он отмечен значком «Основной» и используется для всех немногоязычных строковых полей (описания, названия и т. д., не помеченные как multilingual: true). Нажмите кнопку на любом другом чипе, чтобы сделать его основным. Бэкенд также отфильтровывает любые лишние языковые ключи, которые LLM может выдать и которых нет в вашем выборе.
3
LLM возвращает результат с ключами по языкам
Динамическая модель Pydantic оборачивает многоязычные поля как dict[str, T], где ключи — это коды языков ISO 639-1, а значения соответствуют типу поля.

Формат данных

Многоязычные значения хранятся как JSON-объекты с кодами языков в качестве ключей. Этот формат выбран среди альтернатив за переносимость, удобство запросов и эффективность хранения.

Многоязычная строка
Свойство схемы
"description": {
"type": "string",
"multilingual": true
}
Результат обогащения
"description": {
"en": "A global pharma company",
"fr": "Une entreprise pharma mondiale",
"ar": "شركة أدوية عالمية"
}
Многоязычный массив
Свойство схемы
"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 использует Format 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-адреса, адреса эл. почты, номера телефонов
  • Логические флаги

Допустимые типы полей

Флаг мультиязычности допустим только для определённых типов свойств. Редактор схем применяет это автоматически.

Тип свойстваМногоязычный?Формат вывода
stringДаdict[str, str]
number / integerДаdict[str, float]
booleanДаdict[str, bool]
массив примитивовДаdict[str, list[str]]
objectНетВместо этого отметьте отдельные поля внутри объекта
массив объектовНетВместо этого отметьте отдельные поля внутри элементов
$refНетВместо этого отметьте поля внутри связанной сущности

Интеграция конвейера обогащения

Поддержка нескольких языков встроена в каждый этап конвейера обогащения.

Схема
multilingual: true
для выбранных полей
Конструктор промптов
Внедряет языковые
инструкции + примеры
Динамическая модель
str → dict[str, str]
Валидация Pydantic
Хранилище JSONB
Объекты с ключами
по языкам в выводе
Мультиэкспертиза: При использовании стратегии мультиэкспертизы каждый домен экспертизы получает многоязычные инструкции в собственном prompt. Поля переводятся независимо для каждой экспертизы, а затем объединяются в итоговый результат.

Многоязычные поля в слиянии

При слиянии результатов нескольких моделей многоязычные поля сравниваются по каждому языку.

СценарийРазрешение
Модели согласны по английскому, но расходятся по французскомуАнглийский проходит напрямую; французский разрешается для каждого языка через голосование большинством или арбитраж
Одна модель поддерживает арабский, другая — нетПредпочитать не-null значение (сохраняется арабское)
Многоязычные массивы различаются по длине для разных моделейОбъединение всех элементов по языкам