多言語エンリッチメント - Entity Enricher ドキュメント

多言語エンリッチメント

Entity Enricher は最大 40 言語のエンリッチメント結果を同時に生成できます。多言語フィールドは言語をキーとした JSON オブジェクトとして保存され、この形式はポータブルでクエリ可能、あらゆる主要なデータベースと互換性があります。

ワークフローエディター: 多言語切り替え

スキーマエディターで、任意の文字列プロパティまたは文字列配列プロパティの multilingual フラグを切り替えます。有効にすると、LLM はプレーンな値ではなく言語をキーとするオブジェクトでラップされた値を返します。

仕組み

1
フィールドを多言語としてマーク
スキーマエディターで、文字列プロパティまたは配列プロパティの multilingual チェックボックスをオンにします。このフラグは JSON schema に multilingual: true として保存されます。
2
対象言語を選択
サイドバーのオプションで、対応する40言語の中から1つ以上の言語を選択します。enrichment の prompt は、選択した各言語で値を生成するよう LLM に指示します。最初に選択した言語がプライマリ言語となり、「Primary」バッジで強調表示され、multilingual でないすべての文字列フィールド(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"

なぜこのフォーマットなのか?

多言語配列には2つのアプローチがあります。Entity EnricherはFormat A(言語キー付きオブジェクト)を使用しています。これは、変換なしですべての主要データベースでそのまま機能する唯一の形式だからです。

基準A 言語をキーとするオブジェクトB ローカライズされた項目の配列
構造{"en": [...], "fr": [...]}[{"en": "x", "fr": "y"}, ...]
1つの言語を照会直接アクセス
data -> 'field' -> 'en'
反復が必要です
jsonb_array_elements + extract
言語を追加オブジェクトにキーを 1 つ追加します配列内のすべての項目を更新します
スカラー値と一貫はい — 同じ{"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

どのフィールドを多言語対応にすべきか?

多言語としてマーク
  • 名称やラベル(都市、国、製品名)
  • 説明と要約
  • 医学・科学用語
  • ステータスラベル(「承認済み」「有効」)
  • カテゴリラベルとタグ
  • 手順と推奨事項
多言語化しないまま保持
  • 保持されるフィールド(preserve と表示)
  • 技術識別子(UUID、ID)
  • 標準化コード(ATC、CAS、ISO)
  • 略語(FDA、EMA、WHO)
  • 数値、日付、パーセンテージ
  • URL、メールアドレス、電話番号
  • ブールフラグ

multilingual フラグは preserve フラグと併用できません。保持された値は翻訳されず、単一言語のまま通過します。schema エディターは競合するトグルを無効化し、API は両方のフラグを持つ schema を拒否します。キーフィールド(自然キーまたはデータベースキー)は multilingual にできます。その場合、entity の識別には schema でロックされたキー言語が使用されます。

有効なフィールドタイプ

多言語フラグは特定のプロパティタイプでのみ有効です。スキーマエディターはこれを自動的に強制します。

プロパティタイプ多言語対応ですか?出力フォーマット
stringはいdict[str, str]
number / integerはいdict[str, float]
booleanはいdict[str, bool]
プリミティブの配列はいdict[str, list[str]]
objectいいえ代わりにオブジェクト内の個々のフィールドにマークを付けてください — ただし、オブジェクトが言語ごとに 1 行の場合は下記を参照してください
オブジェクトの配列いいえ代わりに、項目内の個々のフィールドをマークします
$refいいえ代わりに、参照先エンティティ内のフィールドをマークします

多言語対応と併用できないもの

多言語の値は単一の値ではなく言語のマップであるため、単一の値を制約する属性は適用できません。これらの競合はスキーマ生成時に解決され、手動で保存する場合は拒否されます。エンリッチメント時に後から失敗することはありません。

閉じた語彙が優先されます

固定されたメンバーの集合に制限されたプロパティは、同時に多言語にすることはできません。メンバーは正規のトークンであり、利用側のデータベースはそれらを使って列を制約します。翻訳されたラベルは、トークンをキーとするお客様独自のルックアップテーブルで管理してください。

format と pattern は適用されません

日付、UUID、正規表現でチェックされるコードは、機械可読な形式が言語ごとに1つずつあるのではなく、1つだけです。両方を兼ねるプロパティの保存は拒否されます。

保持が多言語化より優先されます

保持された値は、お客様のデータがそのまま返されたものであるため、翻訳するものはありません。

キーは多言語になる場合があります

これは許可されています。アイデンティティは 1 つの言語で解決され、スキーマがデータベースに初めて公開された時点で固定されるため、アイデンティティを動かすことなく名称を翻訳できます。

言語が翻訳ではなくデータである場合

言語を行としてモデル化するソースもあります。各項目が言語コードとそれぞれの値を持ち、言語ごとに 1 項目が並ぶリストです。これは多言語プロパティとは異なる形であり、両者を混在させてはいけません。生成処理は、観測されたすべての値が実際に言語コードである場合に限り、そのようなプロパティをオブジェクトの言語軸として認識し、そのサブツリー全体で内蔵の多言語機構を無効にします。オブジェクトに対する通常の助言である「項目内の個々のフィールドにマークを付ける」は、ここではまったくの逆効果です。すでに言語ごとに 1 行ずつ用意されている行を、さらに翻訳することになってしまいます。

もう 1 つ混同しないでおきたい区別があります。エンリッチメント先の言語は実行ごとの選択です。スキーマ自身の文章 (説明やラベル) が書かれている言語はスキーマ側で固定されます。そして同一性解決に使われる言語はデータベースごとに固定されます。どれも「言語」と呼ばれますが、3 つの別々の設定です。

エンリッチメントパイプライン連携

多言語サポートは、エンリッチメントパイプラインのあらゆる段階に組み込まれています。

スキーマ
multilingual: true
選択したフィールドに適用
promptビルダー
言語の指示
と例を注入します
動的モデル
str → dict[str, str]
Pydantic による検証
JSONBストレージ
出力内の言語をキーとする
オブジェクト
マルチエキスパティーズ: マルチエキスパティーズ戦略を使用する場合、各専門領域は独自のプロンプトで多言語対応の指示を受け取ります。フィールドは専門領域ごとに個別に翻訳され、最終出力にマージされます。

フュージョンにおける多言語フィールド

複数の model の結果を fusion する際、多言語フィールドは言語ごとに比較されます。

シナリオ解決
モデルは英語では一致しますが、フランス語では異なります不一致ではありません。同一性は実行の主要言語で判定されるため、これは一致として扱われます。英語はそのまま通過し、フランス語は言語ごとのマージ規則で決定されます。翻訳のばらつきが調停に回されることはありません。2 つの正しい翻訳のどちらかを選ばせるためにモデルへ費用を払うのは、無駄な支出だからです
あるモデルはアラビア語に対応し、別のモデルは対応していませんnull 以外の値を優先します(アラビア語が保持されます)
多言語配列の長さがモデルごとに異なります言語ごとのすべての項目の和集合