🧠 LLM 记忆(Memory)
让大模型跨越对话、会话、项目记住关键信息——从上下文窗口到长期记忆。
为什么需要 LLM 记忆层?
上下文窗口的局限
- 有限的 Token 数(128K ~ 2M)
- 超出窗口后信息丢失
- 跨会话无法保留用户信息
- 长对话成本线性增长
记忆层的解决方案
- 将重要信息持久化存储
- 按需检索相关记忆注入上下文
- 支持跨会话、跨项目的长期记忆
- 智能管理记忆的生命周期
记忆类型
- 短期记忆:当前对话窗口内
- 长期记忆:跨会话持久化
- 语义记忆:基于内容相似度检索
- 情景记忆:基于时间和上下文
记忆架构概览
典型 Agent 记忆架构
┌──────────────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ (Input / Output / Tool Calls) │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ LLM Memory Manager │
│ (记忆写入 / 检索 / 更新 / 遗忘) │
├──────────────────────────────────────────────────────────────────┤
│ ┌─────────────────┬─────────────────┬─────────────────┐ │
│ │ Working Memory │ Episodic Memory │ Semantic Memory │ │
│ │ (当前上下文) │ (会话历史) │ (知识图谱/向量) │ │
│ └─────────────────┴─────────────────┴─────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ 持久化存储层 │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ SQLite │ │ Postgres │ │ Vector DB │ │ Graph DB │ │
│ └───────────┘ └───────────┘ └───────────┘ └───────────┘ │
└──────────────────────────────────────────────────────────────────┘
核心记忆工具
1. Mem0 — 通用 LLM 记忆层
Mem0
开源 / 商业 · 通用记忆层
轻量级 LLM 记忆层,将记忆管理抽象为简单的 API,可嵌入到任何 LLM 应用中。支持语义检索、记忆更新和遗忘。
核心特性
- ✨ 自动从对话中提取重要信息作为记忆
- 🔍 基于语义相似度检索相关记忆
- ♻️ 智能更新和合并已有记忆(避免重复)
- 🗑️ 支持记忆删除和遗忘
- 🔌 可作为 LangChain / LlamaIndex 的集成组件
- 💾 支持多种存储后端(PostgreSQL / MongoDB / 向量数据库)
安装与使用
# 安装
pip install mem0ai
# 配置
from mem0 import Memory
memory = Memory.from_config({
"vector_store": {
"provider": "qdrant",
"config": {"collection_name": "user_memory", "path": ":memory:"}
},
"llm": {
"provider": "openai",
"config": {"model": "gpt-4o", "api_key": "sk-xxx"}
}
})
# 添加记忆
memory.add("我喜欢川菜,尤其是麻婆豆腐", user_id="user_123")
# 检索记忆
results = memory.search("用户喜欢什么菜?", user_id="user_123")
# → [{"memory": "用户喜欢川菜,尤其是麻婆豆腐", "score": 0.92}]
# 获取所有记忆
all_memories = memory.get_all(user_id="user_123")
# 删除记忆
memory.delete(memory_id="mem_001", user_id="user_123")
与 LangChain 集成
from mem0 import Memory
from mem0.configs import MemoryConfig
memory = Memory.from_config(MemoryConfig(...))
# 在对话中自动维护记忆
from langchain.memory import ConversationBufferMemory
class Mem0ConversationMemory(ConversationBufferMemory):
def save_context(self, inputs, outputs):
super().save_context(inputs, outputs)
# 自动将对话内容存入 Mem0
memory.add(
f"User: {inputs['input']}
Assistant: {outputs['response']}",
user_id=self.user_id
)
• • •
2. Zep — 面向 Agent 的长期记忆
Zep
开源 · 专用记忆服务
为 LLM Agent 提供持久化记忆服务,侧重于会话历史的存储、检索和摘要。支持跨会话的长期记忆。
核心概念
Session(会话)
独立的对话上下文容器,对应单个用户会话
Memory(记忆)
从消息中自动提取的长期事实和偏好
Summary(摘要)
自动生成的会话摘要,节省 Token
User(用户)
跨会话的用户画像,存储持久偏好
部署与使用
# Docker 部署 Zep 服务
docker compose up -d
# Python 客户端
from zep_cloud.client import Zep
client = Zep(api_key="your-api-key")
# 添加消息到会话
client.add(
session_id="session_001",
messages=[
{"role": "user", "content": "我叫小明,住在上海"},
{"role": "assistant", "content": "好的,小明!有什么可以帮忙?"},
]
)
# 搜索记忆
memories = client.memory.search(
session_id="session_001",
query="用户叫什么名字?"
)
# 获取用户历史摘要
summary = client.memory.get_summary(session_id="session_001")
• • •
3. AgentMemory — 企业级记忆服务
AgentMemory
企业级 · 专注业务场景
面向企业 Agent 的记忆服务,强调业务记忆的结构化管理、权限控制和审计。
特点
- 支持业务实体级别的记忆(客户、订单、产品等)
- 多租户隔离和权限控制
- 记忆操作的完整审计日志
- 支持记忆共享和协作
- 与主流 Agent 框架(LangChain、AutoGen 等)集成
使用示例
from agentmemory import AgentMemoryClient
client = AgentMemoryClient(
project_id="enterprise_project",
api_key="sk-xxx"
)
# 记录业务记忆
client.remember(
agent_id="sales_agent_01",
memory_type="customer_preference",
content={
"customer_id": "C12345",
"preferred_contact": "email",
"budget_range": "50k-100k",
"interested_categories": ["SaaS", "AI"]
}
)
# 根据业务上下文检索
memories = client.recall(
agent_id="sales_agent_01",
context="准备客户 C12345 的方案",
memory_types=["customer_preference", "history"]
)
• • •
4. MemGPT — 对话式记忆管理
MemGPT
开源 · 长对话记忆
专为长对话场景设计的记忆管理系统,使用分层记忆架构(核心记忆 + 档案记忆 + 向量记忆)。
三层记忆架构
Core Memory(核心记忆)
存储:关键身份信息、长期偏好
容量:受上下文窗口限制(~25% 窗口)
示例:用户姓名、角色、核心目标
容量:受上下文窗口限制(~25% 窗口)
示例:用户姓名、角色、核心目标
Recall Memory(档案记忆)
存储:完整的历史对话记录
容量:无限(存在磁盘/SQLite)
示例:过去所有的对话消息
容量:无限(存在磁盘/SQLite)
示例:过去所有的对话消息
Vector Memory(向量记忆)
存储:语义向量索引的信息片段
容量:无限(向量数据库)
示例:对话中提取的知识点
容量:无限(向量数据库)
示例:对话中提取的知识点
工作原理
- 接收到新消息后,LLM 判断是否需要更新记忆
- 如果是长期信息 → 写入 Core Memory
- 如果是情景信息 → 写入 Recall Memory
- 如果是知识信息 → 写入 Vector Memory
- 回复时按需从各层检索相关记忆注入上下文
其他记忆方案
其他记忆工具速查
LangGraph Memory
LangGraph 内置的记忆检查点,支持图状态持久化
LlamaIndex ChatMemory
LlamaIndex 框架的内存/持久化聊天记忆
AutoGen Memory
微软 AutoGen 的多 Agent 共享记忆
Vector Database 原生
Pinecone / Weaviate / Qdrant 直接作为记忆后端
Mem0 + 向量库组合
最灵活的方案,可按业务需求自由组合
MCP Memory Server
基于 MCP 协议的标准化记忆服务
记忆最佳实践
记忆系统的设计原则
1
分层存储
区分短期工作记忆和长期持久记忆,不同层级使用不同的存储方案
2
自动提取
不要手动指定什么该记忆,让 LLM 自动判断哪些信息值得持久化
3
智能更新
发现冲突信息时,自动更新旧记忆而非简单追加
4
按需检索
不要把所有记忆都塞给 LLM,而是根据当前上下文只检索最相关的
5
安全脱敏
敏感信息(密码、密钥)不要存入记忆层,或进行加密处理
6
可解释性
让用户可以查看、编辑和删除自己的记忆,增加透明度和可控性
• • •
记忆工具选型建议
选型指南
快速集成 → Mem0(最简 API,10 分钟上手)
长对话场景 → MemGPT(分层记忆,适合客服/陪聊)
多会话管理 → Zep(会话为中心,支持摘要自动生成)
企业业务 → AgentMemory(结构化业务记忆,权限审计)
框架原生 → 使用 LangGraph/LlamaIndex 原生记忆(无需额外服务)
轻量定制 → Mem0 + 任意向量数据库组合