mirror of MemPalace/mempalace - best-benchmarked open-source AI memory system
Go to file
Igor Lins e Silva 51702e9f0f feat(embedding): add embeddinggemma-300m ONNX as opt-in multilingual embedder
MemPalace's default embedder (all-MiniLM-L6-v2) is English-only-trained.
Cross-lingual cosine similarity on parallel-translated text averages 0.35
across DE/FR/HI/IT/KO/RU — vs 0.88 for embeddinggemma-300m ONNX (q8) with
the semantic-similarity prefix. RU is the worst at 0.17, meaning a Russian
memory and its identical English translation embed to nearly orthogonal
vectors. Multilingual users effectively cannot retrieve their own memories.

This commit adds embeddinggemma-300m as an opt-in alternative:

* New EmbeddinggemmaONNX class implementing ChromaDB's EF protocol.
  Lazy-downloads model_quantized.onnx (~300 MB) via huggingface_hub on
  first use; cached under ~/.cache/huggingface/. Applies the sim prefix,
  runs onnxruntime inference, truncates to 384 dims via Matryoshka
  (MRL), L2-normalizes.

* MRL truncation to 384d is intentional: matches MiniLM's vector width
  so collection schemas don't change, and validation showed 384d MRL
  actually outperforms full 768d on these similarity tasks (0.893 vs
  0.881 avg) — known property of MRL training.

* MEMPALACE_EMBEDDING_MODEL env (default "minilm" for back-compat).
  Switching models on an existing palace requires re-embedding —
  ChromaDB rejects reads with a mismatched EF name. Run
  `mempalace repair rebuild-index` after changing the value.

* New optional dep group: pip install mempalace[multilingual]
  Adds huggingface_hub + tokenizers + numpy. Core deps unchanged.

