> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hystersis.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mem0 v3 Reality Check

> Engineering comparison between Hystersis and Mem0 v3

# Mem0 v3 Reality Check

Hystersis is not at verified Mem0 v3 parity today. The strongest Hystersis advantage is a self-hosted, queryable Neo4j graph paired with Qdrant and a broad Go API surface. Mem0 v3 is ahead on validated retrieval quality, single-pass extraction, entity linking ergonomics, SDK maturity, and public benchmark evidence.

This page is intentionally blunt. Do not market Hystersis as outperforming Mem0 until the benchmark suite in this repository reproduces better numbers on public datasets.

## Current Standing

| Area                | Mem0 v3                                         | Hystersis today                                                                                                                               | Status                                                                                 |
| ------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Extraction          | Single-pass ADD-only extraction                 | LLM processing plus async compression; not fully ADD-only                                                                                     | Behind                                                                                 |
| Entity linking      | Built-in entity linking, no graph dependency    | Real Neo4j entities and memory links after write                                                                                              | Competitive, more ops-heavy                                                            |
| Retrieval           | Semantic + BM25 + entity fusion                 | Semantic, BM25 adapter, graph spreading activation                                                                                            | Partially competitive                                                                  |
| Queryable graph     | Removed from OSS v3; entity linking replaces it | Neo4j graph remains queryable                                                                                                                 | Hystersis advantage                                                                    |
| Benchmarks          | Published LoCoMo, LongMemEval, BEAM results     | Local benchmark runner reports hit rate, MRR, latency, ingest/search/scoring errors, and publishability                                       | Behind, but now measurable                                                             |
| SDKs                | Mature Python and TypeScript SDKs               | Python/Node SDKs exist; install and endpoint coverage still need hardening                                                                    | Behind                                                                                 |
| Async writes        | Default async memory processing                 | Async compression pipeline; memory create still graph-first                                                                                   | Behind                                                                                 |
| Multi-tenancy       | Mature scoping semantics                        | Hard isolation: auth-bound tenant, spoof rejection, per-tenant Qdrant collections, Tenant CRUD/membership APIs, per-tenant rate limit buckets | Competitive (isolation tests green; membership store is in-process until Neo4j-backed) |
| Enterprise controls | Platform/enterprise offering                    | RBAC, audit, SSO code exists                                                                                                                  | Needs end-to-end product proof                                                         |

## What Hystersis Can Honestly Claim

* Self-hosted graph memory with Neo4j and Qdrant.
* Queryable graph relationships, not only entity-score boosting.
* Memory CRUD, sessions, API keys, RBAC, audit logging, webhooks, skills, sources, and wiki APIs.
* Deterministic Qdrant point IDs tied to memory IDs.
* Extracted entity materialization into graph nodes and memory-entity links.
* Weighted semantic, BM25, and entity rank fusion with signal attribution.
* Reproducible benchmark reports that refuse to mark unjudged runs as publishable.
* Experimental spreading activation over graph relationships.

## What Hystersis Must Not Claim Yet

* Better accuracy than Mem0 v3.
* 97 percent accuracy retention in production.
* 85-90 percent compression advantage over Mem0.
* Proven +23 percent multi-hop improvement.
* Full Supermemory-style connector parity.
* Fully validated enterprise SSO product flow.

## Gap List

| Priority | Gap                        | Required proof                                                                                                                                                                                                                                    |
| -------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| P0       | Public benchmark runner    | LLM-judged LoCoMo, LongMemEval, and BEAM-style reports committed under `benchmarks/` or `docs/benchmarks/`                                                                                                                                        |
| P0       | ADD-only extraction mode   | New facts appended without destructive merge; temporal contradictions preserved                                                                                                                                                                   |
| P0       | Retrieval fusion           | Semantic, BM25, entity, graph, temporal, and reranker signals fused with explainable scores                                                                                                                                                       |
| P0       | Entity ingestion invariant | Every memory with extracted entities links to graph entities before vector indexing                                                                                                                                                               |
| P1       | SDK parity                 | Python and Node SDKs pass smoke tests against local and deployed API                                                                                                                                                                              |
| P1       | Async add mode             | API returns quickly while enrichment, compression, and indexing finish in background                                                                                                                                                              |
| P1       | Connector parity           | Google Drive, Notion, GitHub, files, URLs, and attachments tested through sources APIs                                                                                                                                                            |
| P1       | Tenant isolation           | Search, get, batch, graph, and source endpoints have cross-tenant negative tests — **in progress**: auth spoof blocked, search/get/list filter by tenant, per-tenant Qdrant collections, `/tenants` APIs; expand batch/graph/source leakage tests |

## Recent Core Hardening

The memory write path now persists the primary extracted entity back to the memory node and sends real graph entity IDs into Qdrant metadata. Qdrant no longer defaults `entity_id` to the memory ID, which keeps memory IDs and graph entity IDs distinct.

The benchmark runner now preserves dataset memory IDs during ingestion, reports `memory_hit_rate` and `mrr`, and marks results as non-publishable unless every benchmark question is scored by a configured LLM judge with zero ingest/search errors.

This is a product-critical invariant for graph-native retrieval:

```text theme={null}
memory.content
  -> entity extraction
  -> Neo4j Entity nodes
  -> MEMORY_OF links
  -> memory.EntityID / metadata.entity_ids
  -> Qdrant payload memory_id + entity_id + entity_ids
  -> hybrid / spreading retrieval
```

## Benchmark Command

```bash theme={null}
go run ./cmd/benchmark --mock --suite retrieval --dataset locomo
```

Mock runs are useful for checking benchmark plumbing only. Competitive claims require a live store, an evaluator LLM, and committed benchmark output.

## External References

* Mem0 Memory Evaluation: [https://docs.mem0.ai/core-concepts/memory-evaluation](https://docs.mem0.ai/core-concepts/memory-evaluation)
* Mem0 OSS v2 to v3 migration: [https://docs.mem0.ai/migration/oss-v2-to-v3](https://docs.mem0.ai/migration/oss-v2-to-v3)
* Mem0 Graph Memory: [https://docs.mem0.ai/open-source/features/graph-memory](https://docs.mem0.ai/open-source/features/graph-memory)
