RAGSpine
意思決定(ADR)

ADR 0009: 「フレームワーク非依存」の再定義 — フレームワークロックインなし + 寛容ライセンスのみ

フレームワーク非依存を、オーケストレーションのロックインなし + 寛容ライセンスのみとして再定義する。実バックエンドは、純粋性のためではなくインストールの重さのためのオプトイン extra となる。

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

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

0002 のプロダクト方針の一部。

背景

「フレームワーク非依存 / ゼロ SDK コア / オフラインで動作」という見出しは、実際の制約を 誤って表現している。本当の要件は次のとおりである:(a) LangChain 系オーケストレーションへの ロックインなし(LangChain / LlamaIndex / Dify / LangGraph)、および (b) 依存関係のライセンス衛生 — Apache-2.0 より厳しいものは含めない(GPL/AGPL/LGPL、SSPL、非商用などを除外)。 成熟した基盤ライブラリ(torch、numpy、sentence-transformers)は許容される。 「依存ゼロ」は決して本質ではなかった。

決定

フレームワーク非依存 = (a) オーケストレーションフレームワークへのロックインなし + (b) 寛容ライセンスのみ(Apache-2.0 以下の寛容さ) として再定義する。具体的には:

  • ポジショニングの書き換え:「ゼロ SDK / オフラインで動作」から「フレームワークロックインなし + ライセンスクリーン + すべてのバックエンドは Protocol 経由で交換可能」へ。
  • CI での依存ライセンスゲート: すべての推移的依存関係は寛容ライセンスで なければならず、そうでなければゲートは失敗する。これにより制約が運用に落とし込まれ、それ自体が コンプライアンスを重視するユーザーへのセールスポイントとなる。
  • 軽量なデフォルトインストール: 実バックエンド(torch/embeddings)は extras ([embed] など)経由のオプトインとする — これはインストールの重さとオプションの GPU に関する パッケージング/UX 上の選択であり、もはや純粋性のための選択ではない。オフラインで確定的なパス (BM25 + MockProvider)は引き続きデフォルトのテスト/デモループであり、ドグマではなく 維持された強みである。

検討した代替案(却下)

  • 絶対的なゼロ SDK コアとし、純粋性のために全実バックエンドを extras に置く(オプション A): その_根拠_ゆえに却下 — torch/numpy はライセンス面でもロックイン面でも許容可能であるため、 理由は純粋性ではなくインストールの重さである。(軽量デフォルトという結果自体は、別の理由で 維持される。)
  • バッテリー同梱のデフォルト(ベースインストールに実 CPU embedding を同梱): 却下 — 数 GB のデフォルトは、評価段階にあるライブラリにとって採用の障壁となる。
  • ragspine-core + ragspine の階層化ディストリビューション:単独著者による v0.1 には 時期尚早な運用オーバーヘッドとして却下。

影響

  • README と pyproject のポジショニング/文言が変わる。
  • 新しい CI ワークストリーム:依存ライセンスゲート。
  • 0005/0006 を緩和する: 実 embedding モデルはライセンス面でもロックイン面でも許容可能であり、重さの理由から extra とし、 オフラインのデフォルトは明確にラベル付けされた純粋なプレースホルダーのままとする。

このページ