I’m working a lot with Agents lately, and one of the classic issues is memory, there are quite a lot of memory approaches, from Graphs, to plain markdown, Obsidian with front-matter, so on and so forth. One of the SOTA is PlugMem, a proposal that used a graph with node-type hierarchies, which achieves quite nice recall results. So i implemented it in Elixir, an thus, Mnemosyne was born.
It implements the mechanism explained in the article, i’ll not go deep on it, but its pretty much a graph with some distinct node types, each holding a distinct type of memory/reference. These memories are searchable by vector-similarity together with graph-neighbours expansion.
Right now, the library is shipped using a in-memory storage backed by DETS offloading, it means that the whole graph-embeddings is kept and searched in-memory. However, i have a couple adapters in the oven. Mnemosyne Postgres, which is backed by PgVector and Mnemosyne Zvex which is backed by ZVec.






















