cel-memory-duckdb
DuckDB embedded memory backend for AI agents. Implements
cel-memory's MemoryProvider trait with
hybrid vector + lexical retrieval in a single analytics-friendly file.
Status: v0.1.0 starter — Phase 0–1: open/migrate, write/get, hybrid
retrieve (array_cosine_distance + ILIKE), sessions, stats. Summarization,
aging, export, and bulk mutations return NotImplemented until later phases.
Purpose
Use cel-memory-duckdb when you want local, embeddable memory with DuckDB's
columnar engine — analytics-heavy agents, notebooks, or workloads that already
use DuckDB/Parquet nearby. Swap it in wherever code holds
Arc<dyn MemoryProvider>.
Requirements
- Embedding width 384 (matches
MockEmbedder/ bge-small) - DuckDB bundled via the
duckdbcrate (no separate install)
Example
use Arc;
use ;
let provider = open.await?;
// Use as cel_memory::MemoryProvider — same trait as BasicMemoryProvider.
Run the complete example:
What's included (Phase 0–1)
DuckdbMemoryProvider::open/open_in_memory— embedded migrationswrite/get/write_batch- Hybrid
retrieve— cosine distance onFLOAT[384]+ ILIKE keyword match, fused with RRF - Session lifecycle —
open_session,close_session,rename_session,get_session,list_sessions stats
Roadmap
| Phase | Methods |
|---|---|
| 2 | pin, delete, purge_all, run_aging_sweep, export, … |
| 3 | summarize_session, rollup_day, rollup_rule_week |
| 4 | re_embed_all, DuckDB VSS HNSW indexes, richer FTS |
License
Apache-2.0