RAGSpine
意思決定(ADR)

ADR 0007: 多言語対応 — 5 言語を見据えて設計し、2 言語を出荷する。残りはロケールパックとして提供

すべてのレイヤーにロケールの継ぎ目を通す。中国語 + 英語はコアで出荷・テストし、日本語 / イタリア語 / ドイツ語はコミュニティのロケールパックとして提供する。

ステータス: accepted · 日付: 2026-06-17

不変の記録。ドリフト追跡の対象外(covers なし)。編集せず、置き換え(supersede)で対応すること。

0002 のプロダクト方針の一部。0003 によってゲートされる。

コンテキスト

目標は世界規模のユーザーベースである。まず中国語、最終的には中国語 / 英語 / 日本語 / イタリア語 / ドイツ語に対応する。「多言語対応」は多層的な概念である — 回答の言語、決定的な メッセージ文字列(現在は中国語がハードコードされている)、入力のパース、検索のトークナイズ (BM25 は CJK のユニグラム + バイグラム。日本語には本格的な分かち書きが必要で、イタリア語 / ドイツ語には ステミングが必要)、そして言語ごとの評価である。中国語のみで出荷すると、後の 5 言語展開に必要な抽象化を過小設計してしまうリスクがある。

決定

5 言語を見据えて設計し、2 言語を出荷する。 locale の継ぎ目を すべての レイヤーに通す — トークナイザーレジストリ、メッセージカタログ、インテント語彙、プロンプトテンプレート — それぞれを ロケールをキーとし、他のすべてと同様に Protocol でプラガブルにする。コアでは 中国語 + 英語 を出荷・テストする。第二言語を英語にしたのは意図的である。英語は OSS における共通語 (リンガフランカ)であり、非 CJK 言語であることから、トークナイザー / ステミング / 空白区切りの抽象化が CJK 専用ではなく本物であることを強制するためである。日本語 / イタリア語 / ドイツ語は、コントリビューター向け チェックリストを備えたコミュニティの ロケールパック として出荷する。

検討した代替案(不採用)

  • 出力ロケールのみ / 薄い i18n(案 A): locale が回答の言語とメッセージカタログのみを制御し、 入力 / トークナイズ / コーパスは変更しない。不採用 — 5 言語という目標に対して継ぎ目が 過小設計になる。
  • 今すぐ全言語のパイプラインを完全にローカライズする(案 B): 5 言語すべてを直ちに 第一級として扱う。不採用 — 構築するのは継ぎ目と 2 つの参照ロケールであって、5 言語ではない。

帰結

  • ロケールパックは、外部コントリビューターに向けた Protocol 拡張ストーリーの具体的なテストとなり、 OSS ライブラリとしてのアイデンティティ(0003)を強化する。
  • ロケールをキーとするプロンプトテンプレートは 0008 によって実現される。
  • 言語ごとのインテント語彙は、0010 のパーサーに関する決定と相互作用する。
  • 新しい成果物: LocaleProfile、トークナイザーレジストリ、メッセージカタログ、「ロケールの 追加方法」ガイド。

このページ