75c67150d0
build / build (3.13) (push) Waiting to run
release-please / release-please (push) Waiting to run
release-please / build wheels (macos-aarch64) (push) Blocked by required conditions
release-please / build wheels (macos-x86_64) (push) Blocked by required conditions
release-please / build wheels (windows-x86_64) (push) Blocked by required conditions
release-please / build wheels (linux-aarch64) (push) Blocked by required conditions
release-please / build wheels (linux-x86_64) (push) Blocked by required conditions
release-please / build sdist (push) Blocked by required conditions
release-please / publish release artifacts (push) Blocked by required conditions
331 lines
9.3 KiB
Plaintext
331 lines
9.3 KiB
Plaintext
MemU: Agentic Memory Framework - Technical Documentation
|
|
|
|
Introduction
|
|
============
|
|
MemU is a sophisticated agentic memory framework designed to provide AI agents and applications with human-like memory capabilities. Unlike traditional RAG (Retrieval-Augmented Generation) systems that simply store and retrieve information, MemU organizes, categorizes, and maintains memories in a structured, semantically meaningful way.
|
|
|
|
Core Concepts
|
|
=============
|
|
|
|
1. Memory Organization
|
|
MemU organizes information into several layers:
|
|
- Memory Items: Individual pieces of information extracted from inputs
|
|
- Memory Categories: Semantic groupings of related memories
|
|
- Memory Types: Classifications of memory content (profile, event, knowledge, behavior)
|
|
|
|
2. Multi-Modal Support
|
|
The framework supports various input modalities:
|
|
- Text documents (PDF, TXT, DOC)
|
|
- Conversations (JSON chat logs)
|
|
- Images (PNG, JPG, with vision model integration)
|
|
- Audio (transcription and processing)
|
|
- Video (frame extraction and analysis)
|
|
|
|
3. Intelligent Processing Pipeline
|
|
Each input goes through several processing stages:
|
|
a. Preprocessing: Content extraction and normalization
|
|
b. Summarization: Key information extraction
|
|
c. Embedding: Vector representation generation
|
|
d. Classification: Memory type identification
|
|
e. Categorization: Semantic category assignment
|
|
f. Storage: Persistent storage with metadata
|
|
|
|
Architecture Components
|
|
=======================
|
|
|
|
1. MemoryService (Core Service Layer)
|
|
The main entry point for all memory operations:
|
|
- memorize(): Process and store new information
|
|
- retrieve(): Query and fetch relevant memories
|
|
- update(): Modify existing memories
|
|
- delete(): Remove memories
|
|
|
|
Configuration options:
|
|
- LLM provider settings (OpenAI, Azure, custom)
|
|
- Embedding model selection
|
|
- Memory type definitions
|
|
- Category templates
|
|
- Retrieval methods (RAG, LLM-based)
|
|
|
|
2. Storage Layer
|
|
Multiple storage backends supported:
|
|
- SQLite (default, local development)
|
|
- PostgreSQL (production deployments)
|
|
- In-memory (testing and temporary storage)
|
|
|
|
Data persistence:
|
|
- Memory items with metadata
|
|
- Category definitions and summaries
|
|
- Vector embeddings for similarity search
|
|
- Resource references and URLs
|
|
|
|
3. Vector Search Engine
|
|
Semantic search capabilities powered by:
|
|
- Dense embeddings (OpenAI text-embedding-3-small/large)
|
|
- Similarity metrics (cosine similarity, dot product)
|
|
- Efficient indexing for fast retrieval
|
|
- Hybrid search combining semantic and keyword matching
|
|
|
|
4. LLM Integration Layer
|
|
Flexible LLM backend support:
|
|
- OpenAI SDK client (primary)
|
|
- HTTP-based client (custom endpoints)
|
|
- Configurable model selection
|
|
- Prompt template system
|
|
- Streaming response support
|
|
|
|
Memory Types
|
|
============
|
|
|
|
1. Profile Memory
|
|
Stores persistent information about entities:
|
|
- Personal attributes (name, age, occupation)
|
|
- Preferences and interests
|
|
- Relationships and connections
|
|
- Identity and characteristics
|
|
|
|
Example: "Alex is a software engineer at TechCorp, specializing in backend development"
|
|
|
|
2. Event Memory
|
|
Records discrete occurrences and activities:
|
|
- Temporal events with timestamps
|
|
- Actions and experiences
|
|
- Milestones and achievements
|
|
- Incidents and interactions
|
|
|
|
Example: "Completed the deployment pipeline implementation on November 15, 2024"
|
|
|
|
3. Knowledge Memory
|
|
Captures factual information and learnings:
|
|
- Facts and concepts
|
|
- Skills and capabilities
|
|
- Domain expertise
|
|
- Technical knowledge
|
|
|
|
Example: "Proficient in Python, Go, Kubernetes, and microservices architecture"
|
|
|
|
4. Behavior Memory
|
|
Tracks patterns and tendencies:
|
|
- Habits and routines
|
|
- Decision patterns
|
|
- Behavioral preferences
|
|
- Interaction styles
|
|
|
|
Example: "Prefers morning workouts, typically exercises 3-4 times per week"
|
|
|
|
Category Management
|
|
===================
|
|
|
|
Dynamic Categorization:
|
|
MemU automatically assigns memories to semantic categories based on content similarity. Categories are created and maintained dynamically as new memories are added.
|
|
|
|
Default Categories:
|
|
- personal_info: Personal details and identity
|
|
- preferences: Likes, dislikes, and choices
|
|
- relationships: Connections with others
|
|
- activities: Hobbies and interests
|
|
- goals: Aspirations and objectives
|
|
- experiences: Past events and learnings
|
|
- knowledge: Facts and information
|
|
- opinions: Views and perspectives
|
|
- habits: Routines and patterns
|
|
- work_life: Professional information
|
|
|
|
Custom Categories:
|
|
Users can define custom categories with:
|
|
- Name and description
|
|
- Embedding vector for semantic matching
|
|
- Assignment threshold for automatic categorization
|
|
- Summary generation for category overview
|
|
|
|
Category Summaries:
|
|
MemU maintains auto-generated summaries for each category that:
|
|
- Provide overview of category contents
|
|
- Get updated as new memories are added
|
|
- Help with high-level information retrieval
|
|
- Support category-level search
|
|
|
|
Retrieval Strategies
|
|
====================
|
|
|
|
1. RAG-Based Retrieval (Default)
|
|
Vector similarity search approach:
|
|
- Query embedding generation
|
|
- Similarity calculation with stored memories
|
|
- Top-K selection per category
|
|
- Ranking by relevance score
|
|
- Context window assembly
|
|
|
|
Advantages:
|
|
- Fast and efficient
|
|
- Deterministic results
|
|
- Lower LLM costs
|
|
- Good for factual recall
|
|
|
|
2. LLM-Based Retrieval
|
|
AI-powered search and ranking:
|
|
- Query understanding and expansion
|
|
- Semantic relevance judgment
|
|
- Context-aware ranking
|
|
- Multi-hop reasoning support
|
|
- Natural language result explanation
|
|
|
|
Advantages:
|
|
- Better semantic understanding
|
|
- Handles complex queries
|
|
- Context-aware results
|
|
- Flexible interpretation
|
|
|
|
Retrieval Pipeline:
|
|
1. Pre-retrieval decision (should we retrieve?)
|
|
2. Query rewriting (optimize for search)
|
|
3. Category ranking (which categories are relevant?)
|
|
4. Item retrieval (fetch top-K items)
|
|
5. Item ranking (rerank by relevance)
|
|
6. Resource retrieval (fetch original sources)
|
|
7. Result assembly (format for output)
|
|
|
|
Best Practices
|
|
==============
|
|
|
|
1. Memory Quality
|
|
- Provide detailed, contextual inputs
|
|
- Include timestamps for events
|
|
- Maintain consistent terminology
|
|
- Regular memory consolidation
|
|
- Remove outdated information
|
|
|
|
2. Configuration Optimization
|
|
- Tune embedding models for your domain
|
|
- Adjust category assignment thresholds
|
|
- Customize memory type prompts
|
|
- Set appropriate top-K values
|
|
- Configure LLM parameters
|
|
|
|
3. Performance Optimization
|
|
- Batch memory operations when possible
|
|
- Use appropriate storage backend
|
|
- Index frequently queried fields
|
|
- Cache embeddings when reusing
|
|
- Monitor memory growth
|
|
|
|
4. Privacy and Security
|
|
- Implement access controls
|
|
- Encrypt sensitive memories
|
|
- Regular data audits
|
|
- Compliance with data regulations
|
|
- User consent for memory storage
|
|
|
|
Use Cases
|
|
=========
|
|
|
|
1. Personal AI Assistants
|
|
- Remember user preferences and context
|
|
- Maintain conversation history
|
|
- Learn from interactions
|
|
- Personalize responses
|
|
|
|
2. Customer Support Systems
|
|
- Track customer history and issues
|
|
- Remember preferences and complaints
|
|
- Build customer profiles
|
|
- Improve service quality
|
|
|
|
3. Educational Applications
|
|
- Track learning progress
|
|
- Remember concepts learned
|
|
- Adapt to learning style
|
|
- Provide personalized content
|
|
|
|
4. Knowledge Management
|
|
- Organize organizational knowledge
|
|
- Track project information
|
|
- Build expertise databases
|
|
- Enable knowledge discovery
|
|
|
|
5. Agent Workflows
|
|
- Maintain task context
|
|
- Remember tool usage patterns
|
|
- Learn from execution history
|
|
- Optimize decision making
|
|
|
|
API Reference
|
|
=============
|
|
|
|
Basic Usage Example:
|
|
|
|
```python
|
|
from memu.app import MemoryService
|
|
|
|
# Initialize service
|
|
service = MemoryService(
|
|
llm_config={
|
|
"api_key": "your-api-key",
|
|
"chat_model": "gpt-4o-mini"
|
|
}
|
|
)
|
|
|
|
# Store a memory
|
|
result = await service.memorize(
|
|
resource_url="conversation.json",
|
|
modality="conversation"
|
|
)
|
|
|
|
# Retrieve memories
|
|
memories = await service.retrieve(
|
|
query="What programming languages does Alex know?",
|
|
top_k=5
|
|
)
|
|
|
|
# Access categories
|
|
categories = service.store.categories
|
|
```
|
|
|
|
Advanced Configuration:
|
|
|
|
```python
|
|
# Custom memory types
|
|
memorize_config = {
|
|
"memory_types": ["profile", "knowledge", "custom"],
|
|
"memory_type_prompts": {
|
|
"custom": "Extract specific information: {resource}"
|
|
},
|
|
"memory_categories": [
|
|
{"name": "technical_skills", "description": "Programming and technical abilities"},
|
|
{"name": "soft_skills", "description": "Communication and interpersonal skills"}
|
|
]
|
|
}
|
|
|
|
service = MemoryService(
|
|
llm_config=llm_config,
|
|
memorize_config=memorize_config
|
|
)
|
|
```
|
|
|
|
Roadmap
|
|
=======
|
|
|
|
Upcoming Features:
|
|
- Long-term memory consolidation
|
|
- Federated memory systems
|
|
- Memory importance scoring
|
|
- Automatic memory pruning
|
|
- Cross-user memory sharing
|
|
- Memory versioning and history
|
|
- Enhanced temporal reasoning
|
|
- Graph-based memory relationships
|
|
- Memory export and import
|
|
- Advanced privacy controls
|
|
|
|
Contributing
|
|
============
|
|
|
|
MemU is open source and welcomes contributions:
|
|
- Bug reports and feature requests
|
|
- Documentation improvements
|
|
- Code contributions
|
|
- Example applications
|
|
- Performance optimizations
|
|
|
|
For more information, visit: https://github.com/mem-labs/memU
|