cel-memory-sqlite
SQLite-backed local memory for AI agents. Implements
cel-memory's MemoryProvider trait with single-file storage,
FTS, and vector search through sqlite-vec.
Status: v0.1 — implements the full MemoryProvider surface: writes, sessions, hybrid (vector + FTS + recency) retrieval fronted by a TTL+LRU cache, summarization and daily/rule-week rollups (via an injected summarizer), aging sweeps, export, and stats. re_embed_all is the one method still unimplemented.
What's in this crate
SqliteMemoryProvider—MemoryProviderimpl backed by SQLite (one file, no separate process).Embeddertrait +MockEmbedder(always available).FastEmbedEmbedderbehind thefastembedfeature — local ONNX runtime +bge-small-en-v1.5(~130 MB model download).- Schema migrations for
memory_chunks,memory_vec(sqlite-vec virtual table),memory_fts(FTS5), sessions, access log, eviction log. sqlite-vecextension loaded at connection open; thememory_vecvirtual table is available without extra setup.
Design
- Single SQLite file. One file to back up, encrypt, ship to compliance. No separate vector daemon, no second process to manage.
- Brute-force vector scan up to ~1M chunks per user.
sqlite-vecis fast on Apple Silicon (5–30 ms at typical personal-memory scale). HNSW is a drop-in upgrade whensqlite-vecships it. - Hybrid retrieval: vector + FTS + recency, weighted per
RetrievalProfile, fused with reciprocal-rank fusion and fronted by a short-TTL LRU cache. - Governance-first. Every write consults the optional
MemoryWriteHookfromcel-memory— a rule engine can redact or veto.
Example
use Arc;
use ;
let provider = open.await?;
// Use as cel_memory::MemoryProvider — same trait as BasicMemoryProvider.
Run the complete example:
Features
fastembed— enablesFastEmbedEmbedderfor local embeddings. Off by default to avoid the 130 MB model download in dev workflows.
License
Apache-2.0