ONNX q8 validated lossless vs the Ollama gguf benchmarked previously
(max delta 0.002 cos across 240 parallel pairs).
2026-05-14 04:41:00 -03:00
.agents/plugins feat: add Codex plugin support with hooks, commands, and documentation 2026-04-08 19:10:44 +03:00
.claude-plugin chore(release): 3.3.5 2026-05-09 21:11:13 -03:00
.codex-plugin chore(release): 3.3.5 2026-05-09 21:11:13 -03:00
.devcontainer feat: add VSCode devcontainer matching CI environment 2026-04-14 15:10:23 -03:00
.github feat(docs): wire MEMPALACE_DOCS_GA_ID into deploy and harden gtag snippet 2026-05-12 18:51:47 -03:00
assets
benchmarks fix(benchmarks): default --num-ctx to 4096 for apples-to-apples comparison 2026-05-14 01:27:53 -03:00
docs docs: RFC 002 — source adapter plugin specification 2026-04-17 23:42:46 -07:00
examples docs(install): recommend uv as the package manager 2026-05-08 01:38:00 -03:00
hooks fix(hooks): consolidate transcript ingest, harden shell parsers (#1231 review) 2026-04-27 02:26:53 -03:00
integrations/openclaw docs(install): recommend uv as the package manager 2026-05-08 01:38:00 -03:00
landing new landing page 2026-04-16 21:46:03 -03:00
mempalace feat(embedding): add embeddinggemma-300m ONNX as opt-in multilingual embedder 2026-05-14 04:41:00 -03:00
tests Merge develop into main for v3.3.5 release 2026-05-10 01:05:36 -03:00
tools docs(install): recommend uv as the package manager 2026-05-08 01:38:00 -03:00
website feat(docs): wire MEMPALACE_DOCS_GA_ID into deploy and harden gtag snippet 2026-05-12 18:51:47 -03:00
.gitignore chore: gitignore .envrc for direnv users 2026-05-06 04:36:39 -03:00
.pre-commit-config.yaml docs+tests: fix CI after README slim (#875) 2026-04-14 21:59:55 -03:00
.python-version docs(install): recommend uv as the package manager 2026-05-08 01:38:00 -03:00
AGENTS.md docs: add CLAUDE.md + mission/principles to AGENTS.md (#720) 2026-04-12 15:28:01 -07:00
CHANGELOG.md docs(changelog): correct KG date validator entry for 3.3.5 2026-05-10 01:35:21 -03:00
CLAUDE.md docs(install): recommend uv as the package manager 2026-05-08 01:38:00 -03:00
CONTRIBUTING.md Merge pull request #1385 from sjhddh/docs/contributor-git-identity-1317 2026-05-09 01:31:05 -03:00
LICENSE
MISSION.md docs: add CLAUDE.md + mission/principles to AGENTS.md (#720) 2026-04-12 15:28:01 -07:00
README.md chore(release): 3.3.5 2026-05-09 21:11:13 -03:00
ROADMAP.md docs: add ROADMAP.md — v3.1.1 stability patch and v4.0.0-alpha plan 2026-04-11 22:05:00 -07:00
SECURITY.md docs: tighten SECURITY.md with real version policy and GHPVR-only channel 2026-04-14 11:50:00 -03:00
openarena-claim.txt chore: add OpenArena owner claim verification file 2026-04-24 23:19:29 -03:00
pyproject.toml feat(embedding): add embeddinggemma-300m ONNX as opt-in multilingual embedder 2026-05-14 04:41:00 -03:00
uv.lock feat(embedding): add embeddinggemma-300m ONNX as opt-in multilingual embedder 2026-05-14 04:41:00 -03:00

README.md

[!CAUTION] Scam alert. The only official sources for MemPalace are this GitHub repository, the PyPI package, and the docs site at mempalaceofficial.com. Any other domain — including mempalace.tech — is an impostor and may distribute malware. Details and timeline: docs/HISTORY.md.

[!IMPORTANT] 🚨 Claude Code sessions expire in 30 days w/out auto-save hooks wired! Read this →

MemPalace

MemPalace

Local-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.


What it is

MemPalace stores your conversation history as verbatim text and retrieves it with semantic search. It does not summarize, extract, or paraphrase. The index is structured — people and projects become wings, topics become rooms, and original content lives in drawers — so searches can be scoped rather than run against a flat corpus.

The retrieval layer is pluggable. The current default is ChromaDB; the interface is defined in mempalace/backends/base.py and alternative backends can be dropped in without touching the rest of the system.

Nothing leaves your machine unless you opt in.

Architecture, concepts, and mining flows: mempalaceofficial.com/concepts/the-palace.


Install

We recommend uvuv tool install puts the mempalace CLI in an isolated environment on your PATH:

uv tool install mempalace
mempalace init ~/projects/myapp

If you prefer pip, pip install mempalace still works.

Quickstart

# Mine content into the palace
mempalace mine ~/projects/myapp                    # project files
mempalace mine ~/.claude/projects/ --mode convos   # Claude Code sessions (scope with --wing per project)

# Search
mempalace search "why did we switch to GraphQL"

# Load context for a new session
mempalace wake-up

For Claude Code, Gemini CLI, MCP-compatible tools, and local models, see mempalaceofficial.com/guide/getting-started.


Benchmarks

All numbers below are reproducible from this repository with the commands in benchmarks/BENCHMARKS.md. Full per-question result files are committed under benchmarks/results_*.

LongMemEval — retrieval recall (R@5, 500 questions):

Mode R@5 LLM required
Raw (semantic search, no heuristics, no LLM) 96.6% None
Hybrid v4, held-out 450q (tuned on 50 dev, not seen during training) 98.4% None
Hybrid v4 + LLM rerank (full 500) ≥99% Any capable model

The raw 96.6% requires no API key, no cloud, and no LLM at any stage. The hybrid pipeline adds keyword boosting, temporal-proximity boosting, and preference-pattern extraction; the held-out 98.4% is the honest generalisable figure.

The rerank pipeline promotes the best candidate out of the top-20 retrieved sessions using an LLM reader. It works with any reasonably capable model — we have reproduced it with Claude Haiku, Claude Sonnet, and minimax-m2.7 via Ollama Cloud (no Anthropic dependency). The gap between raw and reranked is model-agnostic; we do not headline a "100%" number because the last 0.6% was reached by inspecting specific wrong answers, which benchmarks/BENCHMARKS.md flags as teaching to the test.

Other benchmarks (full results in benchmarks/BENCHMARKS.md):

Benchmark Metric Score Notes
LoCoMo (session, top-10, no rerank) R@10 60.3% 1,986 questions
LoCoMo (hybrid v5, top-10, no rerank) R@10 88.9% Same set
ConvoMem (all categories, 250 items) Avg recall 92.9% 50 per category
MemBench (ACL 2025, 8,500 items) R@5 80.3% All categories

We deliberately do not include a side-by-side comparison against Mem0, Mastra, Hindsight, Supermemory, or Zep. Those projects publish different metrics on different splits, and placing retrieval recall next to end-to-end QA accuracy is not an honest comparison. See each project's own research page for their published numbers.

Reproducing every result:

git clone https://github.com/MemPalace/mempalace.git
cd mempalace
uv sync --extra dev   # or: pip install -e ".[dev]"
# see benchmarks/README.md for dataset download commands
uv run python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json

Knowledge graph

MemPalace includes a temporal entity-relationship graph with validity windows — add, query, invalidate, timeline — backed by local SQLite. Usage and tool reference: mempalaceofficial.com/concepts/knowledge-graph.

MCP server

29 MCP tools cover palace reads/writes, knowledge-graph operations, cross-wing navigation, drawer management, and agent diaries. Installation and the full tool list: mempalaceofficial.com/reference/mcp-tools.

Agents

Each specialist agent gets its own wing and diary in the palace. Discoverable at runtime via mempalace_list_agents — no bloat in your system prompt: mempalaceofficial.com/concepts/agents.

Auto-save hooks

Two Claude Code hooks save periodically and before context compression: mempalaceofficial.com/guide/hooks.

For per-message recall on top of the file-level chunks the hooks produce, run mempalace sweep <transcript-dir> periodically — it stores one verbatim drawer per user/assistant message, idempotent and resume-safe.


Requirements

  • Python 3.9+
  • A vector-store backend (ChromaDB by default)
  • ~300 MB disk for the default embedding model

No API key is required for the core benchmark path.

Docs

Contributing

PRs welcome. See CONTRIBUTING.md.

License

MIT — see LICENSE.