Agent Memory は、アプリケーションに永続的な AI メモリを提供するマネージドサービスです。生の会話を自動で構造化された知識に変換し、必要なときに適切なコンテキストを取り出します。
Agent Memory は、抽出したメモリを次の 4 種類のいずれかに分類します。
- Facts(事実) — 人、プロジェクト、ツールに関する安定した知識です。好み、身元、関係、目標などが含まれます。Facts は supersession(上書き)によって時間とともに更新されます。同じトピックの新しい Facts が古い版を置き換えると、古い版は保持されますが、
recall()の結果には最新版が表示されます。 - Events(イベント) — ある時点に紐づく完了した行動です。デプロイ、決定、マイルストーン、観察などです。Events は蓄積され、互いに競合しません。
- Instructions(手順) — 再利用できる手続き、ワークフロー、規約です。Facts と同様、更新時は supersession に対応します。
- Tasks(タスク) — 進行中の調査やフォローアップなど、セッション単位の短命な項目です。セッション終了後は優先度が下がります。
ingest() を呼ぶと、Agent Memory は会話を次の段階で処理します。
-
抽出 — AI が会話を読み、記憶すべき独立した項目を特定します。各項目は、明確な要約と補足内容を持つ、単体で成立する知識です。
-
分類 — 抽出した各項目をメモリの種類(Fact、Event、Instruction、Task)に分類し、あとで取り出すための topic key、キーワード、検索クエリを割り当てます。
-
重複排除 — 現在のバッチと、すでに保存されているメモリの両方に対して重複を確認します。同じ topic key を持つ Facts と Instructions は、重複を作らず、古い版を上書きします。
-
保存 — メモリを全文検索インデックス付きで永続ストレージに書き込みます。Task 以外のメモリは、セマンティック検索用のベクトルとしても埋め込みます。
生の会話メッセージは、抽出したメモリと並べて原文のまま保存されます。全文検索用に、元の書き起こしが残ります。
recall() を呼ぶと、Agent Memory は複数の取り出し戦略を並行して実行します。
-
クエリ分析 — AI がクエリを分析し、最適な取り出し方法を決めます。キーワード、topic key、セマンティック検索用ベクトルを生成します。
-
並行取り出し — キーワードインデックス、topic key の照合、セマンティックベクトルインデックス、生の会話メッセージを同時に検索します。
-
スコアリングとランキング — すべてのソースからの結果を結合し、取り出し方法の多様性を保ちながら、もっとも関連するメモリを上位にします。
-
合成 — AI が上位のメモリから自然言語の回答を生成します。回答は、実際に保存されている内容に基づきます。
クエリに一致するメモリがない場合、recall() は存在しない内容を生成せず、空の回答を返します。
Agent Memory は、同じ内容を何度取り込んでも安全なように設計されています。
-
メッセージはコンテンツアドレス方式です。 各メッセージには、内容とセッションから導出した決定的な ID が付きます。同じメッセージを 2 回送っても、重複は作られません。
-
セッションは決定的です。
sessionIdを渡さない場合、メッセージ内容から導出します。同じ会話は、常に同じセッションに対応します。 -
Facts と Instructions は更新されます。 新しいメモリが既存メモリと同じ topic key を共有する場合(例: 「editor preference」)、古いメモリは superseded(上書き済み)とマークされます。
recall()の結果には最新版が表示されますが、履歴全体は保持されます。