Mem0 provides a production-ready memory layer for LLM applications with intelligent conflict resolution and memory consolidation. The two-phase pipeline first extracts candidate memories from conversations, then intelligently resolves conflicts with existing memories through ADD/UPDATE/DELETE/NOOP decisions.
Awareness implements Mem0's two-phase approach:
**Phase 1: Extraction** - Parse conversation for factual statements - LLM identifies candidate memories - Score importance (1-10 scale) - Generate embeddings for each candidate
**Phase 2: Conflict Resolution** - Search for similar existing memories (cosine > 0.85) - For each match, LLM decides: - **ADD**: New information, no conflict - **UPDATE**: Refine/update existing memory - **DELETE**: Information invalidated - **NOOP**: Redundant, no action needed
- Extract entities and relationships
- Build knowledge graph in Neo4j
- Enable traversal-based retrieval
- Support complex multi-hop queries
// Mem0 two-phase pipeline in Awareness
async function consolidateMemories(
conversationHistory: Message[]
): Promise<void> {
// Phase 1: Extract candidates
const candidates = await extractCandidateMemories(conversationHistory);
// Phase 2: Resolve conflicts
for (const candidate of candidates) {
const similar = await findSimilarMemories(candidate);
if (similar.length === 0) {
await addMemory(candidate); // ADD
} else {
const decision = await llm.judge({
prompt: "Should we ADD, UPDATE, DELETE, or NOOP?",
candidate,
existing: similar
});
if (decision === "UPDATE") {
await updateMemory(similar[0].id, candidate);
} else if (decision === "DELETE") {
await deleteMemory(similar[0].id);
}
// NOOP: do nothing
}
}
}Memory extraction and consolidation pipeline implementation
Virtual context management, heartbeat mechanism, OS-inspired memory paging
Cognitive architecture framework with 4 memory types (working, episodic, semantic, procedural)
Three-tier consolidation, dialogue distillation, topic-aware consolidation, 117x token reduction