Hacker News new | ask | show | jobs
by tompdavis 71 days ago
Good question. In Mnemo, reinforcement and contradiction are handled through slightly different mechanisms. We deliberately don't append — atoms are merged or stored separately but never modified as a log.

When a memory is decomposed into atoms (which includes typing and creating the Beta distribution), and one atom has a similarity threshold >0.9 then it is not stored, but is merged with the existing atom and the Beta distribution is updated: alpha is increased via alpha_new = alpha_orig + alpha_incoming - 1 (subtracting the shared Beta(1,1) prior to avoid double counting).

Contradictory atoms are stored, and the existing atom's Beta distribution is modified by increasing the beta parameter. A graph edge is created with type "contradicts", so in some sense the contradiction history lives in the graph itself. The trade-off with the append-only approach CortexDB takes is that Mnemo can't be used to re-derive past beliefs, as the Beta state is authoritative at any given moment, but its history isn't preserved as a separate log. This raises an interesting question about meta-memory like "Oh I remember I used to think that", but currently this is not a feature in Mnemo.

Mnemo follows the same pattern that retrieval surfaces all relevant atoms, and the model sees the confidence and can come to a belief. The chain of updates is not stored, the Beta distribution is updated in-place.

The typing is done by a small model (Claude Haiku currently), and once typed, we don't revisit the reclassification. To be honest I haven't revisited that design choice, and I'm curious to understand the cases where an atom should be reclassified. We have made the time decay different for each type, following cognitive research reported by McClelland, McNaughton and O'Reilly in 1995, so reclassifying would be difficult (but not impossible).