Share
Embed
育つMemoryと残る汚染 - 家族エージェント3ヶ月で見えた責務の境界
LINE × Bedrock AgentCore で作った家族向けエージェントを3ヶ月運用したところ、
SEMANTIC と USER_PREFERENCE の2戦略で266件の長期記憶が積み上がりました。
そして同じ運用の中で、agent 自身の誤回答が会話履歴経由で
Memory に「事実」として固定化される現象も見つかりました。
ユーザーが訂正しても、汚染されたレコードは残り続けます。
本セッションでは、CloudWatch ログと Memory レコードの実物を辿りながら、
長期記憶が「育つ」プロセスと「汚染が残る」プロセスを並べて見ていきます。
Memory に何を覚えさせ、何を覚えさせないか。
AgentCore Memory の責務の境界をお持ち帰りいただければと思います。
Yusuke Shimizu
May 28, 2026
Transcript
27 slides
-
1‹#› 育つMemory と残る汚染 NRI ネットコム TECH AND DESIGN STUDY #100
2026 年05 月28 ⽇ 志水 友輔 NRI ネットコム株式会社 ユースケのユースケース Case8 家族エージェント3 ヶ月で⾒えた責務の境界 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 志水
友輔 ( しみず ゆうすけ) NRI ネットコム株式会社 / Cloud Architect PoC ・アーキテクト・技術広報 AWS Ambassador(2023-25) Amazon Bedrock AgentCore/CDK/ カメラ/ つけ麺 息子からのなぜなぜ攻撃で疲弊中 #nncstudy Blog: 3 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 3
ヶ月の運⽤記録 #nncstudy 4 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 何を作ったか
― 家族エージェントの構成 #nncstudy Runtime Memory LINE をインターフェースとした、家族向けの情報ハブエージェント プリントを撮って送り、持ち物や予定をLINE で聞く 記憶機構: AgentCore Memory を活用 独自機能: 画像分析機能(プリントやお知らせを OCR + 構造化) 5 Lambda Bedrock AgentCore Webhook -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. AgentCore
Memory :2 戦略で始めた理由 #nncstudy 6 戦略 抽出ターゲット 採用判断 Semantic 事実(Facts ) 採用:家族情報は「事実」が中心 User Preference 嗜好(Preferences ) 採用:好みの把握も有用 Summary 会話要約 見送り:セッション超えの要約は不要 Episodic イベント・教訓 見送り:タスク実行記録は不要 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 採用しなかった選択肢(Knowledge
Base ) #nncstudy 7 構成 特徴(役割) 本構成での採用 AgentCore Memory 単独 対話からの個人化 (ユーザーとは誰か、過去に何があったか) ★ 採用(現状) Memory + KB 並走 個人化 + 原本ベースの事実知識 (信頼できるソースは何か) 見送り KB 単独 (RAG) 対話からの動的抽出を持たない、 静的なナレッジ検索 見送り 公式推奨は Memory と Knowledge Base の「並走」だが、今回は Memory 単独構成を選択 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. Memory
の動作モデル (Extraction Job) #nncstudy 8 Memory の抽出処理は LLM ベースで行われます。 「発話とレコードが1 対1 」 ではありません。 1 つのJob が読んだ会話セットから、抽出LLM が複数の事実を並列に⽣成 全て同じタイムスタンプ 会話セット USER + ASSISTANT 抽出LLM ・命令(指⽰書) ・データ 事実 N 件 (0 件もあり) -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 短期記憶(Events)
と 長期記憶(Records) #nncstudy 9 Events ( 短期記憶) 1 発話 = 1 event 会話の生ログ。コンテキストウィン ドウに直接入る情報 90 日で期限切れ 例:user 「土曜の英会話教室B の持ち物 は?」 agent 「プリントとお茶と... 」 Memory Records ( 長期記憶) 1 事実 = 1 record Extraction Job の出力。構造化されベ クトル化された情報 明示的に削除されるまで永続 例: 「英会話教室B に通っている」 「英会話教室B では給食がある」 Events も Memory Extraction Job の入力になる -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 3
ヶ月で266 件 ― Memory はちゃんと育つ 3 ヶ月で 266 件 の長期記憶が蓄積 5 actors / 50 sessions / 266 records メイン Actor (C998ff8d4...) に偏在:facts 196 件(76% ) Caffc Actor :39 件 preferences は少なめ(嗜好は事実より抽出されにくい) Memory は自動で育つ ― AgentCore の良いところ #nncstudy 10 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 5/2
の会話タイムライン Step 0 (5/1 10:12 ) :幼稚園A 「春のえんそく」お知らせ画像分析(給食袋言 及あり) Step 1 (5/2 09:54:24 ) :user 「毎週土曜の 英会話教室B いくときの持ち物教 えて」← 給食には触れていない Step 2 (5/2 09:54:33 ) :agent 誤回答「給食がある日は追加で:コップ、ス プーン・フォーク入れ」 Step 3 (自動) :Memory Extraction Job が agent 出⼒を「事実」として保存 Step 4 (後刻) :次質問時、汚染レコードを参照して再び誤回答 Step 5 (10:18:17 ) :user 「英会話教室B には給食ない」と訂正 Step 6 (10:18:20 ) :agent 「完全に私の混乱でした」と謝罪 #nncstudy 12 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 自⼰汚染とは
3 点突合(assistant 発話由来の立証) user 発話: 「毎週土曜の英会話教室B ⾏くときの持ち物教えて」 assistant 発話: 「給食がある日は追加で:コップ、スプーン・フォーク 入れ」 Memory レコード: 「英会話教室B では給食が提供される日がある」 「給食」は user 発話に存在せず、assistant 発話と Memory にのみ存在 訂正後(10:18 )も汚染レコードは残存 / 3 日経過 / 16 ⽇経過時点でも⽣存 定義:自⼰汚染 / self-contamination agent が混同して出した誤回答が、会話履歴経由で長期記憶に「事実」とし て固定化される現象 LLM の指示違反ではなく、データパイプライン仕様に起因する構造的現象 言い換え:ハルシネーションの永続化 #nncstudy 13 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 訂正しても残る
訂正発話は既存を Update せず、別レコードとして 並列追加 される 既存の汚染レコードはそのまま残る → 訂正したのに、汚染①は消えない #nncstudy 14 時刻 内容 分類 5/2 09:54:33 英会話教室B に通っている 正常 5/2 09:54:33 英会話教室B では給食日あり 汚染① 5/2 10:18:20 英会話教室B がある日は給食がない 訂正(並列追加) -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 10
日後、嘘は育っていた 5/12 に 合成汚染 が生成(5/2 汚染① + 幼稚園A コップ持参情報を合体) 16 日経過、4 レコード全て⽣存 冒頭の266 件、実は嘘も育っていた #nncstudy 15 時刻 内容 分類 5/2 09:54:33 英会話教室B に通っている 正常 5/2 09:54:33 英会話教室B では給食日あり 汚染① 5/2 10:18:20 英会話教室B がある日は給食がない 訂正(並列追加) 5/12 08:17:32 英会話教室B 給食日にコップ持参 拡大汚染 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 矛盾の並置
― Memory の仕様 vs 実機で起きたこと #nncstudy 16 Memory の仕様・公式の言い分 実機で起きていること Extract ONLY from user messages agent の誤回答が事実として保存された 学習して育つ 訂正しても並列で残った Prioritize recency 16 日後にむしろ強化された -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 戦略間対比
― facts 4 件 vs preferences 0 件 同じ Memory リソース・同じ Actor ・同じ会話を入力 汚染レコード:SEMANTIC (facts ) 4 件 / USER_PREFERENCE (preferences ) 0 件 「USER_PREFERENCE は安全」と短絡しない 両戦略の システムプロンプトは同じ:user 発話のみ抽出と命令 両戦略とも 公式の仕様説明は同じ:実装は USER と ASSISTANT 両方を 処理 構造的弱点は両戦略共通 差の正体 = 内容形式のミスマッチ SEMANTIC : 「事実」抽出 → 「給食日あり」は事実形でターゲット⼀致 USER_PREFERENCE : 「嗜好」抽出 → 事実形ではない #nncstudy 17 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. なぜ起きるか①
― 発生のメカニズム 原因1 :発生(段階①)= 公式ドキュメント自体が⽭盾している LLM への命令: 「Extract ONLY from the user messages 」 公式の仕様説明: 「processes only USER and ASSISTANT role messages 」 LLM の入力データに ASSISTANT が混ざる以上、命令で完全には縛れな い 5/2 の汚染はバグではなく 仕様通りの挙動 #nncstudy 18 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. なぜ起きるか②
― 残存のメカニズム + 結論 原因2 :残存(段階③)= SEMANTIC Consolidation は recency 優先ではな い 「Prioritizing recency 」は USER_PREFERENCE 文脈 SEMANTIC Consolidation : 「New fact contradicts existing → use AddMemory 」 訂正発話が来ても Update されず並列追加 → 5/12 のように 増えていく 結論:責務は Memory の外側に置くしかない DeleteMemoryRecord API はあるが、いつ消すかの判断は AgentCore の責務外 プロンプト / パイプライン両面で完全制御は不可能 訂正検知レイヤを自前で持つしかない #nncstudy 19 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 全戦略の構造的弱点(EPISODIC
/ SUMMARY 含む) 戦略によって汚染の形態が変わる SEMANTIC + USER_PREFERENCE は最も汚染が固定化しやすい組み合わせ #nncstudy 20 戦略 発生 残存 構造的特徴 SEMANTIC 高 高 5/2 観測ケース USER_PREFERENCE 中 高 推測 preference が残留 EPISODIC 高 高 reasoning / tool が抽出対象、誤教訓が永続化 SUMMARY 中 中 session スコープが防壁、誤要約は残る -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 軽度の歪み3
つ(⾃⼰汚染との対比) ①〜③は「気づけば直る」軽度の歪み ④は構造的要因が別物(プロンプト命令で縛れない) #nncstudy 21 パターン 深刻度 直し方 ① 同一エンティティの呼称揺れ 中 気づけば修正可、検索精度低下 ② 同一スケジュールの重複・上書き不在 中 気づけば修正可、古い情報を返す ③ 時期相対表現の意味劣化 中 気づけば修正可、時系列誤判断 ④ 自⼰汚染 高 気づいても直らない / 時間とともに育つ -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 3
層モデル(内側 / Events / 外側)+ Knowledge Base 並走 内側:AgentCore Memory (長期記憶、事実抽出、ベクトル検索) Events 層:短期記憶(生会話ログ、Extraction Job の入⼒) 外側:訂正検知 / 削除ロジック(顧客側で実装) KB 並走:内側を補完する別アーキテクチャ AgentCore Memory (個人化)+ Bedrock KB / RAG (原本ベースの事実知 識) 原本ベースの retrieval で誤情報の検出余地が増える 家族エージェントは現状未採用 → 対処策の選択肢として再評価 #nncstudy 23 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 対処策の全体像
#nncstudy 24 対処策 レイヤ 効果 appendToPrompt 内側のプロンプト調整 △ デフォルトに同じ命令ありで効果 限定 Self-managed strategy 内側の抽出ロジック自前化 ◎ 完全制御可、ただし工数⼤ Knowledge Base 並走 内側を補完する別アーキ ◦ 原本ベースの retrieval で検出余地 訂正検知 Lambda 外側 ◦ user の「違う」を検知して該当レ コード削除 DeleteMemoryRecord 外側 ◦ 手動 or ⾃動で汚染レコード削除 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. 家族=最小の組織
― 渡せた∕渡せなかった 渡せたこと(agent / システム側に委ねて良かった) お知らせプリントの画像分析・構造化 持ち物リストの整理・チェック 過去の質問・回答の参照(コンテキスト維持) インタフェース選択(LINE に置いた判断) 渡せなかったこと(人が責任を持つべきだった) 「給食日があるか」のような事実の確証 訂正の判断(user が「違う」と気づかなければ汚染は残り続けた) メモリの長期メンテナンス(古い汚染レコードの削除判断) #nncstudy 25 -
Copyright (C ) NRI Netcom, Ltd. All rights reserved. #nncstudy
Memory は何を覚えるべきか ― ではなく 何を覚えさせないか あなたのエージェント、答えを覚えていますか? それとも、嘘を覚えていますか? 26