PostgreSQL store
Mnemosyne.NET.PostgreSql is the store: an IReasonletStore on PostgreSQL with pgvector. It keeps the procedures, their runs and their feedback, and finds the procedures nearest to a question's embedding. This page covers what the store needs from the database, how to set it up and migrate it, and what its errors mean.
Data lifecycle
Stored procedures don't live forever. A tenant leaves, a person asks to have their data erased, or procedures stop being used and only take up space. Mnemosyne has two tools for this:
Telemetry
Mnemosyne emits OpenTelemetry traces and metrics for every store operation, every recall and every call to an evaluator. It uses only the in-box System.Diagnostics types, so it adds no dependency and stays native AOT clean. Your host decides whether to collect the signals and where to send them.
Judging runs with Minos
By default a run counts as a success when the agent says it worked. Mnemosyne.NET.Minos swaps that for a second opinion: after each run, a Minos.NET decision model reads the question, the procedure and the answer, and says whether the answer resolves the question by following the procedure. The verdict counts instead of the agent's own, as ranking explains.
Judging runs with a chat model
By default a run counts as a success when the agent says it worked. ChatReasonletEvaluator swaps that for a second opinion from any chat model: after each run, the model reads the question, the procedure and the answer, and says whether the answer resolves the question by following the procedure. The verdict counts instead of the agent's own, as ranking explains.
Writing your own evaluator
By default a run counts as a success when the agent says it worked. An evaluator swaps that for a second opinion, as ranking explains. Mnemosyne ships two