ADR 0002: プロダクトの方向性 — 汎用・ライセンスクリーンでフレームワークにロックインされない RAG ライブラリ
包括的な北極星 — ハードな不変条件と、config/Protocol 駆動によるソフトな柔軟性を分離する — 決定ごとの 8 本の ADR 0003–0010 への索引。
ステータス: accepted · 日付: 2026-06-17
不変の記録。ADR はドリフト追跡の対象外です(
coversなし)。決定を覆す場合は、 古い ADR を編集するのではなく、それを置き換える新しい ADR を追加してください。
これは包括 ADR です。北極星を記録し、2026-06-17 の構造化された設計インタビューで 確定した決定ごとの 8 本の ADR(0003–0010)への索引を提供します。
コンテキスト
RAGSpine には、コードで強制される強固な厳密性(捏造防止、出典追跡、RESTRICTED 分離、プライバシーに配慮したトレース)がありましたが、戦略は未選択のままでした。 対象ユーザー、スコープ、金融特化か汎用かという賭けはいずれも未決定であり、 多くの機能が構築されたものの、実行中のパイプラインには組み込まれていませんでした。 私たちは、基盤的な分岐点から順にトップダウンで戦略を確定しました。
決定
北極星: 決定的でライセンスクリーン、かつフレームワークにロックインされない RAG のスパイン —
素の Python で組み立てるライブラリであり、捏造防止/出典追跡/ソース分離が
プロンプトによる提案ではなく、コードで強制される不変条件であること。
config によるドメイン非依存、ロケールパックによる多言語対応、あらゆるバックエンドは
Protocol 経由で差し替え可能。
8 つの決定すべてを貫く共通線: 保証 と 柔軟性 を分離すること。不変条件
(捏造防止、出典追跡、分離、依存関係のライセンス、セキュリティゲート)はハードで、
決定的であり、プラグイン化できません。それ以外のすべて(ドメイン、言語、LLM、
埋め込み、リランカー、パース戦略)はソフトであり、config または Protocol
駆動です。
| # | 決定 | ADR |
|---|---|---|
| 1 | 対象ユーザー = 他者がその上に構築するための汎用 OSS ライブラリ | 0003 |
| 2 | DomainProfile による完全な汎用性;金融は同梱される一例にすぎない | 0004 |
| 3 | リーンなコア + experimental/extras の分離;コアに休眠コードを置かない | 0005 |
| 4 | 品質 = プロパティテストとしての不変条件 + 実データの検索ベンチマーク 1 本 | 0006 |
| 5 | 多言語 = 5 言語を見据えた設計、2 言語で出荷(中国語 + 英語)、ロケールパック | 0007 |
| 6 | プロンプト = PromptRegistry の背後にパッケージ化された ragspine/prompts/<locale>/ | 0008 |
| 7 | フレームワーク非依存 = フレームワークロックインなし + 寛容ライセンスのみ;リーンなデフォルト | 0009 |
| 8 | インテント解析 = 決定的なセキュリティゲート + プラグイン可能な IntentParser | 0010 |
帰結
ここから導かれる短期のワークストリーム(これ以上の決定は不要):
CompanyProfile→DomainProfile;ハードコードされたメトリック語彙をcommon/glossary.pyから config へ移動する。- 構造化チャネルのスキーマ:
fact_metricの 4 タプル → ユーザー定義の任意の次元へ。 - インテントパーサーから決定的な
SecurityGateを抽出する;IntentParserを Protocol にする。 PromptRegistry+ragspine/prompts/<locale>/。- ロケールの継ぎ目: トークナイザーレジストリ + メッセージカタログ +
LocaleProfile。 - CI: 依存関係ライセンスゲート;
scripts/check_doc_drift.pyを組み込む。 - 金融以外の第 2 ドメインの例 1 つ + 実データの検索ベンチマーク 1 本 (「汎用」と「hybrid > BM25」を主張から証拠へ変える)。
- README/ポジショニングの文言を書き直す。
派生的な立場(個別にはインタビューしていない;誤りがあれば指摘を):
- FastAPI + RQ の
service/レイヤーはリファレンスデプロイの例であり、コアの 保証ではない(0003 + 0005 から導かれる)。したがって、その認証の欠如は、サービスを 第一級の成果物に昇格させない限り、短期の優先事項ではない。 - 完全な config 駆動の振る舞いは
DomainProfile(0004)に包含される。
リスク:
- 完全な汎用化(0004)は最も重い賭けである — 本物のリファクタリングであり、元の 金融制約 から生まれた 厳密性を薄めてしまうリスクがある。実装では一線を守ら なければならない: いかなる不変条件も弱めることなく汎用化すること。
- 8 つの決定を合わせると、単独著者による新規の v0.1 にしては大きな表面積を描くことになる。 作業は「まずリーンなコアを信頼に足るものにし、その後 experimental モジュールを 一つずつ昇格させる」という順序で進めること。一度にすべてを行わないこと。