【LangGraph】基于 LangGraph 构建完整的长期记忆系统
一、整体架构设计
整个系统可以划分为五个核心模块。
模块一:对话管理模块
负责接收用户输入、维护会话状态。
主要功能:
- 创建和管理 Conversation。
- 通过 thread_id 管理会话。
- 保存完整历史消息。
- 管理最近消息窗口。
- 控制上下文 Token 数量。
推荐使用 LangGraph Checkpointer。
模块二:记忆提取模块
负责从历史对话中识别具有长期价值的信息。
主要功能:
- 实体提取。
- 用户偏好提取。
- 项目信息提取。
- 事实和关系抽取。
- 对话摘要生成。
- 记忆重要性评分。
推荐使用 LLM Structured Output。
模块三:记忆存储模块
负责对不同类型的记忆进行分类存储。
存储介质 | 存储内容
—|—
PostgreSQL / MySQL | 用户画像、实体、结构化事实、记忆元数据
Redis | 热门记忆缓存、会话状态缓存
Chroma / Milvus | 向量化历史记忆
Neo4j | 实体及其关系
PostgreSQL Checkpointer | 会话状态及消息历史
模块四:记忆检索模块
根据用户当前问题,动态选择合适的记忆。
例如:
1 | 用户:我之前开发的知识中台采用了什么架构? |
模块五:记忆管理模块
负责记忆的生命周期管理:
- 记忆新增。
- 记忆更新。
- 记忆去重。
- 记忆冲突处理。
- 记忆过期。
- 记忆删除。
- 记忆权限控制。
二、使用 LangGraph Store 实现跨会话长期记忆
区分:
- Checkpointer:保存当前 Thread 的短期记忆。
- Store:保存跨 Thread 的长期记忆。
2.1 核心原理
用户开启了三个会话:
1 | 用户 user_001 |
三个会话各自有独立的 Checkpointer。
但是它们都可以访问:
1 | 长期记忆 Store |
2.2 创建长期记忆 Store
1 | from langgraph.store.memory import InMemoryStore |
2.3 保存长期记忆
1 | def save_long_term_memory( |
2.4 根据当前问题检索长期记忆
1 | def search_long_term_memory( |
输出:
1 | ['用户正在开发知识中台,后端使用SpringBoot', '用户喜欢使用Python开发AI Agent'] |
2.5 让 Agent 自动读取长期记忆
将长期记忆检索封装成 Tool:
1 | from langchain.tools import tool |
将这个 Tool 注册到 Agent 中:
1 | from langchain_ollama import ChatOllama |
1 | config = { |
输出:
1 | 根据您的历史记录: |
最后更新: 2026年11月07日 12:39