Mnemosyne - A Graph-Based memory engine

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.

4 Likes

Nice !

1 Like