Lesson 11 of 20

Memory & Knowledge

Short-term vs Long-term Memory

3 min read

Effective agents need both types of memory: short-term for the current conversation and long-term for persistent knowledge across sessions.

Memory Types Overview

TypeScopeStorageUse Case
Short-termCurrent sessionIn-memoryConversation context
Long-termAcross sessionsDatabase/Vector storeUser preferences, facts
EpisodicPast experiencesVector storeSimilar past situations
SemanticFacts & conceptsKnowledge graphDomain knowledge

Short-term Memory

Keeps track of the current conversation:

from langchain.memory import ConversationBufferMemory

# Simple buffer - stores all messages
memory = ConversationBufferMemory()
memory.save_context(
    {"input": "My name is Alice"},
    {"output": "Nice to meet you, Alice!"}
)

# Window buffer - keeps last N exchanges
from langchain.memory import ConversationBufferWindowMemory
memory = ConversationBufferWindowMemory(k=10)

# Summary memory - summarizes older messages
from langchain.memory import ConversationSummaryMemory
memory = ConversationSummaryMemory(llm=llm)

Long-term Memory

Persists information across sessions:

import json
from datetime import datetime

class LongTermMemory:
    def __init__(self, user_id, db):
        self.user_id = user_id
        self.db = db

    def remember(self, key, value, metadata=None):
        """Store a fact about the user"""
        self.db.upsert({
            "user_id": self.user_id,
            "key": key,
            "value": value,
            "metadata": metadata,
            "updated_at": datetime.now()
        })

    def recall(self, key):
        """Retrieve a stored fact"""
        return self.db.query(
            user_id=self.user_id,
            key=key
        )

    def search(self, query):
        """Semantic search through memories"""
        embedding = embed(query)
        return self.db.vector_search(
            user_id=self.user_id,
            embedding=embedding,
            top_k=5
        )

Combining Memory Types

A production agent typically uses multiple memory systems:

class AgentMemory:
    def __init__(self, user_id):
        # Short-term: current conversation
        self.conversation = ConversationBufferWindowMemory(k=20)

        # Long-term: user facts
        self.user_facts = LongTermMemory(user_id, facts_db)

        # Episodic: past conversations
        self.episodes = VectorStore(f"episodes_{user_id}")

    def get_context(self, query):
        """Build context from all memory types"""
        context = {
            "recent": self.conversation.load_memory_variables({}),
            "user_info": self.user_facts.recall("preferences"),
            "similar_past": self.episodes.search(query, k=3)
        }
        return context

    def save_interaction(self, input, output):
        """Save to both short and long-term"""
        # Short-term
        self.conversation.save_context(
            {"input": input},
            {"output": output}
        )

        # Extract and store facts
        facts = extract_facts(input, output)
        for fact in facts:
            self.user_facts.remember(fact.key, fact.value)

Memory Extraction

Automatically extract memorable information:

def extract_facts(conversation):
    """Use LLM to extract facts worth remembering"""
    prompt = """
    Extract key facts from this conversation that should be remembered:
    - User preferences
    - Important dates/events
    - Stated goals or needs

    Conversation: {conversation}

    Facts (JSON format):
    """
    return llm.generate(prompt.format(conversation=conversation))

Best Practices

PracticeWhy It Matters
Scope memory appropriatelyDon't store everything
Add timestampsKnow when info was learned
Enable forgettingRemove outdated info
Respect privacyHandle personal data carefully
Test recall accuracyVerify memory retrieval

Next, we'll discuss keeping agents current with knowledge cutoffs and updates. :::

Quick check: how does this lesson land for you?

Quiz

Module 3: Memory & Knowledge

Take Quiz
FREE WEEKLY NEWSLETTER

Stay on the Nerd Track

One email per week — courses, deep dives, tools, and AI experiments.

No spam. Unsubscribe anytime.