LLM-Independent Memory System with Multilingual Support
Project description
๐ง Greeum v0.3
An LLM-Independent Memory System with Multilingual Support
๐ Overview
Greeum (pronounced as "gree-um") is a universal memory module that can be attached to any LLM model, designed to:
- Track user's long-term utterances, goals, emotions, and intentions
- Recall memories relevant to the current context
- Process temporal reasoning in multiple languages
- Function as an "AI with memory"
The name "Greeum" is inspired by the Korean word "๊ทธ๋ฆฌ์" which evokes a sense of longing and remembrance - perfectly capturing the essence of a memory system.
๐ Key Features
- Long-Term Memory Blocks: Blockchain-like structure for immutable memory storage
- Short-Term Memory Management: TTL (Time-To-Live) structure for fluid temporary memories
- Semantic Association: Keyword/tag/vector-based memory recall system
- Waypoint Cache: Automatically retrieves memories related to the current context
- Prompt Composition: Automatic generation of LLM prompts that include relevant memories
- Temporal Reasoning: Advanced time expression recognition in multiple languages
- Multilingual Support: Automatic language detection and processing for Korean, English, and more
โ๏ธ Installation
-
Clone the repository
git clone https://github.com/DryRainEnt/Greeum.git cd Greeum
-
Install dependencies
pip install -r requirements.txt
๐งช Usage
CLI Interface
# Add long-term memory
python cli/memory_cli.py add -c "I started a new project and it's really exciting"
# Search memories by keywords
python cli/memory_cli.py search -k "project,exciting"
# Search memories by time expression
python cli/memory_cli.py search-time -q "What did I do 3 days ago?" -l "auto"
# Add short-term memory
python cli/memory_cli.py stm "The weather is nice today"
# Retrieve short-term memories
python cli/memory_cli.py get-stm
# Generate a prompt
python cli/memory_cli.py prompt -i "How is the project going?"
REST API Server
# Run the API server
python api/memory_api.py
Web interface: http://localhost:5000
API Endpoints:
- GET
/api/v1/health- Check status - GET
/api/v1/blocks- Retrieve block list - POST
/api/v1/blocks- Add a block - GET
/api/v1/search?keywords=keyword1,keyword2- Search by keywords - GET
/api/v1/search/time?query=yesterday&language=en- Search by time expression - GET, POST, DELETE
/api/v1/stm- Manage short-term memory - POST
/api/v1/prompt- Generate prompts - GET
/api/v1/verify- Verify blockchain integrity
Python Library
from greeum import BlockManager, STMManager, CacheManager, PromptWrapper
from greeum.text_utils import process_user_input
from greeum.temporal_reasoner import TemporalReasoner
# Process user input
user_input = "I started a new project and it's really exciting"
processed = process_user_input(user_input)
# Store memory with block manager
block_manager = BlockManager()
block = block_manager.add_block(
context=processed["context"],
keywords=processed["keywords"],
tags=processed["tags"],
embedding=processed["embedding"],
importance=processed["importance"]
)
# Time-based search (multilingual)
temporal_reasoner = TemporalReasoner(db_manager=block_manager, default_language="auto")
time_query = "What did I do 3 days ago?"
time_results = temporal_reasoner.search_by_time_reference(time_query)
# Generate prompt
cache_manager = CacheManager(block_manager=block_manager)
prompt_wrapper = PromptWrapper(cache_manager=cache_manager)
user_question = "How is the project going?"
prompt = prompt_wrapper.compose_prompt(user_question)
# Pass to LLM
# llm_response = call_your_llm(prompt)
๐งฑ Architecture
greeum/
โโโ greeum/ # Core library
โ โโโ block_manager.py # Long-term memory management
โ โโโ stm_manager.py # Short-term memory management
โ โโโ cache_manager.py # Waypoint cache
โ โโโ prompt_wrapper.py # Prompt composition
โ โโโ text_utils.py # Text processing utilities
โ โโโ temporal_reasoner.py # Time-based reasoning
โ โโโ embedding_models.py # Embedding model integration
โโโ api/ # REST API interface
โโโ cli/ # Command-line tools
โโโ data/ # Data storage directory
โโโ tests/ # Test suite
Branch Management
- main: Stable release version branch
- dev: Core feature development branch (merged to main after testing)
- test-collect: Performance metrics and A/B test data collection branch
๐ Performance Tests
Greeum conducts performance tests in the following areas:
T-GEN-001: Response Specificity Improvement Rate
- Measures response quality improvement when using Greeum memory
- Confirmed 18.6% average quality improvement
- Increase of 4.2 specific information points per response
T-MEM-002: Memory Search Latency
- Measures speed improvement through waypoint cache
- Confirmed 5.04x average speed improvement
- Up to 8.67x speed improvement for 1,000+ memory blocks
T-API-001: API Call Efficiency
- Measures reduction in follow-up questions due to memory-based context
- Confirmed 78.2% reduction in need for follow-up questions
- Cost savings from reduced API calls
๐ Memory Block Structure
{
"block_index": 143,
"timestamp": "2025-05-08T01:02:33",
"context": "I started a new project and it's really exciting",
"keywords": ["project", "start", "exciting"],
"tags": ["positive", "beginning", "motivated"],
"embedding": [0.131, 0.847, ...],
"importance": 0.91,
"hash": "...",
"prev_hash": "..."
}
๐ค Supported Languages
Greeum supports time expression recognition in the following languages:
- ๐ฐ๐ท Korean: Native support for Korean time expressions (์ด์ , ์ง๋์ฃผ, 3์ผ ์ , etc.)
- ๐บ๐ธ English: Full support for English time formats (yesterday, 3 days ago, etc.)
- ๐ Auto-detection: Automatically detects the language and processes accordingly
๐ Temporal Reasoning Examples
# Korean
result = evaluate_temporal_query("3์ผ ์ ์ ๋ญ ํ์ด?", language="ko")
# Returns: {detected: True, language: "ko", best_ref: {term: "3์ผ ์ "}}
# English
result = evaluate_temporal_query("What did I do 3 days ago?", language="en")
# Returns: {detected: True, language: "en", best_ref: {term: "3 days ago"}}
# Auto-detection
result = evaluate_temporal_query("What happened yesterday?")
# Returns: {detected: True, language: "en", best_ref: {term: "yesterday"}}
๐ง Project Extensions
- Enhanced Multilingual Support: Expanding to Japanese, Chinese, Spanish and more languages
- Embedding Improvements: Integration with real embedding models (e.g., sentence-transformers)
- Keyword Extraction Enhancement: Implementation of language-specific keyword extraction
- Cloud Integration: Addition of database backends (SQLite, MongoDB, etc.)
- Distributed Processing: Implementation of distributed processing for large-scale memory management
๐ Website
Visit our website: greeum.app
๐ License
MIT License
๐ฅ Contributing
We welcome all contributions including bug reports, feature suggestions, and pull requests!
๐ฑ Contact
Email: playtart@play-t.art
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file greeum-0.3.0.tar.gz.
File metadata
- Download URL: greeum-0.3.0.tar.gz
- Upload date:
- Size: 76.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4523eadeb1b003dba50e07970241c7c8cdb5f8b991d89f0ee5c805e2e2d9335
|
|
| MD5 |
03b5897fbf4ff445bb5daed2f1d37a2c
|
|
| BLAKE2b-256 |
f9d4faaa9fbd4d60692931221bb4557b378f91a9e056e3bff5ba44340a5b7ad2
|
File details
Details for the file greeum-0.3.0-py3-none-any.whl.
File metadata
- Download URL: greeum-0.3.0-py3-none-any.whl
- Upload date:
- Size: 86.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2db2f7f3d34e486c9999bb0f7caaf31f5b7c9aca7adbc2207f1b7f6e9a800748
|
|
| MD5 |
70d715a03de5135ae7a8b50c14133bb3
|
|
| BLAKE2b-256 |
50ae20de20d636ec0699bea1b0f11bab8ffabc097be9db40f91cf0c6072d8ff7
|