Comparison · Updated May 2026

HeurChain vs Zep: different shapes, different jobs.

Zep gives you a temporal knowledge graph with explicit fact-validity windows. HeurChain gives you sub-50ms hybrid retrieval with no Neo4j. Both are credible choices — the right one depends on your domain. Here's how they actually differ.

Methodology — read this first

How we measured this comparison

Dataset: LongMemEval-S (ICLR 2025), 500 questions across 6 reasoning categories.

HeurChain numbers: measured on the heurchain-benchmarks harness (sharded_bench.py and multitenant_bench.py) against the broker in the main repo. Both are public; you can rerun the whole thing.

Zep numbers: from arXiv 2501.13956 (Zep / Graphiti) where available; left blank otherwise. We do not fabricate competitor numbers.

What we measured: retrieval R@k, MRR, NDCG@10, p50/p95 latency, and end-to-end QA accuracy with three independent judge models.

Cross-judge QA validation (May 2026): We ran the same retrieved facts through three judges from independent model families — full results published here. Mean QA accuracy (6 categories × 30 tasks): Local 14B 32.8%, DeepSeek V3.1 671B 31.7%, Kimi K2.6 28.3%. The two frontier judges agreed with each other on 87.8% of per-question verdicts, validating each as an independent judge. The local-14B mean was confirmed directionally correct within 4.5 pp of frontier judges — no inflation at the headline level.

What the per-category swings showed: the cross-judge run exposed a v2 fact-extraction quality bottleneck (specific entity-action assignments stripped to meta-summaries) on multi-session, knowledge-update, and temporal-reasoning categories. Where extraction preserves the answer-bearing detail, all three judges converge. Where it doesn't, the local 14B "won" by confabulating answers the local 14B judge then accepted — frontier judges honestly refused. Smoking-gun example in the writeup.

What we still owe: a v3 extraction prompt that preserves entity-action-value triples, and a closed-weight frontier judge run (Claude Sonnet 4.6 via Anthropic API) for additional independent validation. Both queued.

Bias disclosure: this is our internal harness, written by us. Of course it favors what we built well. The cross-judge run is the way we expose that bias and report it honestly. If you're evaluating both, the most reliable move is to run them on your data.

Retrieval p95 (fair comparison)
~8×
HeurChain 20.5 ms p95 under multi-tenant Docker load vs roughly 300 ms for Zep/Graphiti's published numbers (temporal-KG traversal in the hot path). Numbers from different harnesses — see methodology.
Inspectable
Open
Harness + every benchmark number in a public repo. Reproduce or refute on your own data.
Architecture
No Neo4j
HeurChain self-host is one Go binary + Redis + SQLite. Zep self-host is Neo4j + Postgres + Zep services. That's an ops profile choice, not a quality judgment.

Retrieval-only metrics on LongMemEval-S

Zep's published evaluations focus on task accuracy with an LLM judge, not retrieval R@k. We don't have Zep R@k numbers to compare — fabricating them would be exactly the kind of "trust me bro" benchmarking we're trying to avoid.

Where this comparison gets muddy: Zep publishes task-completion accuracy (DMR / LongMemEval-style with an LLM judge), not retrieval R@k. Mixing the two would mislead. On retrieval-only metrics our numbers are what we measured; on Zep's published axes, Graphiti is genuinely strong at temporal reasoning. They're solving overlapping but different problems.

Metric HeurChain (dense) HeurChain (hybrid α=0.9) Zep (Graphiti)
R@10.5430.542
R@50.9390.933
R@100.9720.978
MRR0.9110.913
NDCG@100.9110.914

P95 retrieval latency in context

Latencies from different harnesses on different deployment topologies — not strictly apples-to-apples. The multi-tenant Docker number is the closest analog to what a SaaS would actually serve. The in-process number shows what the algorithm itself is capable of with the network removed.

System / configuration P95 latency Source What it actually measures
HeurChain — multi-tenant load (Docker, 10 tenants concurrent)20.5 msThis benchmarkClosest to production SaaS scenario
Zep / Graphiti~300 msarXiv 2501.13956Temporal KG traversal in critical path
HeurChain — dense, in-process35 msThis benchmarkAlgorithm-only ceiling; no network
HeurChain — BM25 only4.6 msThis benchmarkKeyword-only path; useful for hot queries
Mem0 (reference)200 msMem0 paper Table 1Search latency; stack-specific
LangMem (reference)59,820 msMem0 paper Table 1Vector scan; broken at LongMemEval scale

