Uteke v0.16.0: Better Recall With Zero Configuration
Fusion recall is now the zero-config default in Uteke v0.16.0, validated on 500 LongMemEval-S questions: 98.2% recall@5, +9.2 points over v0.15.0.
Today we released Uteke v0.16.0. The release has one theme: the best retrieval quality we can measure now ships as the default, with no configuration. Uteke is a local-first memory engine for AI agents. It is a single Rust binary with SQLite, a vector index, and ONNX embeddings built in. No server, no API key, no cloud. This release changes which recall strategy runs when you never configure one, and it is backed by a full 500-question validation run whose raw results are committed to the repo for anyone to check.
Why change the default
Uteke ships three recall strategies. Vector search alone is fast and predictable, but it misses exact entity matches such as names, dates, and numbers, which is exactly what full-text keyword search catches. Hybrid search fuses those two signals with Reciprocal Rank Fusion and scores much higher. But vector and hybrid still fail on different questions, and the failures overlap less than you would expect: each ranking leaves wins on the table that the other one already captured.
The numbers made this concrete. On our LongMemEval-S validation run, the v0.15.0 hybrid default scored 0.854 on the aggregate recall metric. Fusing vector and hybrid together scored 0.946 on the same run. That is 9.2 points of measured recall quality, sitting behind a single config line.
We think a default is part of the product. Most users never set a recall strategy, and they should not have to. If the default leaves measurable quality on the table, that is a bug in the product, not a gap in the user.
What fusion does
The new strategy is called fusion. It runs the vector ranking and the hybrid ranking, then merges both with weighted Reciprocal Rank Fusion (k=60). The weights were tuned on actual LongMemEval rankings, not guessed. When one ranking surfaces a gold session that the other buried, fusion pulls it back up.
Fusion is available on every surface: the CLI flag, the HTTP API field, and the MCP parameter. In v0.16.0 it is also the default on all three.
The numbers
We validated the zero-config experience on the full LongMemEval-S set: 500 questions, roughly 115 haystack sessions per question, EmbeddingGemma Q4 running on CPU, no LLM anywhere in the retrieval path, and a deterministic pipeline.
| Metric | Value | What it means |
|---|---|---|
| recall_any@5 | 98.2% | At least one gold session in the top 5 |
| recall_any@10 | 98.8% | At least one gold session in the top 10 |
| recall_all@10 | 95.4% | Every gold session in the top 10 |
| strict recall_all@5 | 88.0% | Every gold session in the top 5 (ceiling 99.4%) |
| coverage@5 | 94.3% | Partial credit per question |
Two things worth noting in that table. First, the +9.2 point gain over v0.15.0 comes from better ranking, not more compute. Recall latency stays flat at roughly 40 to 45ms from 100 to 10,000 memories, because the floor is ONNX query embedding, not search. Second, the strict family matters: 43% of LongMemEval questions need evidence from multiple sessions, and a question whose answer spans three sessions is only solved when all three come back. recall_any@5 passes it with one. recall_all@5 does not.
Design decisions
Three decisions shaped this release.
The new default applies only when you have set nothing. Existing configs with an explicit default_strategy are untouched, and rolling back is one config line. Explicit flags win over config, config wins over the default, and nothing about the upgrade is forced.
The fusion weights are tuned internally and are not a public contract. We may adjust them as tuning improves. The strategy name and its behavior are the contract, not the weights.
We published two metric families from the same run, plus the raw per-question results under benchmarks/longmemeval/results_modal_default/ in the repo. If a number matters, you should be able to recompute it.
How this compares
Published: August 2026. Capabilities and benchmarks reflect the state of AI memory tools as of this date. Tools evolve fast: verify current specs before making decisions.
Published LongMemEval-S numbers we could find as of this month: AgentMemory V4 reports 96.20% and Chronos 95.60% (both answer accuracy with a GPT-4o judge), and Mem0 reports 94.4% on its platform, also answer accuracy. Those numbers measure a different thing than ours: answer correctness after an LLM writes a reply. Ours measures retrieval accuracy, whether the right evidence sessions surfaced, with no LLM in the loop. The setups differ in embedding models and pipeline details, so treat the comparison as directional, not head-to-head.
Credit where it is due: Mem0 has 64,000+ stars, mature SDKs, and a hosted platform. Uteke has 235 stars. What Uteke offers is a different set of constraints: one Rust binary, fully offline, MCP-native, zero config, and benchmark numbers you can reproduce from committed raw results on your own hardware.
Links
- Repository: https://github.com/codecoradev/uteke
- Benchmarks page: https://github.com/codecoradev/uteke/blob/main/docs/benchmarks.md
- Crates: uteke-core, uteke-cli, uteke-mcp on crates.io (Apache-2.0)
Install:
curl -fsSL https://raw.githubusercontent.com/codecoradev/uteke/main/install.sh | shTo reproduce the latency benchmark in one line:
uteke bench --counts 100,1000,10000 --json