CSのTips一覧

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の要求が成功した直後、新しい記憶が検索に出ない。適切なのは?

  1. 長期記憶は同期保存なので欠落と断定する
  2. 非同期抽出の状態を確認し、直近の業務情報は現在の会話やDBで扱う
  3. GetEventでIngestDataの原文を必ず取得する
解答と解説

非同期抽出の状態を確認し、直近の業務情報は現在の会話やDBで扱う

取り込み受付と抽出・検索可能化は別段階。IngestDataは短期イベントも保存しないため、その原文をGetEventで必ず取得できるとは扱わない。