Architecture comparison

HeurChainZep
Retrieval methodBM25 + dense (bge-m3) + RRF (tunable α)Temporal knowledge graph (Graphiti) — episodic + semantic node search
Storage backendRedis (vectors + BM25) + SQLite (metadata)Neo4j (graph) + Postgres + embedding store
Temporal awarenessSequence-tagged facts (on roadmap)First-class temporal facts with validity periods (Graphiti's whole point)
Multi-tenant modelPer-tenant namespace + agent_id sub-isolation; published zero-leak verificationPer-graph isolation; multi-tenant via Neo4j namespace setup
Self-hosted optionSingle Go binary + Redis + SQLiteDocker Compose: Neo4j + Postgres + Zep services
API surfaceREST + MCP SSE — auto-discovered by Claude Code, ChatGPT AppsPython / TypeScript SDK + REST

When Zep is the better choice

We're not going to pretend HeurChain wins on every dimension. These are real cases where Zep is the better fit:

  1. You need first-class temporal fact validity. If your domain is dense with facts that decay or get superseded (medical records, contract terms, evolving entity relationships), Graphiti's temporal-KG model is the right architecture. It's not over-engineering when the problem genuinely requires it.
  2. You want explicit graph traversal. Multi-hop entity queries ("who reported to whose manager in Q3?") are Graphiti's home turf. HeurChain returns ranked passages; Graphiti returns paths.
  3. You're already running Neo4j in production. If Neo4j is in your stack and your team operates it well, Zep slots in cleanly. The operational overhead that's a downside for greenfield teams is a non-issue for you.
  4. You want an established academic backing. The Graphiti paper is peer-reviewed and the team has been publishing in this space for some time. If procurement values that, it's a real factor.

When HeurChain is the better choice

  1. Most agent memory queries are "give me relevant context". Not graph traversal. If your queries are "user said X recently, what related prior context exists," hybrid retrieval is the right tool. Temporal-KG overhead is wasted compute here.
  2. Latency-sensitive agent loops. ~8× faster on retrieval. Compounds when agents hit memory many times per turn.
  3. You want one binary, not a Neo4j+Postgres+services stack. Single Go binary + Redis + SQLite. €20/mo CPX31. Done.
  4. Multi-tenant SaaS with auditable isolation. Per-tenant namespacing with published zero-leak verification across 90 probe queries.

Cost — for reference, not the headline

Most readers should pick on architecture fit, not price. Zep Cloud has a free tier with limits and Hobby/Pro paid tiers; Graphiti is Apache-2.0 open source. HeurChain self-host is MIT-licensed. The numbers below exist so you can see them, not because we think they should drive your decision.

If you...HeurChainZep
Hobby / kicking the tiresFree self-host (MIT)Free tier (Zep Cloud) or self-host Graphiti (Apache 2.0)
Solo developer, managed$5/mo (Solo)Zep Cloud Hobby / Pro tiers
Team, shared workspace$49.99/mo (Workgroup)Zep Cloud team pricing
Enterprise — SOC2, SAMLCustomCustom

Both have free options — Zep Cloud has a free tier, Graphiti is Apache-2.0 open source. If you're already running Neo4j in production, Zep self-host is essentially incremental. If you're not, the operational footprint matters.

Reproduce these numbers yourself

  1. Clone heurchain-benchmarks and the main HeurChain repo; pull the LongMemEval-S dataset (instructions in the README).
  2. Run python3 sharded_bench.py for the single-tenant baseline; python3 multitenant_bench.py --mode load --max-tenants 10 for the Docker multi-tenant number.
  3. Re-run on your data — your conversation logs, your documents. Public benchmarks correlate with real workloads, but they're not the same thing.
  4. If our numbers don't reproduce on your hardware, open an issue. We'll fix or correct.

If HeurChain is a fit, the easiest start is the Solo plan.

Or self-host the same binary for free. If Zep fits your use case better, use Zep — we'd rather you pick the right tool.

Also compare: vs Mem0 vs Zep vs Letta vs Cognee