Skip to content

记忆系统:短期记忆、长期记忆与反射机制

Agent 的记忆 (Memory) 决定了它的连贯性 (Coherence)成长性 (Growth)。 如果 Agent 每次对话都从零开始,它就无法建立用户画像,也无法从过去的错误中学习。 这就像《记忆碎片》里的主角,永远活在当下。 为了让 Agent 变得“有血有肉”,我们需要为它构建一套完整的记忆系统。

1. 记忆的分类 (Memory Types)

1.1 短期记忆 (Short-term Memory)

  • Buffer Memory: 最近几轮对话历史(Conversation History)。
  • Working Memory: 当前任务的中间状态、变量、计划。
  • Token 限制: 受 Context Window 限制,无法无限存储。
  • 实现: List[Message]

1.2 长期记忆 (Long-term Memory)

  • Episodic Memory (情景记忆): 过去发生的具体事件("上周二帮用户查了天气")。
  • Semantic Memory (语义记忆): 知识、事实("用户的名字叫 Alice,是个素食主义者")。
  • Procedural Memory (程序记忆): 技能、经验("如果用户问代码问题,先写伪代码")。
  • 实现: Vector Database (RAG)。

2. 记忆机制工程实现

2.1 摘要与压缩 (Summarization)

随着对话进行,短期记忆会撑爆 Context。 与其丢弃旧对话,不如总结。 使用 ConversationSummaryMemory

  1. 对话 1-10 轮。
  2. LLM 生成摘要:"用户问了关于 Python 的问题,Agent 给出了代码示例。"
  3. 对话 11-20 轮。
  4. LLM 更新摘要:"用户继续追问了 pandas 用法..."。 这样,无论对话多长,始终只保留最新的摘要 + 最近几轮对话。

2.2 向量检索 (Vector Retrieval)

将所有历史对话切片存入向量库。 当用户问新问题时,检索相关的旧对话。 这让 Agent 能回忆起很久以前的事情。 Challenge: 检索可能不准。

2.3 反射机制 (Reflection)

这是让 Agent 自我进化的关键。 Agent 定期回顾自己的记忆,提取出High-level Insights

  1. Observation: 用户多次拒绝了包含肉食的食谱推荐。
  2. Reflection: "用户可能是素食者。" -> 存入语义记忆。
  3. Future Action: 下次推荐时,自动过滤掉肉类。 这参考了斯坦福 Generative Agents (西部世界) 的架构。

3. LangChain Memory 组件

LangChain 提供了丰富的 Memory 实现:

  • ConversationBufferMemory: 原始对话列表。
  • ConversationSummaryMemory: 摘要对话。
  • VectorStoreRetrieverMemory: 向量检索。
  • EntityMemory: 提取实体信息(如 Name, Age)。

3.1 代码示例

python
from langchain.memory import ConversationSummaryBufferMemory
from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI()
memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=100)

memory.save_context({"input": "Hi"}, {"output": "Hello!"})
memory.save_context({"input": "I like pizza"}, {"output": "Me too!"})

# 当超过 limit 时,自动摘要
print(memory.load_memory_variables({}))
# {'history': 'The human greets the AI. They discuss liking pizza.'}

4. 记忆增强生成 (Memory Augmented Generation)

4.1 个性化 (Personalization)

在 System Prompt 中动态注入用户的长期记忆。 System: You are helpful. User profile: {vegetarian: true, language: python}

4.2 持续学习 (Continual Learning)

通过反射机制,不断更新 User Profile。 这就是 Agent 的“成长”。

记忆是 Agent 的灵魂。 短期记忆让对话流畅,长期记忆让关系持久,反射机制让智慧涌现。 设计一个好的记忆系统,就是在设计一个数字生命的大脑皮层。