SERAC(Semi-Parametric Editing with a Retrieval-Augmented Counterfactual Model)とは、ベースモデルの重みを変更せず、外部メモリに修正知識を格納し推論時にリトリーバーで参照する Memory-Augmented 型の知識編集手法である。編集数に上限がなく局所性が非常に高い。
SERAC は 2022年に Eric Mitchell ら(Stanford、MEND と同著者)が提案した Memory-Augmented 型の知識編集手法である。ROME や MEMIT がモデルの重みを直接書き換えるのに対し、SERAC は ベースモデルの重みを一切変更せず、編集された知識を外部メモリ(Counterfactual Memory)に格納し、推論時にリトリーバーで該当するかを判定して応答を切り替える。
SERAC のアーキテクチャは3つのコンポーネントで構成される:
推論時のフロー:
| コンポーネント | 役割 | モデルサイズ | レイテンシ |
|---|---|---|---|
| Scope Classifier | 編集対象判定 | 125M (DistilBERT) | 3ms |
| Counterfactual Model | 修正応答生成 | 774M (GPT-2 Medium) | 15ms |
| Explicit Memory | 編集知識保存 | N/A (KVストア) | 5ms |
| 合計オーバーヘッド | 約 20ms |
| 指標 | SERAC | ROME | MEMIT | MEND |
|---|---|---|---|---|
| 重みの変更 | なし | あり | あり | あり |
| 局所性 | 0.99+ | 0.953 | 0.961 | 0.872 |
| 編集数上限 | 無制限 | 1件/回 | 10,000件/回 | 1件/回 |
| 推論遅延追加 | +20ms | なし | なし | なし |
| 編集取消し | 即座 | 困難 | 困難 | 困難 |
| メモリ追加 | 必要 | 不要 | 不要 | 不要 |
本番環境のモデル重みを一切変更せずに知識を更新できるため、デプロイリスクがゼロ。金融や医療など、モデル変更の承認プロセスが厳格な業界で有効。
テナントごとに異なる Explicit Memory を持たせることで、同一ベースモデルで顧客ごとにカスタマイズされた応答を提供。SaaS 型 LLM サービスに最適。
新しい知識を一部ユーザーの Memory にだけ追加し、品質を確認してから全体展開。A/B テストとの親和性が高い。
特定地域の法規制に応じた知識の出し分け。EU 向けと US 向けで異なる Memory を参照。
Q1: SERAC は RAG と何が違いますか? A: RAG は外部ドキュメントを検索して回答を生成するが、SERAC は「モデルの既存知識を修正する」目的に特化。RAG は知識の追加、SERAC は知識の修正という使い分け。実装面では、SERAC の Scope Classifier がクエリルーティングを担当し、RAG のリトリーバーとは異なる学習目的を持つ。
Q2: メモリに何万件も入れたら遅くならないですか? A: 1,000件程度までは線形探索で実用的(+5ms)。それ以上では FAISS や Qdrant 等の ANN インデックスを使えば 10万件でも +10ms 以内に収まる。100万件規模ではシャーディングが必要。
Q3: ベースモデルを更新(アップグレード)しても使えますか? A: Scope Classifier と Counterfactual Model の再学習が必要になるが、Explicit Memory のデータ自体は再利用可能。モデル更新のたびに 1-2時間の再学習コストが発生する。