RAGSpine
意思決定(ADR)

ADR 0004: 完全な汎用化 — DomainProfile と任意次元ファクト

完全に汎用化する — CompanyProfile を DomainProfile に改め、構造化チャネルをユーザー定義の任意次元を持つ型付きファクトストアにする。

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

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

0002 のプロダクト方針の一部。0003 を前提条件(ゲート)とする。

コンテキスト

ナラティブ RAG + エージェント + 捏造防止という背骨は真にドメイン非依存だが、 構造化チャネルは骨の髄まで金融特化である。すなわち、固定の metric/entity/period/channel 4 タプル、fact_metric テーブル、REVENUE/PROFIT/ROE、そして依然として common/glossary.py にハードコードされたメトリック語彙(entities/geography/sensitivity は すでに config 駆動だが、metrics はそうではない)。汎用ライブラリという選択 (0003)をした以上、「汎用」は 両方の チャネルについて 真でなければならない。

決定

完全に汎用化する。CompanyProfileDomainProfile。構造化チャネルは、 ユーザー定義の任意次元を持つ型付きファクトストアと、それらに対するパラメトリックな クエリになる。metric/period/channel は宣言された次元へと集約される。メトリック語彙と シノニムは glossary.py から config へ移動する。金融/ACME は 2 つ以上のバンドル例のうちの 1 つとして同梱され、少なくとも 1 つの非金融の例によって、 実演を通じて汎用性を証明する。

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

  • 背骨のみの汎用性(案 B): ナラティブ RAG + エージェント + 捏造防止のみを 「汎用」と宣言し、構造化数値チャネルはフォーク可能な金融モジュールとして残す。 不採用 — 最も希少な差別化要素(決定論的な構造化数値 Q&A)を 「自分でフォークせよ」に明け渡してしまうため。
  • config 駆動だが第 2 ドメインなし(案 C): (金融のハードコードを排した)構成そのものに よって汎用性を証明し、第 2 ドメインのデモはまだ出荷しない。_到達点_としては 不採用 — 代わりに、実際の第 2 ドメインの例を伴う完全な汎用化を選択した。

帰結

  • 本シリーズ中最大のエンジニアリング上の賭けである。スキーマ変更(4 タプル → 任意次元)、 動的なツールスキーマ生成、config 駆動のパースがすべてこれに続く。
  • 独立した「config 駆動の完全性」という論点を包含する。
  • インテントパーサーが金融次元をハードコードするのをやめざるを得なくなる → 0010
  • リスク: この厳密さは部分的に金融の制約_から_生まれたものであり、汎用化は いかなる不変量も弱めてはならない。これは推奨されていた漸進的な道筋に対する、 ユーザーによるより野心的なオーバーライドだった — 実装は不変量を明示的に 守らなければならない。

このページ