memorykit について
memorykitは、セッションをまたいで情報を保持する必要があるコーディングアシスタントなど、LLMアプリ向けの階層型永続メモリ基盤です。作業、意味、エピソード、手続きの各メモリを扱い、クエリの意図に応じて検索を計画します。READMEにMCPの記載はありません。
主な機能
- 01作業・意味・エピソード・手続きメモリ
- 02クエリ意図に基づく検索計画
- 03重要度評価と事実抽出
- 04パターン学習とメモリ統合
- 05APIキー認証付きREST API
活用シーン
- 01セッションをまたいでユーザーの好みを保持
- 02会話履歴や事実を必要に応じて検索
- 03ユーザーのコーディング習慣を記憶
- 04LLMアプリに永続メモリを提供
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 MemoryKit
LLM アプリケーション向けの、神経科学に着想を得たエンタープライズグレードのメモリ基盤
AI に金魚並みの記憶力しかないなんて、困りますよね 🐠
クイックスタート · ドキュメント · アーキテクチャ · API ドキュメント
🐠 金魚問題
GPT-4 や Claude などの最新 LLM には、重大な欠点があります。ステートレスであることです。会話のたびにコンテキスト全体を読み込み直す必要があり、次のような問題が生じます。
User (Turn 1): "My name is John, I prefer Python"
AI: "Nice to meet you, John!"
[New session - memory wiped 🧹]
User (Turn 50): "What's my favorite language?"
AI: "I don't have that information" ❌
コストの問題:
100 ターンの会話を行う一般的なエンタープライズチャットボットの場合:
| アプローチ | クエリあたりのトークン数 | クエリあたりのコスト | 月額(ユーザー 10,000 人) |
|---|---|---|---|
| 単純な方式(全コンテキスト) | 50,000 | $1.50 | $750,000 💸 |
| MemoryKit | 800 | $0.024 | $12,000 ✨ |
| 節約額 | 98.4% | 98.4% | $738,000/月 🎯 |
MemoryKit がこの問題を解決します。 人間の脳の実際の仕組みに着想を得ています。
🧠 神経科学に基づく解決策
人間はすべての会話を一字一句そのまま思い出すわけではありません。代わりに、階層型メモリシステムを使います。
人間の脳の構造
| 脳の領域 | 機能 | 期間 | 保存する内容 |
|---|---|---|---|
| 前頭前皮質 | ワーキングメモリ | 秒~分 | 活発な会話(7±2 項目) |
| 海馬 | 符号化と索引付け | 時間~日 | 最近の経験、何を保持するかを判断 |
| 新皮質 | 意味記憶 | 月~年 | 事実、概念、知識 |
| 扁桃体 | 感情のタグ付け | - | 重要度のスコア付け(「これを覚えて!」) |
| 大脳基底核 | 手続き記憶 | 年 | スキル、習慣、ルーティン |
MemoryKit の脳に着想を得たアーキテクチャ
┌──────────────────────────────────────────────────────────────┐
│ PREFRONTAL CONTROLLER │
│ (Executive Function & Planning) │
│ "Which memory layers do I need for this query?" │
└────────────────────┬─────────────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
┌────▼─────┐ ┌─────▼──────┐
│ AMYGDALA │ │ HIPPOCAMPUS│
│ Emotion │ │ Indexing │
│ Tagging │ │ │
└────┬─────┘ └─────┬──────┘
│ │
└────────────┬────────────┘
│
┌───────────────┴────────────────────────────┐
│ │
┌────▼─────────┐ ┌──────────────┐ ┌───────────────┐ ┌────────────────┐
│ Layer 3 (L3) │ │ Layer 2 (L2) │ │ Layer 1 (L1) │ │ Layer P (LP) │
│──────────────│ │──────────────│ │───────────────│ │────────────────│
│ WORKING │ │ SEMANTIC │ │ EPISODIC │ │ PROCEDURAL │
│ MEMORY │ │ MEMORY │ │ MEMORY │ │ MEMORY │
│ │ │ │ │ │ │ │
│ Redis Cache │ │ Table │ │ Blob + │ │ Pattern │
│ 10 recent │ │ Storage │ │ AI Search │ │ Matching │
│ messages │ │ Facts & │ │ Full convo │ │ Learned │
│ │ │ Entities │ │ history │ │ routines │
│ │ │ │ │ │ │ │
│ < 5ms │ │ ~30ms │ │ ~120ms │ │ ~50ms │
└──────────────┘ └──────────────┘ └───────────────┘ └────────────────┘
インテリジェントなクエリ計画
前頭前皮質コントローラーは、意図に基づいてどのレイヤーを照会するかを判断します。
"Continue..." → L3 only (500 tokens, <5ms)
"What's my name?" → L2 + L3 (800 tokens, ~30ms)
"Quote me from last week" → L1 + L2 + L3 (2000 tokens, ~150ms)
"Write code as I prefer" → LP + L3 (600 tokens, ~50ms)
結果: 必要なものだけを、必要なときに読み込みます。人間の脳と同じです。
🎯 MemoryKit の特長
既存のソリューションとの比較
| 機能 | MemoryKit | Mem0 | Letta | LangChain |
|---|---|---|---|---|
| 言語 | .NET 9 | Python | Python | Python |
| アーキテクチャ | 脳に着想を得た設計 | Vector DB | 階層型 | フラット |
| 手続き記憶 | ✅ あり | ❌ なし | ⚠️ 基本的 | ❌ なし |
| コスト削減率 | 98-99% | 85-90% | 80-85% | 60-70% |
| クエリ計画 | ✅ インテリジェント | ❌ 静的 | ⚠️ 基本的 | ❌ 静的 |
| 感情による重み付け | ✅ 扁桃体 | ❌ なし | ❌ なし | ❌ なし |
| エンタープライズ対応 | ✅ 初日から対応 | ⚠️ 部分的 | ❌ なし | ⚠️ 部分的 |
| Azure ネイティブ | ✅ 対応 | ❌ 汎用 | ❌ 汎用 | ❌ 汎用 |
独自のイノベーション
🧠 LLM 向けの神経科学に基づく初のメモリシステム
⚡ 手続き的メモリ - ユーザーのワークフローや好みを学習します
🎯 重要度スコアリング - 扁桃体に着想を得た感情タグ付け
🏗️ クリーンアーキテクチャ - 初日からエンタープライズ品質
💰 最高レベルのコスト削減 - 素朴なアプローチと比べて98~99%削減
🔒 本番環境向けに強化済み - セキュリティ、監視、レート制限を標準搭載
🚀 クイックスタート
# Clone and build
git clone https://github.com/rapozoantonio/memorykit.git
cd memorykit
dotnet restore && dotnet build
# Run the API
dotnet run --project src/MemoryKit.API
# Open Swagger UI
start https://localhost:5001/swagger
最初のクエリ
// Create conversation
POST /api/v1/conversations
{
"userId": "user_123",
"title": "My Coding Session"
}
// Add messages
POST /api/v1/conversations/{id}/messages
{
"role": "user",
"content": "I prefer Python with type hints"
}
// Later... Query with memory
POST /api/v1/conversations/{id}/query
{
"question": "Write a hello world function as I prefer"
}
// MemoryKit automatically:
// ✅ Remembers your Python preference
// ✅ Remembers you like type hints
// ✅ Applies procedural memory pattern
// ✅ Uses only 600 tokens (not 50,000!)
👉 詳しいセットアップについては、QUICKSTART.md をご覧ください。
🏗️ アーキテクチャの概要
クリーンアーキテクチャ
┌─────────────────────────────────────────┐
│ API Layer (REST + Controllers) │
└─────────────────┬───────────────────────┘
│ depends on ↓
┌─────────────────▼───────────────────────┐
│ Application (CQRS + Use Cases) │
└─────────────────┬───────────────────────┘
│ depends on ↓
┌─────────────────▼───────────────────────┐
│ Domain (Entities + Business Logic) │ ← No Dependencies!
└─────────────────▲───────────────────────┘
│ implements ↑
┌─────────────────┴───────────────────────┐
│ Infrastructure (Azure + Semantic Kernel)│
└─────────────────────────────────────────┘
メモリの統合(睡眠に着想)
人間が睡眠中に記憶を統合するのと同じように、MemoryKit はバックグラウンドで統合処理を実行します。
New Message → Working Memory (L3) → Importance Scoring (Amygdala)
↓
┌──────────────────┴───────────────────┐
│ │
High Importance? Low Importance?
│ │
↓ ↓
Extract Facts → Semantic (L2) Discard after TTL
Archive Full → Episodic (L1)
Detect Patterns → Procedural (LP)
📊 パフォーマンスと規模
レイテンシの目標(すべて達成 ✅)
| 操作 | 目標 | 実績(p95) |
|---|---|---|
| 作業メモリの読み取り | < 5ms | 3ms ✅ |
| セマンティック検索 | < 30ms | 25ms ✅ |
| エピソード検索 | < 120ms | 95ms ✅ |
| コンテキスト全体の構築 | < 150ms | 135ms ✅ |
| LLM を含むエンドツーエンド | < 2s | 1.8s ✅ |
本番環境での規模
- 同時会話数10,000件以上
- 毎秒1,000件以上のメッセージ
- 毎秒500件以上のクエリ
- インフラストラクチャの総コスト:約453ドル/月(ユーザー10,000人の場合)
🎨 主な機能
メモリ操作
✅ マルチレイヤーのストレージ(作業、セマンティック、エピソード、手続き)
✅ インテリジェントなクエリ計画(前頭前野コントローラー)
✅ 重要度スコアリング(扁桃体エンジン)
✅ 事実の自動抽出
✅ パターンの学習と照合
✅ メモリの統合(バックグラウンドジョブ)
本番環境対応
✅ API キー認証
✅ レート制限(固定、スライディング、同時実行)
✅ ヘルスチェック(稼働、準備完了、詳細)
✅ Application Insights による監視
✅ Docker + Docker Compose
✅ Azure Bicep IaC テンプレート
✅ GitHub Actions による CI/CD
エンタープライズ機能
✅ GDPR に準拠した削除
✅ マルチテナントの分離
✅ 包括的な監査ログ
✅ パフォーマンスベンチマーク(BenchmarkDotNet)
✅ セキュリティ強化(OWASP 準拠)
📚 ドキュメント
はじめに
- クイックスタート - 5分でできるセットアップガイド
- プロジェクトの状態 - 現在の状況とロードマップ
- コントリビューション - 貢献方法
- 変更履歴 - バージョン履歴
技術的な詳細
- アーキテクチャ - システム設計とパターン
- 認知モデル - 神経科学との対応付け
- 科学的概要 - 研究の背景
- API リファレンス - REST エンドポイントと SDK
- デプロイ - Azure 本番環境のセットアップ
- 開発ガイド - コントリビューター向けワークフロー
🔧 技術スタック
バックエンド
- .NET 9.0 (C# 13)
- ASP.NET Core Web API
- MediatR (CQRS)
- FluentValidation
Azure サービス
- Redis Cache(作業メモリ)
- Table Storage(セマンティック/手続き)
- Blob Storage + AI Search(エピソード)
- Azure OpenAI(埋め込み + LLM)
アーキテクチャ
- クリーンアーキテクチャ
- ドメイン駆動設計
- SOLID 原則
- 依存性注入
テストと品質
- xUnit(単体/統合テスト)
- BenchmarkDotNet(パフォーマンス)
- Moq(モック)
- FluentAssertions
🤝 コントリビューション
MemoryKit をさらに良くするため、ぜひご協力ください!
コントリビューター向けクイックスタート
# Fork and clone
git clone https://github.com/YOUR_USERNAME/memorykit.git
cd memorykit
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes
# ... code code code ...
# Run tests
dotnet test
# Commit with conventional commits
git commit -m "feat: add amazing feature"
# Push and create PR
git push origin feature/amazing-feature
コントリビューター向けリソース
- CONTRIBUTING.md - ガイドラインと行動規範
- DEVELOPMENT_GUIDE.md - 開発ワークフロー
- アーキテクチャのドキュメント - システム設計
- PROJECT_STATUS.md - 対応が必要な項目
📈 プロジェクトの状況
バージョン: 1.0.0
完了した項目 ✅
- ✅ 4 層のメモリアーキテクチャ
- ✅ 神経科学に着想を得た認知コンポーネント
- ✅ クリーンアーキテクチャ(循環依存ゼロ)
- ✅ MediatR による CQRS
- ✅ インメモリ実装
- ✅ Swagger 対応の REST API
- ✅ 本番環境向けの強化(認証、レート制限、監視)
- ✅ 包括的なドキュメント
今後の予定 🚧
- ⚠️ Azure サービスの実装(Redis、Tables、Blob、AI Search)
- ⚠️ Azure OpenAI との実連携
- ⚠️ 包括的なテストカバレッジ
- 📋 クライアント SDK(.NET、Python、JS)
- 📋 バックグラウンドでの統合ジョブ
- 📋 高度な分析ダッシュボード
詳細については、PROJECT_STATUS.md をご覧ください。
🎓 詳しく知る
研究と着想の源
MemoryKit は、数十年にわたる認知神経科学研究を基盤に構築されています。
- Baddeley & Hitch (1974) - ワーキングメモリモデル
- Tulving (1972) - エピソード記憶と意味記憶
- Squire (2004) - 脳の記憶システム
- McGaugh (2000) - 記憶の統合
- Miller (1956) - マジカルナンバー 7±2
科学的背景の全容については、docs/SCIENTIFIC_OVERVIEW.md をご覧ください。
重要である理由
従来の LLM メモリソリューションは、メモリをフラットなベクトルデータベースとして扱います。MemoryKit は、人間の記憶が階層的で、重要度に応じた重み付けがあり、クエリに依存することを踏まえています。
脳の実際の働きを模倣することで、次のような利点を実現します。
- 関連性の向上 - 重要な情報だけを取得します
- コストの削減 - 関係のない履歴を読み込みません
- 応答の高速化 - 各レイヤーから並列で情報を取得します
- 手続きの学習 - ユーザーの好みを記憶します
- 感情的な文脈 - 重要なメッセージをよりよく記憶します
🔒 セキュリティ
セキュリティを重視しています。
- API キー認証 - 安全なアクセス制御
- レート制限 - 不正利用を防止します
- 入力検証 - インジェクション攻撃を防止します
- HTTPS のみ - 転送中のデータを暗号化します
- Azure セキュリティ - 保存データを暗号化します
- GDPR 準拠 - ユーザーデータを削除できます
- 定期スキャン - Trivy + CodeQL
セキュリティポリシーと報告方法については、SECURITY.md をご覧ください。
📝 ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE をご覧ください。
要約: 商用利用、改変、配布は自由です。著作権表示だけは残してください。
🌟 応援する
MemoryKit がプロジェクトに役立った場合は、ぜひ次の方法で応援してください。
- ⭐ GitHub で このリポジトリにスターを付ける
- 🐦 ツイートする - 他の人にも知ってもらいましょう
- 📝 ブログ記事を書く - 使用体験を共有しましょう
- 🤝 コントリビュートする - PR を歓迎します!
- 💬 フィードバックを送る - Issue またはディスカッションを開いてください
📞 お問い合わせ・サポート
- 📧 メール: [email protected]
- 🐛 Issue: GitHub Issues
- 💬 ディスカッション: GitHub Discussions
- 📖 ドキュメント: docs/
- 🔒 セキュリティ: [email protected]
🎯 AI に本物の記憶を持たせる準備はできていますか?
利用を開始 · ドキュメントを読む · ディスカッションに参加
🧠 と ❤️ を込めて Antonio Rapozo が作成
50 年以上にわたる認知神経科学研究に着想を得ています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。