AgentCore Memoryへの取り込み完了と記憶の生成完了を分ける
長期記憶の抽出は非同期で進む。取り込み要求が成功しても、直後の検索に新しい記憶が現れるとは限らない。次の応答に必要な情報は現在の会話や業務DBでも確認できるようにする。
用語
- CreateEvent
- 会話などを短期記憶のイベントとして保存するAPI。
- IngestData
- 短期イベントを保存せず、内容を長期記憶の抽出へ渡すAPI。
- 記憶戦略
- 元の情報から何を抽出・統合して長期記憶にするかを定める設定。
図と例
原文の保持要否を選ぶ → 取り込みを受け付ける → 非同期で記憶を抽出 → 必要な記憶の生成を確認
仮定の例:利用者が配送先の変更を伝えた。記憶の抽出を待って発注するのではなく、変更受付と正式な配送先を注文DBで確認し、現在の会話にも必要な情報を保持する。
実際のサービス・製品では
Amazon Bedrock AgentCore Memory
AWSのIngestData資料は、取り込みが非同期であることと、短期イベントを保存しないことを説明する。CreateEventとの使い分けも明記されている。
資料を読む
解説
原文の保持が必要かでCreateEventとIngestDataを選ぶ。直後のターン、抽出に失敗した場合、記憶がまだ見つからない場合の応答を試す。
AgentCore MemoryのCreateEventは短期記憶のイベントを保存し、設定した記憶戦略に従って長期記憶を生成できる。IngestDataは短期イベントを保存せずに抽出へ内容を渡す方式で、GetEventなどから投入した原文を取得する用途には使えない。抽出結果が必要なら、長期記憶の検索や作成通知などで確認する。要求の再送と同じ事実の重複登録、生成失敗への対処も設計する。記憶戦略が内容を抽出しなかった場合と、処理が失敗した場合を区別する。
トレードオフ
- CreateEventで原文をイベントとして保持する
- 得るもの:会話を後から再取得する用途に使える
- 払うもの:原文の保存期間とアクセス権を管理する
- IngestDataで抽出対象だけを投入する
- 得るもの:短期イベントを保持しない構成を選べる
- 払うもの:イベントAPIから原文を再取得することはできない
さらに学ぶ
チェック
IngestDataの要求が成功した直後、新しい記憶が検索に出ない。適切なのは?
- 長期記憶は同期保存なので欠落と断定する
- 非同期抽出の状態を確認し、直近の業務情報は現在の会話やDBで扱う
- GetEventでIngestDataの原文を必ず取得する
解答と解説
非同期抽出の状態を確認し、直近の業務情報は現在の会話やDBで扱う
取り込み受付と抽出・検索可能化は別段階。IngestDataは短期イベントも保存しないため、その原文をGetEventで必ず取得できるとは扱わない。