https://github.com/devparihar5/llm-long-term-memory
A sophisticated memory storage and retrieval system that provides LLMs with persistent, searchable long-term memory capabilities. This system can extract, store, update, and retrieve memories from conversations, enabling AI agents to maintain context across multiple sessions.
https://github.com/devparihar5/llm-long-term-memory
long-term-memory memory openai streamlit
Last synced: about 1 month ago
JSON representation
A sophisticated memory storage and retrieval system that provides LLMs with persistent, searchable long-term memory capabilities. This system can extract, store, update, and retrieve memories from conversations, enabling AI agents to maintain context across multiple sessions.
- Host: GitHub
- URL: https://github.com/devparihar5/llm-long-term-memory
- Owner: Devparihar5
- Created: 2025-07-29T12:02:43.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-29T12:12:53.000Z (11 months ago)
- Last Synced: 2025-09-10T10:27:28.131Z (9 months ago)
- Topics: long-term-memory, memory, openai, streamlit
- Language: Python
- Homepage: https://llm-long-term-memory.streamlit.app/
- Size: 102 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🧠 LLM Long-Term Memory
[](https://badge.fury.io/py/llm-long-term-memory)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
**Give your AI agents persistent, searchable long-term memory with pluggable storage backends.**
A sophisticated memory storage and retrieval system that provides LLMs with persistent, searchable long-term memory capabilities. This system can extract, store, update, and retrieve memories from conversations, enabling AI agents to maintain context across multiple sessions.
## ✨ Features
- 🧠 **Intelligent Memory Extraction** - Automatically extracts factual information from conversations using OpenAI GPT
- 🔍 **Semantic Search** - Vector-based similarity search using OpenAI embeddings and FAISS
- 💾 **Pluggable Storage Backends** - SQLite, PostgreSQL, MongoDB, and Redis support
- 🔄 **Memory Management** - Add, update, and delete memories with conflict resolution
- 📊 **Category Organization** - Automatic categorization of memories
- ⚡ **Importance Scoring** - Weighted importance system for memory prioritization
- 🔗 **LangChain Integration** - Built with LangChain for robust LLM interactions
## 📦 Installation
```bash
# Basic installation (SQLite backend)
pip install llm-long-term-memory
# With PostgreSQL support
pip install llm-long-term-memory[postgresql]
# With MongoDB support
pip install llm-long-term-memory[mongodb]
# With Redis support
pip install llm-long-term-memory[redis]
# With all backends
pip install llm-long-term-memory[all]
# With Streamlit UI
pip install llm-long-term-memory[streamlit]
```
## 🚀 Quick Start
```python
from llm_memory import LongTermMemorySystem
# Initialize with SQLite (default)
memory = LongTermMemorySystem(openai_api_key="your-api-key")
# Process a message and extract memories
result = memory.process_message(
"I use VS Code for Python development and prefer dark mode",
user_id="user123"
)
print(f"Extracted {len(result['new_memories'])} memories")
# Query memories
answer = memory.answer_with_memory("What IDE do I use?")
print(answer) # "You use VS Code for Python development"
# Get all memories
memories = memory.get_all_memories()
for mem in memories:
print(f"- {mem.content} (importance: {mem.importance})")
```
## 💾 Storage Backends
### SQLite (Default)
```python
from llm_memory import LongTermMemorySystem
memory = LongTermMemorySystem(
openai_api_key="...",
storage_backend="sqlite",
storage_config={"db_path": "my_memories.db"}
)
```
### PostgreSQL
```python
from llm_memory import LongTermMemorySystem
memory = LongTermMemorySystem(
openai_api_key="...",
storage_backend="postgresql",
storage_config={
"connection_string": "postgresql://user:password@localhost:5432/memory_db"
}
)
```
### MongoDB
```python
from llm_memory import LongTermMemorySystem
memory = LongTermMemorySystem(
openai_api_key="...",
storage_backend="mongodb",
storage_config={
"connection_string": "mongodb://localhost:27017",
"database": "memory_db",
"collection": "memories"
}
)
```
### Redis
```python
from llm_memory import LongTermMemorySystem
memory = LongTermMemorySystem(
openai_api_key="...",
storage_backend="redis",
storage_config={
"host": "localhost",
"port": 6379,
"password": "optional_password"
}
)
```
### Custom Backend
```python
from llm_memory import StorageBackend, Memory, LongTermMemorySystem
class MyCustomBackend(StorageBackend):
def init_storage(self) -> None:
# Initialize your storage
pass
def save_memory(self, memory: Memory) -> None:
# Save memory
pass
def get_memory(self, memory_id: str) -> Memory:
# Get memory by ID
pass
def get_all_memories(self) -> list:
# Get all memories
pass
def delete_memory(self, memory_id: str) -> bool:
# Delete memory
pass
def search_memories(self, query: str, category: str = None) -> list:
# Search memories
pass
def close(self) -> None:
# Close connections
pass
# Use your custom backend
memory = LongTermMemorySystem(
openai_api_key="...",
storage_backend=MyCustomBackend()
)
```
## 📊 Memory Structure
```python
from llm_memory import Memory
# Each memory contains:
memory = Memory(
id="unique_id",
content="User prefers dark mode",
category="preferences",
importance=0.8,
timestamp="2024-01-15T10:30:00",
embedding=[...], # Vector embedding
metadata={"user_id": "user123", "source": "chat"}
)
```
## 🔧 API Reference
### LongTermMemorySystem
```python
# Initialize
memory = LongTermMemorySystem(
openai_api_key: str, # Required: OpenAI API key
storage_backend: str = "sqlite", # Backend type or instance
storage_config: dict = None, # Backend-specific config
embedding_model: str = "text-embedding-3-small",
llm_model: str = "gpt-3.5-turbo",
)
# Methods
memory.process_message(message, user_id, context) # Extract memories from message
memory.query_memories(query, k=5) # Semantic search for memories
memory.answer_with_memory(question, max_memories) # Answer using memory context
memory.get_all_memories() # Get all stored memories
memory.delete_memory(memory_id) # Delete specific memory
memory.get_memory_stats() # Get statistics
memory.close() # Close connections
```
### Context Manager Support
```python
from llm_memory import LongTermMemorySystem
with LongTermMemorySystem(openai_api_key="...") as memory:
memory.process_message("Hello!", user_id="user123")
# Connections automatically closed when done
```
## 🎯 Use Cases
1. **Personal AI Assistants** - Remember user preferences, habits, and information
2. **Customer Service Bots** - Maintain customer history and preferences
3. **Educational AI** - Track learning progress and personalized content
4. **Productivity Tools** - Remember user workflows and tool preferences
5. **Healthcare AI** - Maintain patient information (with proper security)
## 🌐 Web Interface
If you installed with `[streamlit]`:
```bash
# Clone the repo for the app.py
git clone https://github.com/Devparihar5/llm-long-term-memory.git
cd llm-long-term-memory
# Run the Streamlit app
streamlit run app.py
```
## 🔒 Security Considerations
- Store API keys securely (use environment variables)
- Use secure connection strings for databases
- Consider encryption for sensitive memories
- Implement user authentication for multi-user scenarios
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## 🙏 Acknowledgments
- Built with [LangChain](https://github.com/langchain-ai/langchain)
- Vector search powered by [FAISS](https://github.com/facebookresearch/faiss)
- Embeddings by [OpenAI](https://openai.com)
---
**Made with ❤️ by [Devendra Parihar](https://github.com/Devparihar5)**
*Contributions by [Divya](https://github.com/piechartXdata) ✨*