Agent-Oriented Knowledge Management Platform
Unified knowledge base, episodic memory, and generative synthesis.
Heta is an all-in-one knowledge infrastructure for AI agents. It gives agents a place to store, retrieve, and accumulate knowledge across three complementary layers:
- HetaDB — ingest documents (PDF, DOCX, PPTX, XLS/XLSX, images, …), extract knowledge graphs, and query with five retrieval strategies from naive vector search to multi-hop reasoning.
- HetaMem — a dual-layer memory system: fast episodic recall (MemoryVG) for conversation facts, and a long-term knowledge graph (MemoryKB) that grows with the agent.
- HetaGen — knowledge-base-driven structured content generation: table synthesis, tag-tree construction, and Text-to-SQL. (early stage)
HetaDB
- Ingests PDF, DOCX, PPTX, XLS/XLSX, images, HTML, Markdown, ZIP archives
- LLM-powered knowledge graph extraction with deduplication (Union-Find merging)
- Five query strategies:
naive·rerank(BM25 + vector + cross-encoder) ·rewriter·multihop(ReAct) ·direct - Inline citations linking answers back to source documents
HetaMem
- MemoryVG — LLM auto-extracts facts from conversations; instant semantic search; full CRUD + history audit
- MemoryKB — LightRAG knowledge graph that grows as the agent learns;
hybrid/local/globalretrieval modes - Scope isolation per
user_id/agent_id/run_id
HetaGen (early stage)
- Generate structured tables by querying the knowledge base
- Tag-tree construction from topics
- Text-to-SQL over generated tables
HetaDB and HetaMem also expose optional MCP servers (ports 8012 / 8011) for direct integration with MCP-compatible clients such as Claude Desktop and Cursor.
Prerequisites: Docker ≥ 24.0 · Docker Compose ≥ 2.20 · DashScope and SiliconFlow API keys
git clone https://github.com/HetaTeam/Heta.git
cd Heta
# Chinese API providers (DashScope + SiliconFlow)
cp config.example.zh.yaml config.yaml
# International API providers (OpenAI + Gemini)
# cp config.example.yaml config.yamlOpen config.yaml and fill in your API keys:
providers:
dashscope:
api_key: "YOUR_DASHSCOPE_KEY" # required
siliconflow:
api_key: "YOUR_SILICONFLOW_KEY" # requireddocker-compose up -dFirst run pulls images and builds the stack (~10–20 min). Verify:
docker-compose ps # all services: healthy
curl localhost:8000/health| URL | Description |
|---|---|
| http://localhost | Heta web UI |
| http://localhost:8000/docs | REST API (Swagger) |
| http://localhost:7474 | Neo4j browser |
| http://localhost:9001 | MinIO console |
docker-compose down # stop, keep data
docker-compose down -v # stop and delete all volumesPrerequisites: Python 3.10 · PostgreSQL · Milvus · Neo4j
# 1. Install backend
conda create -n heta python=3.10 -y && conda activate heta
pip install -e .
# 2. Build frontend
cd heta-frontend && npm install && npm run build && cd ..
# 3. Run (unified — all modules on one port)
PYTHONPATH=src python src/main.py # → http://localhost:8000Run each module independently:
export PYTHONPATH=/path/to/Heta/src
python src/hetadb/api/main.py # HetaDB → :8001
python src/hetagen/api/main.py # HetaGen → :8002
python src/hetamem/api/main.py # HetaMem → :8003
# MCP servers
HETAMEM_BASE_URL=http://localhost:8000 python src/hetamem/mcp/server.py # → :8011
HETADB_BASE_URL=http://localhost:8000 python src/hetadb/mcp/server.py # → :8012Port reference:
| Service | Port |
|---|---|
| Heta unified API | 8000 |
| HetaDB (standalone) | 8001 |
| HetaGen (standalone) | 8002 |
| HetaMem (standalone) | 8003 |
| HetaMem MCP | 8011 |
| HetaDB MCP | 8012 |
| PostgreSQL | 5432 |
| Milvus | 19530 |
| Neo4j Browser / Bolt | 7474 / 7687 |
| MinIO S3 / Console | 9000 / 9001 |
Heta exposes two integration layers — use one or both:
MCP gives your agent direct tool-call access to HetaDB and HetaMem. Add the following to your MCP client config (e.g. Claude Desktop ~/.claude.json):
{
"mcpServers": {
"hetamem": { "type": "http", "url": "http://localhost:8011/mcp/" },
"hetadb": { "type": "http", "url": "http://localhost:8012/mcp/" }
}
}The agent can now call HetaDB and HetaMem tools directly without any additional setup.
The bundled skill teaches the agent when and how to use each layer — which system to query first, how to store findings, and the correct three-step retrieval order (MemoryVG → HetaDB → MemoryKB).
skills/querying-knowledge-and-memory/SKILL.md
Load it in your agent system!
Datasets and knowledge bases are created and managed through the Heta web UI (http://localhost):
- Create a dataset and upload your documents (PDF, DOCX, HTML, images, …)
- Create a knowledge base and link it to your dataset
- Trigger parsing — Heta extracts a knowledge graph and embeddings (async)
Once indexed, agents query the knowledge base via the chat API:
# List available knowledge bases
curl http://localhost:8000/api/v1/hetadb/files/knowledge-bases
# Query a knowledge base
curl -X POST http://localhost:8000/api/v1/hetadb/chat \
-H "Content-Type: application/json" \
-d '{
"query": "What are the main contributions?",
"kb_id": "research-kb",
"user_id": "agent",
"query_mode": "rerank"
}'
# → { "response": "...", "citations": [...] }Available query_mode values: naive · rerank · rewriter · multihop · direct
# Store facts extracted from a conversation
curl -X POST http://localhost:8000/api/v1/hetamem/vg/add \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "I prefer concise Python examples."},
{"role": "assistant", "content": "Noted."}
],
"agent_id": "agent"
}'
# Recall relevant facts
curl -X POST http://localhost:8000/api/v1/hetamem/vg/search \
-H "Content-Type: application/json" \
-d '{"query": "user coding preferences", "agent_id": "agent"}'
# → { "results": [{"memory": "Prefers concise Python examples", "score": 0.91}] }# Insert knowledge into the agent's long-term graph (async — ~200s to index)
curl -X POST http://localhost:8000/api/v1/hetamem/kb/insert \
-F "query=Transformer models use self-attention to process sequences in parallel."
# Query the knowledge graph
curl -X POST http://localhost:8000/api/v1/hetamem/kb/query \
-H "Content-Type: application/json" \
-d '{"query": "How do transformers handle long-range dependencies?", "mode": "hybrid"}'
# → { "final_answer": "..." }The bundled querying skill encodes the recommended retrieval workflow — when to use each layer, in what order, and what to store back. Load it into any skill-aware agent system and it will orchestrate HetaDB, MemoryVG, and MemoryKB automatically.
Three-step retrieval order the skill enforces:
1. MemoryVG — check fast personal memory first (~100 ms)
2. HetaDB — deep retrieval from uploaded documents (1–3 s)
3. Store back — cache finding in MemoryVG, or insert into MemoryKB if worth accumulating
Layer selection guide:
| Layer | Best for | Typical latency |
|---|---|---|
| MemoryVG | Facts already seen; cross-session cache | ~100 ms |
| HetaDB | Deep retrieval from uploaded documents | 1–3 s |
| MemoryKB | Agent's accumulating knowledge graph | ~200 s to index · ~1 s to query |
Heta/
├── config.example.yaml # Config template (international: OpenAI / Gemini)
├── config.example.zh.yaml # Config template (domestic: DashScope / SiliconFlow)
├── docker-compose.yml # Full-stack deployment
├── Dockerfile
├── pyproject.toml
├── docs/ # API reference and design documents
├── heta-frontend/ # Web UI
├── skills/ # Agent skills
│ └── querying-knowledge-and-memory/
└── src/
├── main.py # Unified entry point (port 8000)
├── common/ # Shared utilities: logging, config, LLM client, tasks
├── hetadb/ # Knowledge-base ingestion & multi-strategy chat
├── hetagen/ # Table and tag-tree generation
└── hetamem/ # Agent memory: MemoryKB + MemoryVG + MCP server
Heta is built on the shoulders of excellent open-source projects:
- MinerU — the document parsing engine powering HetaDB ingestion
- mem0 — the episodic memory engine powering MemoryVG
- LightRAG — the knowledge graph engine powering MemoryKB
We are grateful to their authors for making this work possible.
HetaMem draws from MemVerse, our research framework for multimodal lifelong agent memory. If you are interested in agent memory, we recommend checking it out.
AGPL-3.0 — see LICENSE for details.
This project incorporates code from the following open-source projects:
