MnemosyneZvex
A MnemosyneGraphBackend backed by
Zvex, an in-process vector database, plus
a DETS sidecar for typed links and mutable per-node metadata.
Installation
def deps do
[
{:mnemosyne_zvex, "~> 0.1.0"} # x-release-please-version
]
endUsage
# Configure Mnemosyne's shared adapters once in your supervisor
children = [
{Mnemosyne.Supervisor,
config: %Mnemosyne.Config{
llm: %{model: "gpt-4o", opts: %{}},
embedding: %{model: "text-embedding-3-small", opts: %{}}
},
llm: MyApp.LLMAdapter,
embedding: MyApp.EmbeddingAdapter}
]
# Then open a repo backed by MnemosyneZvex
{:ok, _pid} =
Mnemosyne.open_repo("my-project",
backend: {MnemosyneZvex.Backend,
path: "/var/data/mnemosyne/my-project",
dimension: 1536}
)
# Use Mnemosyne normally
{:ok, session} = Mnemosyne.start_session("Help user plan a trip", repo: "my-project")
:ok = Mnemosyne.append(session, "User says they want to visit Tokyo", "Asking dates")
:ok = Mnemosyne.close_and_commit(session)
{:ok, memories} = Mnemosyne.recall("my-project", "What does the user want?")Options
| Option | Required | Default | Description |
|---|---|---|---|
:path | yes | — |
Directory under which zvex/ and sidecar.dets will live |
:dimension | yes | — |
Embedding dimension (must match your embedding adapter) |
:index | no | :hnsw |
Vector index type: :hnsw, :ivf, or :flat |
:metric | no | :cosine |
Distance metric: :cosine, :l2, or :ip |
:index_opts | no | [m: 16, ef_construction: 200] | Index-specific parameters |
:fetch_multiplier | no | 3 | Over-fetch factor for value function reranking |