memory-systems
短期的、長期的、およびグラフベースのメモリアーキテクチャを設計できます
description の原文を見る
Design short-term, long-term, and graph-based memory architectures
SKILL.md 本文
このスキルをいつ使用するか
短期、長期、グラフベースのメモリアーキテクチャを設計する
短期、長期、グラフベースのメモリアーキテクチャを設計する際に、このスキルを使用します。
メモリシステム設計
メモリは、エージェントがセッション間での継続性を保ち、蓄積された知識について推論できるようにする永続化レイヤーを提供します。シンプルなエージェントはコンテキストのみに依存するため、セッション終了時にすべての状態を失います。高度なエージェントは、即座のコンテキスト需要と長期知識の保持のバランスを取る層状メモリアーキテクチャを実装します。ベクトルストアから知識グラフへ、さらに時間的知識グラフへと進化することは、検索と推論を向上させるための構造化メモリへの投資の増加を示しています。
いつこのスキルを有効化するか
以下の場合にこのスキルを有効化します:
- セッション間で永続する必要があるエージェントを構築する
- 会話全体でエンティティの一貫性を保つ必要がある
- 蓄積された知識について推論を実装する
- 過去のインタラクションから学ぶシステムを設計する
- 時間の経過とともに成長する知識ベースを作成する
- 状態変化を追跡する時間対応システムを構築する
コア概念
メモリは即座のコンテキストから永続ストレージへとスペクトラムの上に存在します。一方の極では、コンテキストウィンドウ内の作業メモリはゼロレイテンシアクセスを提供しますが、セッション終了時に消失します。他方の極では、永続ストレージは無期限に永続しますが、コンテキストに入るための検索が必要です。
シンプルなベクトルストアは関係と時間的構造を欠いています。知識グラフは推論のために関係を保持します。時間的知識グラフは時間対応クエリのために妥当期間を追加します。実装の選択は、クエリ複雑性、インフラストラクチャ制約、および精度要件に依存します。
詳細なトピック
メモリアーキテクチャの基礎
コンテキスト-メモリスペクトラム
メモリは即座のコンテキストから永続ストレージへとスペクトラムの上に存在します。一方の極では、コンテキストウィンドウ内の作業メモリはゼロレイテンシアクセスを提供しますが、セッション終了時に消失します。他方の極では、永続ストレージは無期限に永続しますが、コンテキストに入るための検索が必要です。効果的なアーキテクチャはこのスペクトラムに沿って複数のレイヤを使用します。
スペクトラムには、作業メモリ(コンテキストウィンドウ、ゼロレイテンシ、揮発性)、短期メモリ(セッション永続、検索可能、揮発性)、長期メモリ(クロスセッション永続、構造化、半永続的)、および永続メモリ(アーカイブ、クエリ可能、永続的)が含まれます。各レイヤはレイテンシ、容量、および永続性の特性が異なります。
シンプルなベクトルストアが不十分な理由
ベクトルRAGは、クエリとドキュメントを共有埋め込み空間に埋め込むことで意味的検索を提供します。類似度検索は最も意味的に類似したドキュメントを検索します。これはドキュメント検索に適していますが、エージェントメモリの構造が不足しています。
ベクトルストアは関係情報を失います。エージェントが「顧客Xが日付Zに製品Yを購入した」ことを学んだ場合、ベクトルストアは直接質問されたときこの事実を検索できます。しかし「製品Yを購入した顧客は他にどの製品を購入したか?」という質問には答えられません。なぜなら関係構造が保持されていないからです。
ベクトルストアはまた時間的妥当性に苦労しています。事実は時間とともに変わりますが、ベクトルストアは明示的なメタデータとフィルタリングを除いて「現在の事実」と「古い事実」を区別するメカニズムを提供しません。
グラフベースのメモリへの移行
知識グラフはエンティティ間の関係を保持します。分離されたドキュメントチャンクの代わりに、グラフはエンティティAが関係RをエンティティBに持つことを符号化します。これにより、単なる類似性ではなく関係を横断するクエリが可能になります。
時間的知識グラフは事実に妥当期間を追加します。各事実は「有効開始」と、オプションで「有効終了」のタイムスタンプを持ちます。これにより、特定の時点での知識を再構成する時間旅行クエリが可能になります。
ベンチマークパフォーマンス比較
Deep Memory Retrieval(DMR)ベンチマークは、メモリアーキテクチャ全体における具体的なパフォーマンスデータを提供します:
| メモリシステム | DMR精度 | 検索レイテンシ | 注記 |
|---|---|---|---|
| Zep(時間的KG) | 94.8% | 2.58秒 | 最高精度、高速検索 |
| MemGPT | 93.4% | 可変 | 良好な全般パフォーマンス |
| GraphRAG | 約75-85% | 可変 | ベースラインRAG比20-35%改善 |
| ベクトルRAG | 約60-70% | 高速 | 関係構造を失う |
| 再帰的要約 | 35.3% | 低 | 重大な情報喪失 |
Zepはフルコンテキストベースラインと比較して検索レイテンシを90%削減しました(2.58秒対28.9秒(GPT-5.2))。この効率は、コンテキスト履歴全体ではなく関連するサブグラフのみを検索することに由来します。
GraphRAGは複雑な推論タスクにおいてベースラインRAGと比較して約20-35%の精度向上を達成し、コミュニティベースの要約を通じてハルシネーションを最大30%削減します。
メモリレイヤアーキテクチャ
レイヤ1:作業メモリ
作業メモリはコンテキストウィンドウそのものです。現在処理されている情報への即座のアクセスを提供しますが、容量は限定され、セッション終了時に消失します。
作業メモリ使用パターンには、エージェントが中間結果を追跡するスクラッチパッド計算、現在のタスクのための対話を保存する会話履歴、アクティブな目標の進捗を追跡する現在のタスク状態、および現在使用中の情報を保有するアクティブな検索ドキュメントが含まれます。
作業メモリを最適化するには、アクティブな情報のみを保持し、注意から消える前に完了した作業を要約し、重要な情報に対して注意好適位置を使用します。
レイヤ2:短期メモリ
短期メモリは現在のセッション全体で永続しますが、セッション間では永続しません。永続ストレージのレイテンシなしに検索および検索機能を提供します。
一般的な実装には、セッション終了まで永続するセッションスコープのデータベース、指定されたセッションディレクトリ内のファイルシステムストレージ、およびセッションIDでキー設定されたメモリ内キャッシュが含まれます。
短期メモリの使用例には、コンテキストを満たさずにターン間で会話状態を追跡すること、後で必要になる可能性があるツール呼び出しからの中間結果を保存すること、タスクチェックリストと進捗追跡を保持すること、セッション内で検索した情報をキャッシュすることが含まれます。
レイヤ3:長期メモリ
長期メモリはセッション間で無期限に永続します。エージェントが過去のインタラクションから学び、時間とともに知識を構築できるようにします。
長期メモリ実装は、シンプルなキー値ストアから高度なグラフデータベースまで多様です。選択は、モデル化する関係の複雑性、必要なクエリパターン、および受け入れ可能なインフラストラクチャ複雑性に依存します。
長期メモリの使用例には、セッション間でのユーザー好みの学習、時間とともに成長するドメイン知識ベースの構築、関係履歴を持つエンティティレジストリの保持、および再利用可能な成功パターンの保存が含まれます。
レイヤ4:エンティティメモリ
エンティティメモリは特に、一貫性を保つためにエンティティ(人、場所、概念、オブジェクト)に関する情報を追跡します。これにより、複数のインタラクション間でエンティティが認識される初歩的な知識グラフが作成されます。
エンティティメモリは、1つの会話で言及された「John Doe」が別の会話での同じ人物であることを追跡することでエンティティアイデンティティを保持します。時間とともに発見されたエンティティに関する事実を保存することでエンティティプロパティを保持します。エンティティが発見されると追跡されるエンティティ間の関係を保持することでエンティティ関係を保持します。
レイヤ5:時間的知識グラフ
時間的知識グラフは、明示的な妥当期間によってエンティティメモリを拡張します。事実は単に真か偽かではなく、特定の時間範囲で真です。
これは「日付Xにおけるユーザーのアドレスは何か?」といったクエリを、その日付範囲で有効な事実を検索することで可能にします。古い情報が新しいデータと矛盾する際のコンテキスト衝突を防ぎます。エンティティが時間とともにどのように変化したかについての時間的推論を可能にします。
メモリ実装パターン
パターン1:ファイルシステム・アズ・メモリ
ファイルシステム自体がメモリレイヤとして機能します。このパターンはシンプルで、追加のインフラストラクチャを必要とせず、ファイルシステムベースのコンテキストを効果的にする同じジャストインタイムロード機能を有効にします。
実装はファイルシステム階層を組織に使用します。意味を伝える命名規則を使用します。構造化フォーマット(JSON、YAML)で事実を保存します。時間的追跡のためにファイル名またはメタデータのタイムスタンプを使用します。
利点:シンプルさ、透明性、ポータビリティ。 欠点:意味的検索がない、関係追跡がない、手動組織が必要。
パターン2:メタデータ付きベクトルRAG
豊富なメタデータで強化されたベクトルストアは、フィルタリング機能を備えた意味的検索を提供します。
実装は事実またはドキュメントを埋め込み、エンティティタグ、時間的妥当性、ソース帰属、および信頼度スコアを含むメタデータで保存します。クエリは意味的検索とともにメタデータフィルタを含みます。
パターン3:知識グラフ
知識グラフはエンティティと関係を明示的にモデル化します。実装はエンティティタイプと関係タイプを定義し、グラフデータベースまたはプロパティグラフストレージを使用し、一般的なクエリパターンのインデックスを保持します。
パターン4:時間的知識グラフ
時間的知識グラフは事実に妥当期間を追加し、時間旅行クエリおよび古い情報からのコンテキスト衝突を防ぐことを可能にします。
メモリ検索パターン
意味的検索
埋め込み類似度検索を使用して、現在のクエリに意味的に類似したメモリを検索します。
エンティティベース検索
グラフ関係を横断して、特定のエンティティに関連するすべてのメモリを検索します。
時間的検索
妥当期間フィルタを使用して、特定の時刻またはその時間範囲で有効なメモリを検索します。
メモリ統合
メモリは時間とともに蓄積し、無制限の成長を防ぎ、古い情報を削除するために統合が必要です。
統合トリガー
重大なメモリ蓄積後、検索が古い結果を返しすぎた場合、スケジュールに基づいて定期的に、または明示的な統合が要求された場合に統合をトリガーします。
統合プロセス
古い事実を識別し、関連する事実をマージし、妥当期間を更新し、時代遅れの事実をアーカイブまたは削除し、インデックスを再構築します。
実践的ガイダンス
コンテキストとの統合
メモリが有用になるためにはコンテキストシステムと統合する必要があります。ジャストインタイムメモリロードを使用して、必要なときに関連するメモリを検索します。戦略的注入を使用して、メモリを注意好適位置に配置します。
メモリシステム選択
要件に基づいてメモリアーキテクチャを選択します:
- シンプルな永続化需要:ファイルシステムメモリ
- 意味的検索需要:メタデータ付きベクトルRAG
- 関係推論需要:知識グラフ
- 時間的妥当性需要:時間的知識グラフ
例
例1:エンティティ追跡
# セッション間でエンティティを追跡
def remember_entity(entity_id, properties):
memory.store({
"type": "entity",
"id": entity_id,
"properties": properties,
"last_updated": now()
})
def get_entity(entity_id):
return memory.retrieve_entity(entity_id)
例2:時間的クエリ
# ユーザーのアドレスは2024年1月15日時点で何か?
def query_address_at_time(user_id, query_time):
return temporal_graph.query("""
MATCH (user)-[r:LIVES_AT]->(address)
WHERE user.id = $user_id
AND r.valid_from <= $query_time
AND (r.valid_until IS NULL OR r.valid_until > $query_time)
RETURN address
""", {"user_id": user_id, "query_time": query_time})
ガイドライン
- メモリアーキテクチャをクエリ要件に合わせます
- メモリアクセスのための段階的な開示を実装します
- 古い情報の衝突を防ぐために時間的妥当性を使用します
- 無制限の成長を防ぐために定期的にメモリを統合します
- メモリ検索失敗にご配慮で設計します
- 永続的メモリのプライバシー影響を考慮します
- 重要なメモリのバックアップと復旧を実装します
- 時間とともにメモリ成長とパフォーマンスを監視します
統合
このスキルはコンテキスト基礎の上に構築されます。以下に接続します:
- マルチエージェントパターン:エージェント間の共有メモリ
- コンテキスト最適化:メモリベースのコンテキストロード
- 評価:メモリ品質の評価
参考資料
内部参考:
- 実装参照:詳細な実装パターン
このコレクション内の関連スキル:
- コンテキスト基礎:コンテキスト基本
- マルチエージェントパターン:クロスエージェントメモリ
外部リソース:
- グラフデータベースドキュメント(Neo4jなど)
- ベクトルストアドキュメント(Pinecone、Weaviate等)
- 知識グラフと推論に関する研究
スキルメタデータ
作成日:2025-12-20 最終更新日:2025-12-20 著者:Agent Skills for Context Engineering Contributors バージョン:1.0.0
プロダクションフレームワークランドスケープ
| フレームワーク | アーキテクチャ | 最適な用途 | トレードオフ |
|---|---|---|---|
| Mem0 | ベクトルストア+グラフメモリ、プラグイン可能バックエンド | マルチテナントシステム、幅広い統合 | マルチエージェント向けの特化度が低い |
| Zep/Graphiti | 時間的知識グラフ、二時間モデル | 関係モデリング+時間的推論を必要とする企業 | 高度な機能がクラウドロック |
| Letta | 自己編集メモリ、段階的ストレージ(インコンテキスト/コア/アーカイバル) | エージェント完全イントロスペクション、ステートフルサービス | シンプルな使用例には複雑さ |
| Cognee | カスタマイズ可能なECLパイプラインによる多層セマンティックグラフ、カスタマイズ可能なタスク | 進化し学習するエージェントメモリ、マルチホップ推論 | インジェスト時の処理が重い |
| LangMem | LangGraphワークフロー用メモリツール | LangGraphに既に乗っているチーム | LangGraphに密結合 |
| ファイルシステム | 命名規則を持つプレーンファイル | シンプルなエージェント、プロトタイプ | 意味的検索がない、関係がない |
ZepのGraphitiエンジンは、イベントの発生時刻と取り込み時刻の両方を追跡する二時間モデルを持つ3層知識グラフ(エピソード、セマンティックエンティティ、コミュニティサブグラフ)を構築します。Mem0は管理されたインフラストラクチャでプロダクションへの最速パスを提供します。Lettaは「Agent Development Environment」を通じて最も深いエージェント制御を提供します。Cogneeはマルチ層セマンティックグラフを生成します。テキストチャンク和エンティティタイプをノードとして層状化し、詳細な関係エッジを持つ相互接続された知識エンジンを構築します。あらゆるコア部分(取り込み、エンティティ抽出、後処理、検索)はカスタマイズ可能です。
ベンチマークパフォーマンス比較
| システム | DMR精度 | LoCoMo | HotPotQA(マルチホップ) | レイテンシ |
|---|---|---|---|---|
| Cognee | — | — | EM、F1、正確性で最高 | 可変 |
| Zep(時間的KG) | 94.8% | — | 指標全体で中程度 | 2.58秒 |
| Letta(ファイルシステム) | — | 74.0% | — | — |
| Mem0 | — | 68.5% | 指標全体で最低 | — |
| MemGPT | 93.4% | — | — | 可変 |
| GraphRAG | 約75-85% | — | — | 可変 |
| ベクトルRAGベースライン | 約60-70% | — | — | 高速 |
ZepはLongMemEvalで最大18.5%の精度改善を達成しながら、レイテンシを90%削減します。CogneeはHotPotQAマルチホップ推論ベンチマークでMem0、Graphiti、およびLightRAGを上回りました。Exact Match、F1、および人間のような正確性指標全体。LettaのファイルシステムベースエージェントはLoCoMoで74%を達成し、基本的なファイル操作を使用して、特化したメモリツールを上回りました。ツール複雑性よりも信頼できる検索が重要です。単一のベンチマークは決定的ではありません。これらを特定の検索寸法の信号として扱い、ランキングではなく使用します。
メモリレイヤ(決定ポイント)
| レイヤ | 永続性 | 実装 | いつ使用するか |
|---|---|---|---|
| 作業 | コンテキストウィンドウのみ | システムプロンプト内のスクラッチパッド | 常時—注意好適位置で最適化 |
| 短期 | セッションスコープ | ファイルシステム、メモリ内キャッシュ | 中間ツール結果、会話状態 |
| 長期 | クロスセッション | キー値ストア→グラフDB | ユーザー好み、ドメイン知識、エンティティレジストリ |
| エンティティ | クロスセッション | エンティティレジストリ+プロパティ | アイデンティティ保持(「John Doe」=会話間の同一人物) |
| 時間的KG | クロスセッション+履歴 | 妥当期間を持つグラフ | 時間とともに変わる事実、時間旅行クエリ、コンテキスト衝突防止 |
検索戦略
| 戦略 | いつ使用するか | 制限 |
|---|---|---|
| 意味的(埋め込み類似度) | 直接的な事実クエリ | マルチホップ推論で悪化 |
| エンティティベース(グラフ横断) | 「Xについてのすべてを教えて」 | グラフ構造が必要 |
| 時間的(妥当性フィルタ) | 事実が時間とともに変わる | 妥当性メタデータが必要 |
| ハイブリッド(意味的+キーワード+グラフ) | 全般的最高精度 | 最もインフラが必要 |
Zepのハイブリッドアプローチは関連するサブグラフのみを検索することで90%のレイテンシ削減(2.58秒対28.9秒)を達成します。Cogneeは14の検索モードを通じてハイブリッド検索を実装します。各モードは3ストアアーキテクチャ(グラフ、ベクトル、リレーショナル)から異なる戦略を組み合わせ、エージェントが万能アプローチではなくクエリタイプに合った検索戦略を選択できるようにします。
メモリアーキテクチャの選択
シンプルに始めて、検索が失敗した場合のみ複雑さを追加します。 ほとんどのエージェントは初日に時間的知識グラフを必要としません。
- プロトタイプ:ファイルシステムメモリ。タイムスタンプで構造化JSONとして事実を保存します。エージェント動作を検証するのに十分です。
- スケール:意味的検索とマルチテナント分離が必要な場合、Mem0またはメタデータ付きベクトルストアに移動します。
- 複雑な推論:関係横断、時間的妥当性、またはクロスセッション合成が必要な場合、Zep/Graphitiを追加します。Graphitiは一般的な関係を持つ構造化タイをグラフをシンプルで推論しやすく保ちます。Cogneeは詳細な関係エッジを持つより密なマルチ層セマンティックグラフを構築します。時間的二時間モデリング(Graphiti)または豊かな相互接続知識構造(Cognee)の必要性に基づいて選択します。
- 完全な制御:メモリの深いイントロスペクション支援によるエージェント自己管理が必要な場合、LetaまたはCogneeを使用します。
エラー復旧
- 空検索:より広い検索にフォールバック(エンティティフィルタを削除、時間範囲を拡張)。まだ空の場合、ユーザーに説明を促します。
- 古い結果:
valid_untilタイムスタンプをチェックします。ほとんどの結果が期限切れの場合、再試行前に統合をトリガーします。 - 矛盾する事実:最も最近の
valid_fromを持つ事実を優先します。信頼度
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- christophacham
- ライセンス
- MIT
- 最終更新
- 2026/3/3
Source: https://github.com/christophacham/agent-skills-library / ライセンス: MIT