最終更新: 2026/06/22 19:15
RQ-060: Knowledge Capture Pipeline — bizlp fit/misfit 判定
位置付け: RQ-054(一般論の意思決定地図)を bizlp の 4 制約に当てはめ、採用パターンを判定する。
- 前提:
RQ-054_knowledge_capture_pipeline_synthesis.md- 既決:
ADR-0069(Phase R1 実装済み)- 起票日: 2026-05-26
0. TL;DR
bizlp は既に Advanced RAG (Hybrid + Reranking) を ADR-0069 Phase R1 で採用・実装済み。RQ-054 の 6 パターン評価と bizlp 制約を突合した結果、この選択は正しい。
今後の拡張パスは「Phase R2 で Modular RAG 化(多源対応)」→「必要に応じて GraphRAG 補完(ADR 間関係性)」の 2 段階。Agentic RAG は監査要件・単独開発の制約から当面不採用。
1. bizlp の 4 制約
| # | 制約 | 具体値 | RAG への影響 |
|---|---|---|---|
| C1 | GAS 6 分制限 | 1 関数 6 分、Trigger 累積 90 分/日 | RAG は GAS 外(Workers)で動作。影響なし(ADR-0069 で意図的に分離済み) |
| C2 | Cloudflare Workers | Workers Paid ($5/月)、Vectorize Free 100M vectors、Workers AI 無料枠 | インフラは既に確保済み。追加コストなしで RAG 運用可能 |
| C3 | 監査要件 | 会計監査対応、トレーサビリティ必須、CLAUDE.md に機密値禁止ルール | citation 検証 3 層防御は実装済み。回答根拠の追跡可能性が必須 |
| C4 | 単独開発 | 1 人法人、AI エージェント主体開発、Jr 入社 2026-10 予定 | 運用複雑性を最小化。自律型(Agentic)は監視負荷が重すぎる |
2. 6 パターン × 4 制約の fit/misfit マトリクス
| パターン | C1 GAS 6分 | C2 Workers | C3 監査 | C4 単独開発 | 総合判定 |
|---|---|---|---|---|---|
| Naive RAG | ◎ 無関係 | ◎ 最小構成 | △ citation なし | ◎ 最単純 | △ Phase R1 以下 |
| Advanced RAG | ◎ 無関係 | ◎ 既存インフラで実現 | ◎ citation 3 層防御 | ◎ 運用可能 | ◎ 現行採用 |
| Modular RAG | ◎ 無関係 | ◯ Router 追加要 | ◎ モジュール別監査可 | ◯ 複雑性増だが管理可能 | ◯ R2 候補 |
| Agentic RAG | ◎ 無関係 | △ DO/Queue 拡張要 | ✕ 非決定論的、軌跡監査困難 | ✕ 監視負荷過大 | ✕ 不採用 |
| GraphRAG | ◎ 無関係 | △ グラフ DB 別途要 | ◎ 関係性で根拠明示 | △ 構築・維持コスト | △ R3 補完候補 |
| Incremental | ◎ 無関係 | ◎ Upsert 対応済 | ◎ version 管理可 | ◎ 自動化容易 | ◎ R2 で統合 |
3. 判定結果: 段階的採用ロードマップ
Phase R1(現在・実装済み): Advanced RAG
パターン: Advanced RAG (Hybrid Search + Reranking)
実装状況(ADR-0069):
- BM25 キーワード検索(
Intl.Segmenter('ja')による日本語対応)+ Vectorize セマンティック検索 - Claude Sonnet 4.6 による セマンティック再ランキング
- Claude Haiku による回答生成 + citation 3 層防御
- 閲覧中ページ優先注入(current page boost)
bge-m3多言語埋め込みモデル(768 次元)
fit 根拠:
- 監査要件(C3): citation 検証が機械的に強制される(正規表現マッチ + 偽 citation カウント)
- 単独開発(C4): エンドポイント 4 本 + スクリプト 1 本の最小構成
- コスト: LLM ~¥100-120/月、Workers AI/Vectorize 無料枠内
- 規模:
530 docs、5K vectors(Vectorize 容量の 0.005%)
RQ-054 との整合: Synthesis §4 ケース #6(強監査要件 → Advanced RAG + provenance ログ)に完全一致。
Phase R2(2026-08 判定): Modular RAG 化 + Incremental 統合
トリガー条件(ADR-0069 §2.4、3 ヶ月後レビュー):
- docs 単源で答えられなかった質問 > 月 10 件 → R2 起案
- 回答精度(人間評価)< 70% → R2 起案
- citation 精度 < 80% → R2 起案
追加するモジュール:
- Query Router: クエリ意図を判定し、docs / ADR / glossary / memory の最適ソースに振分
- 多源インデックス: ADR + memory + glossary をそれぞれ独立 Vectorize namespace に格納
- Incremental Upsert:
docs-vectorize.mjsをコンテンツハッシュ比較で差分のみ再埋め込みに進化 - Contextual BM25: チャンクに LLM 生成の文脈要約を付与し BM25 精度向上(Anthropic 手法、67% 改善の実績あり)
fit 根拠:
- Workers 既存インフラ内で完結(Router は Worker 内ロジック、namespace 追加は Vectorize 設定のみ)
- モジュール境界が明確なため、単独開発でも各モジュールを独立テスト可能
- Incremental 統合でビルド時間を短縮(全再構築 → 差分のみ)
Phase R3(2027 以降・条件付き): GraphRAG 補完
トリガー条件:
- 「ADR-0023 と ADR-0049 の関係は?」「この決定の影響範囲は?」型の関係性質問が月 5 件超
- R2 の多源 RAG でも回答不十分な cross-reference 質問が継続
追加要素:
- ADR 間の Supersedes / Refines / Implements 関係をナレッジグラフ化
- Vectorize(ベクトル検索)+ グラフ走査のハイブリッド
- ただし専用グラフ DB(Neo4j 等)は不要 — ADR frontmatter の関係性メタデータを Workers KV にフラット格納し、隣接ノード探索で十分な規模
fit 根拠:
- ADR 数は現在 ~70 件。フル GraphRAG(Leiden コミュニティ検出等)は過剰
- フラットな関係性マップ(KV 格納)なら単独開発で維持可能
- LLM によるエンティティ抽出は不要(ADR frontmatter に関係性が構造化済み)
4. 明確に不採用とするパターン
Agentic RAG — 不採用
理由:
- 監査要件との衝突(C3): 非決定論的な探索ループは「なぜその回答に至ったか」の軌跡監査が困難。RQ-054 Claude 版が ◎ で「p95<500ms 要件と監査要件には不向き」と評価
- 単独開発の限界(C4): 無限ループ防止、ツール選択誤り検知、コスト暴騰アラートの監視基盤を 1 人で構築・維持するのは非現実的
- 現状の規模感: ~530 docs、質問は月 10-30 件程度の見込み。エージェントが自律判断するほどの複雑性がない
- コストリスク: エージェントの反復 LLM 呼び出しはコスト予測が困難。現行の ¥100-120/月 から桁違いに増大する可能性
フル GraphRAG — 不採用(簡易版は R3 で検討)
理由:
- 初期構築コスト: 全テキストを LLM に入力してエンティティ抽出 → トークン消費が指数関数的(RQ-054 Gemini 版の指摘)
- グラフ DB 運用: Neo4j 等の別サービス追加は C2(Workers 完結)と C4(単独運用)に反する
- ADR 規模: ~70 件の ADR は frontmatter メタデータで関係性が既に構造化されており、LLM エンティティ抽出の必要がない
5. チャンキング戦略の bizlp 採用方針
RQ-054 Synthesis §5.1 の段階的採用をそのまま適用:
| Phase | 戦略 | bizlp 実装 | 状態 |
|---|---|---|---|
| R1(現在) | 段落ベース分割(~1000 トークン) | docs-vectorize.mjs の chunkMarkdown() | ✅ 実装済 |
| R2 | Late Chunking(速度重視インデックス) | bge-m3 ロングコンテキスト活用で Mean Pooling | 未着手 |
| R2 | Contextual Retrieval(高精度中核データ) | ADR / glossary チャンクに LLM 要約付与 | 未着手 |
| R3 | チャンクサイズ A/B テスト | 500 vs 1000 vs 1500 トークンで citation 精度比較 | ADR-0069 §5.3 で計画済 |
6. 権限・トレーサビリティの bizlp 採用方針
現状(R1)で十分な範囲
| 要素 | 実装状況 | 備考 |
|---|---|---|
| citation 検証 | ✅ 3 層防御(system prompt 禁止 + 書式固定 + 正規表現後処理) | 偽 citation 率 1% 超でフィーチャーフラグ OFF |
| chunk メタデータ | ✅ file, chunk_index, token_estimate | version, ingestion_ts は R2 で追加推奨 |
| rate limiting | ✅ IP ベース 10 req/min | |
| 機密データマスキング | ✅ LiteLLM masking.py で scriptId/OAuth/金額を [MASKED] |
R2 で追加すべき要素
| 要素 | 内容 | RQ-054 根拠 |
|---|---|---|
version フィールド | チャンクメタデータにドキュメントバージョン追加 | Synthesis §5.4 |
ingestion_ts | 埋め込み実行日時を記録 | 同上 |
| retrieval ログ | クエリ・top-k・スコアを Workers Analytics に保存 | 同上(再現可能性) |
| 権限フィルタ | 現時点では不要(docs は全公開)。Jr/業務委託参画後に検討 | RQ-054 RQ14 |
7. 未解決 RQ の再優先度付け
RQ-054 で挙げた派生 RQ を、今回の判定結果を踏まえて再評価:
| RQ (内部番号) | 問い | 判定後の優先度 | 理由 |
|---|---|---|---|
| bizlp fit/misfit 判定 | 完了 | 本ドキュメントで解決 | |
| RQ14 | GAS/Workers 境界の権限フィルタ配置 | P3 に降格 | R1 は docs 全公開、権限不要。Jr 入社後に再評価 |
| RQ11 | 日本語 BM25 トークナイザ | P2 維持 | Intl.Segmenter で暫定動作中だが精度改善余地あり |
| RQ13 | 埋め込みモデル Blue-Green 切替 | P2 維持 | R2 で Incremental 統合時に必要 |
| RQ12 | Agentic RAG 軌跡監査 | P3 に降格 | Agentic RAG 不採用のため当面不要 |
| RQ15 | ColChunk 原典確認 | P3 維持 | マルチモーダル対応は R3 以降 |
8. 結論
現在 R2 (2026-08判定) R3 (2027以降)
─────────────────────────────────────────────────
Advanced RAG → Modular RAG → + GraphRAG補完
(実装済み) + Incremental (簡易版・KV格納)
+ Contextual BM25
+ Late Chunking
ADR-0069 の Phase R1 選択(Advanced RAG)は、RQ-054 の 6 パターン評価と bizlp 4 制約の両面から妥当。次の判断ポイントは 2026-08-25 の 3 ヶ月レビューで、R2 トリガー条件(未回答 >10 件/月、精度 <70%、citation <80%)に基づき Modular RAG 化を判定する。
9. Caveats
- 本判定は 2026-05 時点の bizlp 制約に基づく。Jr 入社(2026-10)・業務委託参画後は C4(単独開発)制約が緩和され、Agentic RAG の再評価が可能になる
Intl.Segmenterの日本語 BM25 精度は未定量評価。RQ11 で kuromoji/Sudachi との比較が必要- R3 の GraphRAG 簡易版は ADR 規模 ~70 件を前提としている。200 件超になった場合は本格的な GraphRAG(Leiden 等)の再検討が必要
- Streaming RAG (Zhu 2025) の定量データは △(単一論文)のまま。Incremental 統合の設計根拠としては十分だが、<15ms レイテンシの再現性は未確認