Overview
エージェントの対話とセッションでは、短期間のメモリと長期のメモリの 2 つの形式の知識が生成されます。短時間のメモリは、オンとマップの通信を保持します。長期メモリには、メモリ抽出を通じて、またはエージェントまたはアプリケーションからの直接書込みとして、そのセッションから抽出された知識が保持されます。 2 つのメモリ層の違いの詳細については、「 エージェント メモリ 」を参照してください。
メモリ抽出パイプライン
Atlas Agent エンジンは、次の 4 つのステージにわたってバックグラウンドで抽出を実行します。
構成されたMongoDBクラスターにやり取りを保存します。プラットフォームに配置されたエージェントの場合、メモリが有効になっている場合、これは自動的に行われます。
プラットフォームが所有するプロセスはこれらの書込みをセッションごとに監視し、設定可能なサイズと時間パラメーターに基づいてそれらをスナップショットにバンドルします。
LVM は、各スナップショットから長期メモリを抽出します。どのメモリタイプを抽出するかは、プロジェクトのメモリ構成で構成できます。
抽出された各メモリをすでに認識している内容と照合します。
レコードとセッション スナップショットを有効にする
プラットフォームは、やり取りが発生するたびに構成されたMongoDBクラスターにやり取りを保存します。プラットフォームに配置されたエージェントの場合、メモリが有効になっている場合、これは自動的に行われます。やり取りのタームは、プラットフォームがそれをセッション スナップショットに昇格させるまで、短期間のメモリに蓄積されます。セッションは、最大メッセージ数に達するか、設定された期間アイドル状態になると、昇格の対象となります。
資格が付与されると、セッションの記録されていないタームがまとめて昇格されます。各スナップショットは、セッションの連続した実行を単一の単位としてカバーします。長いセッションでは、新しいタームが累積するにつれて一連のスナップショットが生成されます。すべての抽出パスは、個々のタームからではなく、スナップショットから読み取ります。
重要
サービス アカウント メモリ ID
サービス アカウントが 配置されたエージェントを呼び出す場合、Atlas Agent Engine はサービス アカウントの ID をランタイムメモリの ID として使用します。プラットフォームは、呼び出しリクエストまたは agentengine invoke --user-id フラグが提供するエンドユーザーの user_id 値を無視します。
この解決済み ID は、自動変換、記録、抽出、統合、app.memory 操作で使用されます。その結果、同じサービス アカウントを認証する呼び出しは 1 つのメモリ ユーザー スコープを共有します。
この制限は、サービス アカウントが呼び出す配置されたエージェントにのみ適用されます。スタンドアロンの、プロジェクトスコープのメモリ サービスは影響を受けません。このサービスは、呼び出し元からの明示的な user_id と session_id 値を引き続き受け入れます。
エンドユーザーごとにメモリを分離するには、アプリケーションからスタンドアロンのメモリサービスを呼び出し、各呼び出しに明示的なuser_id とsession_id 値を渡します。詳しくは、「 スタンドアロン メモリ サービスの使用 」を参照してください。
非同期抽出
タームの記録は、短期間のメモリへの高速書込み (write) です。プラットフォームは、その書き込み中に抽出を実行しません。
プラットフォームが所有するバックグラウンド プロセスは非同期で実行され、セッションが昇格資格をチェックし、アイドル セッションが定期的にスキャンされます。バックグラウンド ワーカーがこの作業を選択し、新しく昇格された各スナップショットに対して有効になっている抽出ハンドラーを実行します。
エージェントはこの作業を待つことはありません。ある対話で学習された知識は、現在の対話の次のローテーションではなく、次のセッションで利用可能になります。最近の方向の選択は、短期間のメモリで引き続き利用可能です。抽出された長期知識は、抽出が完了すると表示されます。
LM 抽出パス
抽出はスナップショットを 4 種類の長期メモリに分割します。スナップショットが準備されると、有効になっている各メモリ型の抽出ハンドラーは個別にスナップショットを読み取ります。ハンドラーは、タームをあるタイプに属するものとして別のタイプに属するものとして分類することはありません。代わりに、スナップショット内の特定の種類の知識を検索するよう LM に要求します。各ハンドラーは異なる結果を抽出して保存します。
セマンティック: プラットフォームがすでに知っていることと調整された結果
エポック: イベントとその参加者。それぞれが発生した状況を要約したアカウントで保存されます。
手順: セッションで示された手順を再利用可能な
分類: ドメインタームとその定義
抽出されたメモリは抽出時に埋め込みを受け取ります。これにより、プラットフォームは後でのやり取りのセマンティック検索でそれらを見つけられるようになります。埋め込みは、メモリの意味を数値で表現したものです。セマンティック抽出ハンドラーは埋め込みを使用して、新しいファクトをすでに既知のことと比較します。
各長期メモリ型の詳細については、「 長期メモリ型 」を参照してください。
メモリの調整
すべての抽出ハンドラーは、プラットフォームがすでに認識しているデータに対して新しいメモリを調整するため、情報が繰り返されたり、情報がアップデートされても、重複したレコードや競合するレコードは作成されません。各ハンドラーは、抽出されたメモリに 3 つのアクションのいずれかを適用します。
ADD: 抽出されたメモリは呼び出し元のスコープ内の既存のレコードと一致しないため、ハンドラーは新しいドキュメントを作成します。UPDATE: 抽出されたメモリは、新しい自宅フィールドを報告するユーザーなど、既存のレコードを上書きします。ハンドラーは新しいドキュメントバージョンを書き込み、前のバージョンをスーパー秒としてマークします。REINFORCE: 抽出されたメモリは、既存のレコードを復元します。ハンドラーは重複を作成しません。代わりに、既存のレコードが強化されます。例の場合、セマンティック ファクターの強化数を増加させたり、新しいドキュメントを既存のタームにマージしたりします。
調整により、各メモリがどのように学習され、強化されたかという履歴が保持しながら、長期メモリが最新の状態に維持されます。
抽出タイプの構成
プラットフォームが自動的に抽出する長期メモリタイプは、プロジェクトの project-config.yamlファイルで構成できます。
memory: extraction: enabled: - semantic - episodic - procedural - taxonomic
プラットフォームは、enabled リストを MONGOMEM_ENABLED_EXTRACTIONS 環境変数としてメモリサーバーに渡します。リストからタイプを削除すると、その自動バックグラウンド抽出が無効になるだけです。アプリケーションは、ソフトウェア開発キット(SDK)を介してそのメモリ型を直接保存することもできます。
リストを編集した後、agentengine memory configure を実行して構成をアップロードし、agentengine memory apply --wait を実行して構成を配信し、メモリサーバーを再起動して、準備ができていると報告されるまで待機します。agentengine memory status を実行して、変更が有効になったことを確認します。完全な構成ワークフローについては、「 メモリの構成 」を参照してください。
メモリサーバーでは、どの抽出タイプが有効になっているかに関係なく、埋め込みプロバイダーと LM プロバイダー キーの両方が準備できている必要があります。プロジェクトに LM プロバイダーキーが設定されていない場合、メモリサーバーが起動する前にプラットフォームはデプロイを失敗します。これらの前提条件の詳細については、 エージェントにメモリを追加する の「前提条件」セクションを参照してください。
次のステップ
抽出の仕組みを理解したら、次のガイドを参照できます。
エージェントのメモリを有効にするには、「 エージェントへのメモリの追加 」を参照してください。
MCPクライアントからのやり取りをレコードて呼び出すには、「 MCP クライアントをメモリに接続 」を参照してください。