Install
openclaw skills install @zzlzzlzzl15/memora-knowledge-baseMemora — Personal AI Knowledge Base with interactive knowledge graph visualization. A self-hosted system for managing, retrieving, and querying your personal knowledge assets using vector search, hybrid retrieval, and LLM-driven intelligent Q&A. Features document upload/processing, semantic search, AI chat sessions, web scraping, and Obsidian-style knowledge graph visualization with force-directed layout. Use when: user wants to build a personal knowledge base, manage documents, perform semantic search, have AI-powered conversations about their knowledge, visualize document/entity relationships, or integrate knowledge management into their OpenClaw workflow.
openclaw skills install @zzlzzlzzl15/memora-knowledge-baseMemora 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.
_ensure_consistency_with_mysql() for pre-query validationget_document_graph, get_entity_graph, get_full_graph, get_stats)delete_document_graph() with detailed logging and orphan entity cleanupPOST /api/v1/documents/knowledge-graph/sync for manual consistency checksdocument_id property for frontend-backend compatibilityopenclaw skills install @zzlzzlzzl15/memora
# Clone repository
git clone https://github.com/zzlzzlzzl15/Memora.git
cd Memora/personal_knowledge_base
# Run installation script
./install.sh
# 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
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
| 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 |
| 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 |
┌─────────────────────────────────────────┐
│ 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 │
└─────────┘ └───────────┘ └─────────────┘
| 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 |
Solution: Check browser console for errors. Ensure initKnowledgeGraph() is called after DOM ready.
Solution: Hard refresh page (Cmd+Shift+R). Clear browser cache if needed.
Solution: Verify setInteractive(true) is called for fullscreen visualizer. Check console logs.
Solution:
# Check logs
docker-compose logs -f app
# Clean and restart
docker-compose down -v
docker-compose up -d
Solution:
docker-compose logs -f appSolution:
QDRANT_DENSE_DEFAULT_THRESHOLD valueSolution:
# 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"}]}'
iterations in initForceLayout() for faster load (default: 150)Requires:
Contributions welcome! Please:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)For issues and questions:
Made with ❤️ by zzlzzlzzl15
Memora - Your Personal AI Knowledge Base