Save, search, and manage personal notes and knowledge bases in Get笔记 on explicit request.
Memory
Memora Kb
Try itMemora — Personal AI Knowledge Base with interactive knowledge graph visualization. A self-hosted system for managing, retrieving, and querying your personal...
What it does
**Memora** is a self-hosted personal AI knowledge base system that provides an integrated experience from knowledge capture to intelligent Q&A. Built on vector retrieval, hybrid search, and LLM-driven intelligent organization, it helps you efficiently manage, retrieve, and utilize your personal kno…
The skill document
Memora - Personal AI Knowledge Base
Memora is a self-hosted personal AI knowledge base system that provides an integrated experience from knowledge capture to intelligent Q&A. Built on vector retrieval, hybrid search, and LLM-driven intelligent organization, it helps you efficiently manage, retrieve, and utilize your personal knowledge assets.
Version History
v2.0.7 (Current)
- 🐳 Docker Build Optimization: Use Aliyun mirror sources for Debian packages, disable proxy during build
- 🔧 Deployment Config: Hardcoded database credentials in docker-compose, added HF_HUB_OFFLINE setting
- 🔒 Data Consistency: All v2.0.6 improvements included (Neo4j-MySQL sync, entity ID fix, sync API)
v2.0.6
- 🔒 Data Consistency Guarantee: Real-time Neo4j-MySQL synchronization with automatic orphan node cleanup
- Added
_ensure_consistency_with_mysql()for pre-query validation - Integrated into all graph query methods (
get_document_graph,get_entity_graph,get_full_graph,get_stats)
- Added
- 🗑️ Enhanced Deletion Logic: Improved
delete_document_graph()with detailed logging and orphan entity cleanup - 🆔 Entity ID Fix: Auto-generated UUIDs for all Entity nodes, resolving "0 nodes displayed" issue
- 🔄 New Sync API:
POST /api/v1/documents/knowledge-graph/syncfor manual consistency checks - 📊 Document Node Attributes: Added
document_idproperty for frontend-backend compatibility
v2.0.5
- 📝 Complete SKILL.md Rewrite: Updated OpenClaw skill definition with full product overview
- 🎨 Knowledge Graph v2.0: Preview + Fullscreen Modal architecture
- 🖱️ Enhanced Interactions: Zoom, pan, drag, hover details
- Centered Layout: Force-directed algorithm with origin-centered positioning
- 🔄 Smart Caching: Preview data cached, modal uses larger dataset
- Dual Views: Document graph + Entity graph
- Package Updates: Fixed package.json version mismatch
v2.0.4
- 📝 Complete Product Documentation: Comprehensive README with full product overview
- 🎨 Knowledge Graph v2.0: Preview + Fullscreen Modal architecture
- 🖱️ Enhanced Interactions: Zoom, pan, drag, hover details
- 🎯 Centered Layout: Force-directed algorithm with origin-centered positioning
- 🔄 Smart Caching: Preview data cached, modal uses larger dataset
- Dual Views: Document graph + Entity graph
v2.0.0
- Initial release with knowledge graph visualization
- Force-directed layout with interactive controls
- Obsidian-inspired visual design
Core Features
🔐 Privacy & Local Deployment
- Fully Private: Data stored locally, no third-party uploads
- Offline Ready: Works without internet connection
- Single User Mode: No authentication required, ready to use out of the box
Intelligent Semantic Retrieval
- Hybrid Search: Dense vectors + BM42 sparse vectors dual-engine retrieval
- Relevance Reranking: Optional Rerank model for secondary sorting
- Fallback Mechanism: Automatic fallback to backup strategies
- Semantic Understanding: Vector similarity-based, not keyword matching
📄 Multi-Format Document Processing
- Supported Formats: PDF, Word (.docx/.doc), Plain Text (.txt), Markdown (.md)
- Smart Chunking: LangChain recursive character splitter with Chinese/English support
- Vector Storage: Dense + sparse vectors stored in Qdrant
- Metadata Management: Tags and custom metadata for organization
AI-Powered Q&A
- Two Interaction Modes:
- Knowledge Query: Precise Q&A based on retrieved results
- Knowledge Organization: LLM automatically organizes and summarizes knowledge
- Streaming Output: Real-time content generation
- Session Management: Multi-turn conversations with history
- Source Attribution: Answers include source document links
🕸️ Knowledge Graph Visualization
- Force-Directed Layout: Automatic node positioning forming natural network structure
- Dual View Display: Document relationship graph + Entity relationship graph
- Interactive Operations:
- Mouse wheel zoom (centered on cursor)
- Drag blank area to pan canvas
- Drag nodes to reposition
- Hover to show details
- Obsidian Style Design: Black nodes, white background, subtle connections
🌐 Web Scraping & Integration
- Built-in Crawler: httpx + BeautifulSoup, no external dependencies
- OpenClaw Integration: Available as AI Agent Skill with zero-dependency client
- RESTful API: Easy integration with other systems
Quick Start
Installation via clawhub
openclaw skills install @zzlzzlzzl15/memora
Manual Installation
# Clone repository
git clone https://github.com/zzlzzlzzl15/Memora.git
cd Memora/personal_knowledge_base
# Run installation script
./install.sh
Docker Compose Deployment (Recommended)
# Clone repository
git clone https://github.com/zzlzzlzzl15/Memora.git
cd Memora/personal_knowledge_base
# Configure environment variables
cp .env.example .env
# Edit .env with your API keys
# Start services
docker-compose up -d
# Access application
# Open http://localhost:8080 in browser
Configuration
Set the KB_API_BASE environment variable to point to your Memora backend:
export KB_API_BASE=http://127.0.0.1:8080
Or create a .env file:
KB_API_BASE=http://127.0.0.1:8080
Required Environment Variables
| Variable | Description | Example |
|---|---|---|
KB_API_BASE | Memora backend URL | http://127.0.0.1:8080 |
DEEPSEEK_API_KEY | DeepSeek API Key (for LLM) | sk-xxx |
DASHSCOPE_API_KEY | DashScope API Key (for embeddings) | sk-xxx |
Optional Environment Variables
| Variable | Description | Default |
|---|---|---|
USE_RERANK | Enable reranking | false |
RERANK_API_KEY | Qwen3-Rerank API Key | - |
RETRIEVAL_TOP_K | Initial retrieval candidates | 20 |
QDRANT_DENSE_DEFAULT_THRESHOLD | Dense vector similarity threshold | 0.7 |
Usage Examples
Upload Documents
- Click "Upload Document" button in left sidebar
- Select file (PDF, DOCX, TXT, MD supported)
- Fill in title and tags (optional)
- Click "Upload" - system automatically parses, chunks, and vectorizes
Ask Questions
- Enter question in right-side chat interface
- Choose interaction mode:
- Knowledge Query: Get precise answers based on retrieval
- Knowledge Organization: Let AI organize and summarize related knowledge
- View answer with cited source documents
Browse Knowledge Graph
- Click "Knowledge Graph" button in top navigation
- View two preview cards:
- Document Relationship Graph: Shows connections between documents
- Entity Relationship Graph: Shows extracted entities and relationships
- Click any card to enter fullscreen modal for interactive exploration:
- Scroll to zoom
- Drag to pan
- Drag nodes to reposition
- Hover for details
Manage Documents
- View List: See all documents in left sidebar
- Search: Use quick search function
- Recycle Bin: View and manage deleted documents (recoverable within 30 days)
- Permanent Delete: Permanently remove documents and vector data
Technical Architecture
┌─────────────────────────────────────────┐
│ Web Browser │
│ (Frontend UI - HTML/CSS/JS) │
└──────────────┬──────────────────────────┘
│ HTTP / WebSocket
┌──────────────▼──────────────────────────┐
│ Memora Backend │
│ (FastAPI / Python) │
──────────┬──────────────┬───────────────┤
│ Document │ Retrieval │ AI Services │
│Processing│ Engine │ │
├──────────┼──────────────┼───────────────┤
│• PDF │• Dense Vector│• Embedding │
│ Parser │ Search │ (DashScope/ │
│• DOCX │• Sparse Vector│ Local ST) │
│ Parse │ (BM42) │• LLM Chat │
│• Text │• Hybrid Search│ (DeepSeek/ │
│ Split │• Fallback │ OpenAI Comp)│
│• Metadata│ Logic │• Rerank │
│• Upload │ │ (Qwen3) │
│ API │ │• Stream │
│ │ │ Response │
└────┬─────┴──────┬───────┴───────┬───────┘
│ │ │
┌────▼────┐ ┌────▼──────┐ ┌──────▼──────┐
│ MySQL │ │ Qdrant │ │ External │
│(Metadata)│ │(Vector DB)│ │ APIs │
│ │ │ │ │ │
│• Docs │ │• Dense │ │• DashScope │
│• Users │ │ Vectors │ │• DeepSeek │
│• Sessions│ │• Sparse │ │• OpenAI │
│• History │ │ (BM42) │ │ Compatible │
└─────────┘ └───────────┘ └─────────────┘
Tech Stack
| Component | Technology | Description |
|---|---|---|
| Backend Framework | FastAPI (Python 3.11+) | High-performance async web framework |
| Vector Database | Qdrant | Hybrid retrieval with dense + sparse vectors |
| Relational Database | MySQL 8.0 | Document metadata, users, sessions |
| Embedding Model | DashScope text-embedding-v4 / Sentence-Transformers | Cloud API or local models |
| LLM Service | DeepSeek / OpenAI Compatible | Streaming output, multi-turn chat |
| Rerank Model | Qwen3-Rerank (optional) | Improves retrieval relevance |
| Document Parsing | PyPDF2, docx2txt, LangChain | Multi-format processing |
| Web Scraping | httpx + BeautifulSoup | Built-in crawler, no dependencies |
| Containerization | Docker + Docker Compose | One-click deployment |
Troubleshooting
Issue: Preview cards not showing
Solution: Check browser console for errors. Ensure initKnowledgeGraph() is called after DOM ready.
Issue: Nodes not centered
Solution: Hard refresh page (Cmd+Shift+R). Clear browser cache if needed.
Issue: Cannot drag/zoom in modal
Solution: Verify setInteractive(true) is called for fullscreen visualizer. Check console logs.
Issue: Service won't start
Solution:
# Check logs
docker-compose logs -f app
# Clean and restart
docker-compose down -v
docker-compose up -d
Issue: Document upload fails
Solution:
- Check file format (PDF, DOCX, TXT, MD only)
- Check file size (default limit: 10MB)
- Review application logs:
docker-compose logs -f app
Issue: No retrieval results
Solution:
- Confirm documents are uploaded and vectorized
- Try different query terms
- Lower
QDRANT_DENSE_DEFAULT_THRESHOLDvalue
Issue: LLM call fails
Solution:
# Check API key configuration
cat .env | grep API_KEY
# Test API connectivity
curl -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
https://api.deepseek.com/v1/chat/completions \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"test"}]}'
Performance Tips
- Limit Node Count: Use smaller limits for previews (50-80 nodes)
- Cache Data: Reuse fetched data instead of reloading
- Debounce Resize: Add debounce to window resize handler
- Reduce Iterations: Lower
iterationsininitForceLayout()for faster load (default: 150) - Optimize Rendering: Skip rendering during rapid mouse movements
Browser Compatibility
- ✅ Chrome 90+
- ✅ Firefox 88+
- ✅ Safari 14+
- ✅ Edge 90+
Requires:
- Canvas 2D API
- CSS backdrop-filter
- ES6+ JavaScript features
Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Submit a pull request
Support
For issues and questions:
- GitHub Issues: https://github.com/zzlzzlzzl15/Memora/issues
- Email: support@memora.dev
- Documentation: https://github.com/zzlzzlzzl15/Memora/blob/main/personal_knowledge_base/README.md
Acknowledgments
- Inspired by Obsidian graph view
- Built for Memora personal knowledge base
- Uses force-directed layout algorithm similar to D3.js force simulation
- References RAG-Anything for multimodal RAG architecture
Made with ❤️ by zzlzzlzzl15
Memora - Your Personal AI Knowledge Base
Related skills
Read and write Excel workbooks, worksheets, ranges, tables, and charts in OneDrive through Microsoft Graph with managed OAuth.
Write, debug, and tune Playwright specs with locator strategy, trace diagnosis, and CI-aware timeouts.
More from zzlzzlzzl15
Browse all skillsSelf-hosted personal AI knowledge base with vector search, hybrid retrieval, and an Obsidian-style knowledge graph.