Research
Research & roadmap
The memory-systems research that informs Meivo - temporal knowledge graphs, agentic memory, reflection - and how each idea maps onto the engine.
Research and evaluation
Meivo's R&D thesis is that enterprise AI needs a governed memory framework, not only a vector index. Useful memory must preserve time, connect related knowledge, improve from explicit evidence of use, resist poisoning, and remain measurable.
The papers below inform the direction. Meivo is an independent clean-room implementation and is not affiliated with their authors. A Shipping label means the described Meivo code path exists today; it does not claim an exact reproduction of a paper or its published results.
Status legend: Shipping — implemented in the current engine. Planned — not yet a delivered product capability.
Bi-temporal graph memory — Shipping
Zep: A Temporal Knowledge Graph Architecture for Agent Memory
Vector similarity alone cannot distinguish what is true now from what was true earlier. Meivo stores extracted relationships with:
- event time (
valid_from/valid_until) — when the relationship applies in the world; - system time (
ingested_at/expired_at) — when the engine held that relationship as its current belief.
When a new fact conflicts on subject and predicate, the earlier edge can be superseded without deleting its history. Query an entity with:
curl -sS \
'http://127.0.0.1:7437/v1/timeline?space=default&subject=Priya'
Point-in-time recall accepts an RFC 3339 as_of value:
curl -sS http://127.0.0.1:7437/v1/search \
-H 'Content-Type: application/json' \
-d '{
"query":"where did Priya work?",
"mode":"recall",
"as_of":"2022-06-01T00:00:00Z"
}'
The main store is SQLite or Postgres with pgvector. A separate graph backend can use SQLite, Postgres, or MySQL; MySQL is not a main document/vector backend.
Agentic linked memory — Shipping
A-MEM: Agentic Memory for LLM Agents · reference code
Meivo implements first-class memory cards with a title, summary, keywords, tags, and links to related cards. Keyword/tag overlap is the default linking method; semantic linking is opt-in.
curl -sS http://127.0.0.1:7437/v1/cards \
-H 'Content-Type: application/json' \
-d '{
"title":"Athena launch plan",
"summary":"Ship Athena GA in Q3; Priya owns rollout.",
"keywords":["athena","launch","priya"],
"tags":["project"]
}'
Set GM_CARDS_SEMANTIC_LINKING=true to embed cards and link by similarity.
Links are retrieval aids, not verified semantic relationships.
Reflective memory management — Shipping
Reflective Memory Management · arXiv
With an LLM configured, prospective reflection summarizes an ingested document into a linked memory card in the background. The source document remains the evidence; the generated card is a model-produced derivative.
Reflection is enabled by default but is a no-op with GM_LLM=none. Disable it
with:
GM_REFLECTION=false gm-server serve
# or
gm-server serve --disable-reflection
Current scope is document-to-card reflection. It is not autonomous retraining, fine-tuning, or a general model-management platform.
Explicit usefulness feedback — Shipping
Meivo stores a usefulness score per chunk and can use it as a small retrieval prior. The application explicitly submits the chunk ids that were actually used:
curl -sS http://127.0.0.1:7437/v1/feedback \
-H 'Content-Type: application/json' \
-d '{"used_chunk_ids":["0196..."]}'
The current endpoint raises the identified chunks toward a higher usefulness score. It does not infer that every returned result was useful, automatically score answer correctness, or decay every unreported result. This precision matters: the product implements feedback-informed ranking, not autonomous proof of value.
Disable the retrieval prior with GM_USEFULNESS=false or
gm-server serve --disable-usefulness.
Bounded graph expansion — Shipping
Retrieval can seed from entities in matched facts and walk a configured number of graph hops to bring connected facts into the result set. It is off by default:
GM_GRAPH_EXPAND_HOPS=1 gm-server serve
This is bounded retrieval expansion. It does not claim that all downstream memories are rewritten when an upstream fact changes, or that graph traversal is equivalent to general reasoning. More hops can increase recall while reducing precision.
Episodic memory — Shipping
Episodes preserve a named sequence of related events for a project, meeting, case, or incident.
EPISODE_ID=$(
curl -sS http://127.0.0.1:7437/v1/episodes \
-H 'Content-Type: application/json' \
-d '{"name":"Payments outage","summary":"Incident timeline"}' |
jq -r '.id'
)
curl -sS "http://127.0.0.1:7437/v1/episodes/$EPISODE_ID/events" \
-H 'Content-Type: application/json' \
-d '{"kind":"incident","note":"Database failover began at 14:02 UTC"}'
Applications or agents decide which events belong in an episode; current episode grouping is not automatic.
Memory trust and injection gating — Shipping
The default policy combines provenance scoring with checks for known prompt-injection-like patterns. Suspicious content is down-ranked and excluded from structured fact extraction while remaining available for investigation.
This is a heuristic layer. It can miss novel attacks and can flag benign text that resembles an instruction. Retrieved content can still appear in results, so the consuming application must continue to treat it as untrusted data.
Trust gating is enabled by default. Disable the content-aware part with
GM_TRUST=false or gm-server serve --disable-trust; provenance scoring still
remains.
Hybrid retrieval — Shipping
Meivo combines vector similarity, BM25/full-text search, and facts with reciprocal-rank fusion and recency. Optional stages add lexical reranking, point-in-time fact filtering, usefulness weighting, ACL filtering, and graph expansion.
The architecture is composable, but each lane and combination needs evaluation against the intended corpus. A result that is relevant by one metric is not automatically faithful, current, authorised, or sufficient for an answer.
Current evaluation coverage
The repository contains a deterministic retrieval-quality gate in the
gm-eval crate. It:
- loads a checked-in labelled gold corpus;
- exercises the SQLite BM25/text lane without an embedder or network;
- measures recall@5, precision@5, and mean reciprocal rank (MRR);
- fails CI below fixture-specific floors of 0.92 recall@5, 0.22 precision@5, and 0.96 MRR.
The test comments record current fixture results of 0.967 recall@5, 0.260 precision@5, and 1.000 MRR. These numbers are regression-test results for a small deterministic text corpus. They are not a production benchmark, not a hybrid/vector score, and not evidence of performance on a customer's data.
The repository also has a separate bounded-memory regression scenario for the local embed/store path: 1,000 synthetic documents of about 50 KB each, with a peak-RSS assertion below 1 GB. It does not cover every parser, connector, LLM, database, or concurrency shape.
Evaluation work still needed — Planned
The current gate does not yet provide:
- representative hybrid/vector retrieval benchmarks across customer domains;
- p50/p95/p99 ingest and search latency at multiple corpus sizes;
- ACL-selectivity and multi-space recall tests at production scale;
- temporal question-answer accuracy and contradiction-resolution scores;
- answer faithfulness, citation correctness, and abstention metrics;
- poisoning, prompt-injection, and sensitive-data red-team suites;
- episode reconstruction and personalization-quality benchmarks;
- external reproducibility reports across deployment hardware.
Those are R&D and product-validation priorities, not claims already delivered.
Hybrid tree plus graph memory — Planned
A future research direction is to combine hierarchical summaries with the relationship graph so raw memory can roll up into long-term structures while provenance remains traceable. It is not part of the current engine and should not be sold as a shipping feature.