--- title: 承認済み報告書の確定所見をナレッジに蓄積し、AIの推測が混ざらないようにした updated: 2026-08-04 --- # 2026-08-04 RAGナレッジの品質担保(Phase 0〜3) 類似事例のナレッジ(pgvector)に **AI の推測がそのまま蓄積されていた**問題と、 **AI が書いた写真コメントを技術者が直した差分が毎回失われていた**問題を直しました。 いずれも「後から直しても取り返しがつかない」性質のため、実運用が始まる前に対応しています。 ## 何を変えたか ### 1. 埋め込みテキストから現場住所を外した `SyncEstimateToRepairCaseJob` が作る `situation_description` に、現場の所在地がそのまま 入っていました。この文章は**全テナント共有のナレッジ**に載り、A社の現場がB社の診断の 参考事例として引かれます。住所は類似性の判断材料にならない一方、個人が特定されうるため除外しました。 構造・築年数は残しています(類似判定に効くため)。 ### 2. 写真コメントの「AIが書いた/人が直した」を記録するようにした `album_photos` に2列を追加しました。 | 列 | 内容 | |---|---| | `ai_draft_memo` | AI が下書きした**原文**。人が `text_memo` を直しても保持 | | `memo_source` | `ai`(AI下書きのまま)/ `human`(人が書いた・直した)/ 未設定 | 調査AIは以前から、空の写真コメントに Phase1 の所見を下書きしていました(手入力済みは上書きしない)。 しかし出所を区別する列が無かったため、**技術者がその下書きを直した瞬間にAIの原文が消えて**いました。 「AI判定 → 技術者が修正」の差分は、業者が普通に使うだけで手に入る**正解データ**です。 これを回収できるようにしました。 **動作は変わりません。**画面の見た目・操作・保存される本文はこれまでどおりです。 ### 3. 事例の出所を記録し、AIの推測をナレッジから外した `repair_cases` に `source`(`human` / `ai` / `seed`)を追加しました。 あわせて、**完了ステータスの判定を `EmbeddingService::vectorizeRepairCase()` の中へ集約**しました。 以前は呼び出し側に分散しており、見積FIX経由の同期処理だけがガードを迂回して、 **まだ修理していない(=AIが推測しただけの)事例**をナレッジに入れていました。 結果として、見積FIX経由の行は `source='ai'` として記録されますが、**埋め込まれません**。 ナレッジに残るのは、修繕が完了した事例と運営が投入した種データだけになります。 ### 4. 承認済み調査報告書の確定所見をナレッジに蓄積するようにした これまで、調査報告書から事例ナレッジへ書く経路は**存在しませんでした**。 その結果、ナレッジに入るのは見積経由の「AIの推測」だけという状態でした。 報告書を**承認した瞬間**に、総合所見(人が確定させた文章)が事例として蓄積されます。 | 蓄積されるもの | 中身 | |---|---| | 職人所見 | **総合所見**(承認された文章そのもの) | | 状況説明 | 建物情報(構造・築年数)+調査箇所・検査方法・原因分類 | - 差し戻して再承認しても、事例は**増えずに上書き**されます - 総合所見が空の報告書は蓄積されません - **現場住所・顧客名は入りません**(3と同じ理由) - 承認そのものは、蓄積に失敗しても止まりません **利用者の操作は何も変わりません。**承認すると裏で蓄積される、というだけです。 ## なぜ急いだか - **写真コメントの差分は遡及できません。**記録し始めた時点からしか集まりません - **ナレッジの汚染は溜まってから直すほうが高くつきます** - 3で「AIの推測を入れない」ようにすると、**そのままでは蓄積されるものがほぼ無くなります**。 4とセットで初めて「正しいものが溜まる」状態になります 一方、**蓄積した事例を実際のAI判定に参照させる工程は入れていません**。 事例が溜まっていない段階で繋いでも効果が無く、正しく効いているかも確認できないためです。 ## AI影響 - [x] **プランのゲート(`App\Services\Entitlement`)を変えた?** → いいえ。 - [x] **ロールのゲート(誰が使えるか)を変えた?** → いいえ。 - [x] **画面名・操作手順が変わった?** → いいえ。 - [x] **画面のURLを変えた?** → いいえ。 - [x] **新しいエラー文言が出るようになった?** → いいえ。 - [x] **文言は出ないが挙動が変わる現象が増えた?** → いいえ。利用者から見た動作は変わりません。 - [x] **用語が増減した?** → いいえ。 ## 番人テスト | テスト | 守るもの | |---|---| | `tests/Feature/Album/PhotoMemoSourceTest.php` | 人が直したら `human` になる/AIの原文が消えない/メモ以外のPATCHでは `human` に化けない | | `tests/Feature/Rag/RepairCaseVectorizeGuardTest.php` | 未完了の事例は埋め込まれない/seed は通る/見積FIX経由は `ai` かつ埋め込まれない/住所が入らない | | `tests/Feature/Rag/SurveyReportToKnowledgeTest.php` | 承認で同期ジョブが飛ぶ/未承認では飛ばない/確定所見が入る/修繕未完了でも埋め込まれる/住所が入らない/再承認で重複しない | いずれもガードをわざと外して**赤くなることを確認済み**です。 全件テスト GREEN。