https://github.com/falkordb/mem0-falkordb
FalkorDB graph store plugin for Mem0
https://github.com/falkordb/mem0-falkordb
agentic-memory falkordb long-term-memory mem0
Last synced: 4 months ago
JSON representation
FalkorDB graph store plugin for Mem0
- Host: GitHub
- URL: https://github.com/falkordb/mem0-falkordb
- Owner: FalkorDB
- License: mit
- Created: 2026-02-18T21:49:10.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-23T09:31:56.000Z (4 months ago)
- Last Synced: 2026-02-24T00:41:53.820Z (4 months ago)
- Topics: agentic-memory, falkordb, long-term-memory, mem0
- Language: Python
- Homepage: https://www.falkordb.com
- Size: 375 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
[](https://github.com/falkordb/mem0-falkordb)
[](https://badge.fury.io/py/mem0-falkordb)
[](https://codecov.io/gh/falkordb/mem0-falkordb)
[](https://github.com/orgs/FalkorDB/discussions)
[](https://discord.gg/ErBEqN9E)
# mem0-falkordb
[](https://app.falkordb.cloud)
FalkorDB graph store plugin for [Mem0](https://github.com/mem0ai/mem0). Adds FalkorDB as a graph memory backend **without modifying any Mem0 source code**.
## Installation
```bash
pip install mem0-falkordb
```
You also need Mem0 installed separately:
```bash
pip install mem0ai
```
## Quick Start
```python
from mem0_falkordb import register
register()
from mem0 import Memory
config = {
"graph_store": {
"provider": "falkordb",
"config": {
"host": "localhost",
"port": 6379,
"database": "mem0",
},
},
# Add your LLM and embedder config as usual
"llm": {
"provider": "openai",
"config": {"model": "gpt-4o-mini"},
},
}
m = Memory.from_config(config)
m.add("I love pizza", user_id="alice")
results = m.search("what does alice like?", user_id="alice")
```

## Demo
See the [`demo/`](demo/) directory for a comprehensive multi-user demonstration showcasing:
- **Graph-structured memory** — relationships between entities, not just flat facts
- **Per-user graph isolation** — each user gets their own FalkorDB graph
- **Context-aware retrieval** — semantic search with vector embeddings
- **Memory evolution** — updates and conflict resolution
- **Visual inspection** — see the actual graph structure
```bash
docker run --rm -p 6379:6379 falkordb/falkordb:latest
cd demo
uv sync
export OPENAI_API_KEY='your-key-here'
uv run python demo.py
```
See [demo/README.md](demo/README.md) for complete instructions.
## Configuration
| Parameter | Type | Default | Description |
|-------------|--------|-------------|--------------------------------------------|
| `host` | str | `localhost` | FalkorDB server host |
| `port` | int | `6379` | FalkorDB server port |
| `database` | str | `mem0` | Graph name prefix (each user gets `{database}_{user_id}`) |
| `username` | str | `None` | Authentication username (optional) |
| `password` | str | `None` | Authentication password (optional) |
| `base_label`| bool | `True` | Use `__Entity__` base label |
### Per-User Graph Isolation
Each user automatically gets their own isolated FalkorDB graph (e.g. `mem0_alice`, `mem0_bob`). This leverages FalkorDB's native multi-graph support and provides:
- **Natural data isolation** — no user_id filtering needed in Cypher queries
- **Simpler, faster queries** — no WHERE clauses on user_id
- **Easy cleanup** — `delete_all` simply drops the user's graph
## Running FalkorDB
Using Docker:
```bash
docker run --rm -p 6379:6379 falkordb/falkordb
```
## How It Works
This plugin uses Python's runtime patching to register FalkorDB into Mem0's existing factory system:
1. `GraphStoreFactory.provider_to_class` gets a new `"falkordb"` entry
2. `GraphStoreConfig` is patched to accept `FalkorDBConfig`
3. A `MemoryGraph` class translates Mem0's graph operations to FalkorDB-compatible Cypher
### Key Cypher Translations
| Neo4j | FalkorDB |
|------------------------------------------|---------------------------------------------------|
| `elementId(n)` | `id(n)` |
| `vector.similarity.cosine()` | `db.idx.vector.queryNodes()` procedure |
| `db.create.setNodeVectorProperty()` | `SET n.embedding = vecf32($vec)` |
| `CALL { ... UNION ... }` subqueries | Separate outgoing + incoming queries |
## Development
```bash
git clone
cd mem0-falkordb
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
```