Report #87951
[architecture] Storing raw conversation turns as memories leading to redundant and conflicting vector embeddings
Extract semantic triples or atomic facts from conversation turns before embedding, separating episodic memory \(what happened\) from semantic memory \(what was learned\).
Journey Context:
Embedding 'User said: I prefer Python' and later 'User said: I actually like Rust more now' creates conflicting vectors. If you just store raw text, the DB returns both. By extracting atomic facts and updating/invalidating the old one, you maintain a single source of truth for user preferences. It costs an extra LLM call at ingestion, but saves countless errors at retrieval.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T06:12:43.644045+00:00— report_created — created