
2026/04/27 5:58
「Show HN:生体的減衰を採用した AI メモリシステム(52% の回忆率)」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
YourMemory は、現在の AI アシスタントの重大な限界である、セッションを超えた文脈と好みに沿う維持不可能性を解決します。通常のツールが各会話をリセットするか、Zep Cloud などの基本的なソリューションとは異なり、YourMemory は人間の認知を模倣した永続的な記憶層を実装しています。エビングハウスの忘却曲線に基づくこの仕組みでは、重要な情報はアクセス可能に保たれ、陳腐なデータは自然に薄れます。
LoCoMo-10 データセット(QA 対 1,534)で評価されたところ、YourMemory は Recall@5 で 59% を達成し、Zep Cloud の 28% と比べてこのベンチマークでは約 2 倍のリコール性能を誇っています。システムは毎日 24 時間ごとに強度スコアが 0.05 未満の記憶を自動的に剪定し、グラフのどの近傍ノードも閾値を超えている場合は減衰した記憶も生存させ続けます。これによりグラフ構造内の空間効率性と関連性の両方を保証しています。
YourMemory のハイブリッド検索機能は、ベクトル検索(ラウンド 1)とグラフベースの BFS 拡張(ラウンド 2)を組み合わせ、辞書語のみに基づく手法で見落とした文脈を表面化させます。Python 3.11–3.14 をサポートし、インフラストラクチャはゼロから始動可能です。Docker または外部データベースの設定は不要で、必要な spaCy モデルを自動的にダウンロードし、
~/.yourmemory/memories.duckdb にローカルの DuckDB データベースを初期化します。
ソフトウェアは stdio MCP サーバーとして動作し、Claude Code、Claude Desktop、Cline、Cursor、OpenCode、Windsurf、Continue、Zed といった広範囲のコーディングアシスタントと互換性があります。API キーを介して複数の AI エージェントが安全に孤立した私的記憶を共有できます。CC-BY-NC-4.0 ライセンス(著作権 © 2026 Sachit Misra)の下提供されており、個人利用・学術利用は無料ですが、商業利用には書面による合意が必要です。
本文
人工知能エージェントのための永続的メモリ
人間の記憶の仕組みに基づいた科学技術を応用しています。
問題点
現在のセッションごとに、あなたの AI アシスタントはゼロからスタートします。同じ質問を繰り返し、好みを忘れ、技術スタックをやり直す必要があります。会話の間には「メモリアル」(継続する情報保存)がありませんでした。
YourMemory はこの課題を解決します。 YourMemory は、AI エージェントに人間の記憶の働きと同じように機能する永続的なメモリ層を提供します。重要なことは定着し、忘れられたことは淡い色合いになり、陳腐な事実は自動的に更新されます。インストールには 2 つのコマンドだけで済みます。外部インフラストラクチャも不要です。
どれほど効果的ですか?
LoCoMo-10 でテスト済み — 1,534 の質問応答ペアを、10 つのマルチセッション会話を跨いで検証しました。
| システム | Recall@5 | 95% CI (信頼区間) |
|---|---|---|
| YourMemory (BM25 + ベクトル + グラフ + 劣化機構) | 59% | 56–61% |
| Zep Cloud | 28% | 26–30% |
LoCoMo-10 ベンチマークにおいて、Zep Cloud よりも 2 倍の Recall(想起率)を達成。 詳細な手法とサンプルごとの内訳は
を参照してください。 レビュー記事:「Ebbinghaus の忘却曲線を用いた AI エージェント向けメモリ劣化機構の開発」BENCHMARKS.md
デモ
クイックスタート
Python 3.11、3.12、3.13、および 3.14 をサポートします。Docker も不要で、データベースの設定も外部サービスも不要です。
ステップ 1 — インストール
ステップ 2 — セットアップを実行(一度のみ)
spaCy の言語モデルをダウンロードし、
~/.yourmemory/memories.duckdb にローカルデータベースを初期化します。
ステップ 3 — コンフィグパスを取得
フルな実行可能ファイルのパスと、そのまま貼り付け可能な設定ブロックを表示します。コピーしておいてください。
ステップ 4 — AI クライアントに統合する
Claude Code
~/.claude/settings.json に追加:
{ "mcpServers": { "yourmemory": { "command": "yourmemory" } } }
更新(Cmd+Shift+P → Developer: Reload Window)を実行します。
Claude Desktop macOS の場合は
~/Library/Application Support/Claude/claude_desktop_config.json に、Windows の場合は %APPDATA%\Claude\claude_desktop_config.json に追加:
{ "mcpServers": { "yourmemory": { "command": "yourmemory" } } }
Claude Desktop を再起動します。
Cline(Visual Studio Code) VS Code はシェル環境変数の PATH を継承しないため、まず
yourmemory-path コマンドを実行してフルな実行可能ファイルのパスを取得してください。
Cline → MCP サーバー → MCP 設定を編集:
{ "mcpServers": { "yourmemory": { "command": "/full/path/to/yourmemory", "args": [], "env": { "YOURMEMORY_USER": "あなたの名前" } } } }
保存後に Cline を再起動します。
Cursor
~/.cursor/mcp.json に追加:
{ "mcpServers": { "yourmemory": { "command": "/full/path/to/yourmemory", "args": [], "env": { "YOURMEMORY_USER": "あなたの名前" } } } }
OpenCode
~/.config/opencode/config.json に追加:
{ "mcp": { "yourmemory": { "type": "local", "command": ["yourmemory"], "environment": { "YOURMEMORY_USER": "あなたの名前" } } } }
その後、メモリワークフローの指示を追加します:
cp sample_CLAUDE.md ~/.config/opencode/instructions.md
OpenCode を再起動します。
その他の任意の MCP 互換クライアント YourMemory は標準的な stdio MCP サーバーです。Windsurf、Continue、Zed および MCP をサポートするあらゆるクライアントと動作します。シェル環境の PATH が継承されない場合は、
yourmemory-path から得られたフルなパスを使用してください。
ステップ 5 — プロジェクトにメモリ指示を追加
cp sample_CLAUDE.md CLAUDE.md
CLAUDE.md を編集し、「YOUR_NAME」と「YOUR_USER_ID」を置換します。Claude は、今後は各タスクに対して自動的に「想起 → 保存 → 更新」のワークフローに従います。
MCP ツール
3 つのツールが用意されています。「CLAUDE.md」が配置されると、Claude が自動的にこれらを呼び出します。
| ツール | 実行タイミング | 機能 |
|---|---|---|
| 各タスクの開始時 | 類似度 × 強度に基づいて関連するメモリを提示 |
| 新しいことを学んだ後 | バイオロジカルな劣化機構を用いて埋め込みおよび保存 |
| メモリが陳腐化した時 | 再埋め込みおよび置き換え |
# セッションの例
store_memory("Sachit prefers tabs over spaces in Python", importance=0.9, category="fact") # 次のセッション — もう一度指示されなくても: recall_memory("Python formatting") # → {"content": "Sachit prefers tabs over spaces in Python", "strength": 0.87}
カテゴリはメモリの衰えの速さを制御します。
| カテゴリ | 想起なしでの生存期間 | 使用例 |
|---|---|---|
| strategy | 〜38 日 | 成功したパターン |
| fact | 〜24 日 | 好み、アイデンティティ |
| assumption | 〜19 日 | 推測されたコンテキスト |
| failure | 〜11 日 | エラー、環境固有の問題 |
仕組み
Ebbinghaus の忘却曲線
メモリ強度は指数関数的に低下しますが、重要度と想起頻度はその低下を緩やかにします:
effective_λ = base_λ × (1 - importance × 0.8)strength = importance × e^(−effective_λ × days) × (1 + recall_count × 0.2)score = cosine_similarity × strength
頻繁に想起されるメモリは衰退を避け、強度が 0.05 未満のメモリは毎日自動的に剪定されます。
ハイブリッド検索:ベクトル + グラフ
検索は 2 段階実行され、語彙ベースの検索で見落としがちな関連コンテキストを提示します:
- Round 1 — ベクトル検索: すべてのメモリに対する余弦類似度計算を行い、閾値を超えた上位 k 件を返します。
- Round 2 — グラフ展開: Round 1 の種となるノードからの BFS(幅優先探索)により、語彙は共有しませんがコンテキストを共有するメモリを提示します(意味論的なエッジ:余弦類似度 ≥ 0.4 を通じて接続)。
例:
recall("Python backend") # Round 1 → [1] Python/MongoDB (sim=0.61) # [2] DuckDB/spaCy (sim=0.19) # Round 2 → [5] Docker/Kubernetes (sim=0.29 — カットオフ未満ですが、グラフ経由で提示)
チェーン認識型の剪定: グラフの近傍ノードが閾値を超えていれば、衰退しているメモリも生存させます。関連するメモリは一緒に「加齢」します(共進化します)。
マルチエージェントメモリ
複数のエージェントが同一の YourMemory インスタンスを共有することができ、各々は孤立したプライベートメモリを持ちつつ、共有コンテキストへのアクセスは制御可能です。
from src.services.api_keys import register_agent result = register_agent( agent_id="coding-agent", user_id="sachit", can_read=["shared", "private"], can_write=["shared", "private"], ) # → result["api_key"] — ym_xxxx 形式、一度だけ表示されます
エージェントとして認証するには、MCP コールに
api_key を渡します:
store_memory(content="ステージング環境では自己署名証明書を使用しています — SSL verify をスキップ", importance=0.7, category="failure", api_key="ym_xxxx", visibility="private") recall_memory(query="staging SSL", api_key="ym_xxxx") # → 共有メモリと、このエージェントのプライベートメモリを返します # → 他のエージェントは共有メモリのみにアクセスできます
スタック(技術構成)
| コンポーネント | 役割 |
|---|---|
| DuckDB | デフォルトベクトル DB — 零セットアップ、ネイティブ余弦類似度 |
| NetworkX | デフォルトグラフバックエンド — に保存 |
| sentence-transformers | ローカル埋め込み(all-mpnet-base-v2, 768 ディメンション) |
| spaCy | ローカル NLP 処理 — 重複除去および SVO トリプレット抽出に使用 |
| APScheduler | 自動的な 24 時間間隔での劣化ジョブ |
| PostgreSQL + pgvector | オプション — チームまたは大容量データセット向け |
| Neo4j | オプショングラフバックエンド — で利用可能 |
PostgreSQL セットアップ(オプション)
pip install yourmemory[postgres]
.env ファイルを作成:
DATABASE_URL=postgresql://YOUR_USER@localhost:5432/yourmemory
macOS:
brew install postgresql@16 pgvector && brew services start postgresql@16 createdb yourmemory
Ubuntu / Debian:
sudo apt install postgresql postgresql-contrib postgresql-16-pgvector createdb yourmemory
アーキテクチャ
-
クライアント: Claude / Cline / Cursor / 任意の MCP クライアント
recall_memory(query, api_key?)- Embed → ベクトル類似度計算 (Round 1)
- グラフ BFS 展開 (Round 2)
- スコア = 類似度 × 強度 → 上位 k 件
- Recall プロパゲーション → 近傍ノードのスコア向上
store_memory(content, importance, category?, visibility?, api_key?)- 質問か?→ 却下
- 矛盾チェック → 衝突が検出されれば更新
- Embed() → INSERT → Index memory() → グラフノード+エッジ
update_memory(id, new_content, importance)- Embed(new_content) → UPDATE → グラフノードの再フレッシュ
-
ベクトル DB (Round 1): DuckDB(デフォルト)—
memories.duckdb- embedding: FLOAT[768]
- importance: FLOAT
- recall_count: INTEGER
- visibility: VARCHAR
- agent_id: VARCHAR
-
グラフ DB (Round 2): NetworkX(デフォルト)—
graph.pkl- nodes: memory_id, strength
- edges: sim × verb_weight ≥ 0.4
Neo4j (オプトイン):
bolt://localhost:7687
データセット参照
ベンチマークには Snap Research によって公開された LoCoMo データセットを使用します。
Maharana et al. (2024). LoCoMo: Long Context Multimodal Benchmark for Dialogue. Snap Research.
ライセンス
Copyright 2026 Sachit Misra — CC-BY-NC-4.0 ライセンスの下で公開。
- 無料で利用可能: 個人的な使用、教育、学術研究、オープンソースプロジェクト。
- 許可されていない: 別途書面での合意なしでの商用利用。
- 商用ライセンス: mishrasachit1@gmail.com