LangChain 1.2 官方主推记忆完全解析

介绍

新版记忆的核心设计理念:记忆即状态,状态即记忆。

不再单独创建记忆对象、手动存取对话历史,而是将所有对话上下文、会话数据统一纳入 LangGraph State(状态),通过 Checkpointer(检查点器) 实现全自动的状态存档、读取、恢复。

核心特性:

  • 记忆深度集成在 Agent 流程中,而非外挂组件

  • 通过 thread_id 天然隔离多用户、多会话

  • 全自动持久化,无需手动 add_message、save_context

  • 原生支持断点续跑、流程回滚、复杂分支/工具调用场景

主推记忆三大分类

新版官方将记忆严格划分为以下三类,覆盖所有生产场景:

  • 短期会话记忆(运行时记忆)
  • 会话记忆压缩策略
  • 长期用户记忆(跨会话记忆)

短期会话记忆(基础)

作用:保存同一个 thread_id 会话内的多轮对话历史,是所有 Agent 对话的基础记忆,由 Checkpointer 提供三种存储实现,适配开发、测试、生产全环境。

本质:持久化存储 State 中的 messages 消息列表。

(1)InMemorySaver 内存存储(开发调试专用)

全程内存存储,进程重启、服务重启后记忆全部丢失,仅用于本地调试、功能验证,禁止用于生产环境。

from langgraph.graph import StateGraph, MessagesState, START, END
from langgraph.checkpoint.memory import InMemorySaver
from langchain_openai import ChatOpenAI

# 初始化模型与检查点
llm = ChatOpenAI(model="gpt-4o-mini")
checkpointer = InMemorySaver()

# 构建对话图
builder = StateGraph(MessagesState)
builder.add_node("chat_node", lambda state: {"messages": llm.invoke(state["messages"])})
builder.add_edge(START, "chat_node")
builder.add_edge("chat_node", END)

# 编译启用自动记忆
graph = builder.compile(checkpointer=checkpointer)

# 会话隔离(thread_id)
config = {"configurable": {"thread_id": "debug_001"}}
graph.invoke({"messages": [("user", "我叫小明")]}, config)
res = graph.invoke({"messages": [("user", "我叫什么名字?")]}, config)
print(res["messages"][-1].content)

(2)SqliteSaver 文件持久化(中小生产首选)

基于本地 SQLite 文件存储,无需部署数据库,轻量零运维、持久化不丢失,适合个人项目、中小型服务、单机部署场景,是中小项目生产最优解。

from langgraph.checkpoint.sqlite import SqliteSaver

# 持久化到本地数据库文件
checkpointer = SqliteSaver.from_conn_string("sqlite:///chat_memory.db")
graph = builder.compile(checkpointer=checkpointer)

(3)PostgresSaver 数据库持久化(企业级生产)

基于 PostgreSQL 数据库存储,支持分布式部署、多实例共享、高并发、数据持久化备份,适配微服务、集群部署、高可用企业级项目,是大型项目标准方案。

会话记忆压缩策略(解决 Token 溢出)

短期记忆 默认存储全量对话,长对话会导致 Token 激增、响应变慢、上下文溢出。LangChain 1.2 官方主推四种内置记忆压缩策略,全部基于 LangGraph State 实现,适配不同长对话场景。

提示:会话记忆压缩策略,是搭配 短期会话记忆 的

(1)全量缓冲策略(默认)

保存会话内所有历史消息,无截断、无压缩。适合短对话、问答式轻量交互。缺点是长对话 Token 消耗极高。

(2)滑动窗口缓冲策略

只保留最近 N 轮对话,自动丢弃最早的历史记录,固定上下文长度,可控性强,适合常规连续聊天场景。

(3)Token 精准窗口策略

按 Token 数量限制上下文长度,而非轮数,精准控制成本和上下文上限,适合对接口成本、响应速度敏感的业务。

(4)摘要缓冲策略(1.2 长对话主推)

核心逻辑:早期对话自动摘要压缩,最新对话完整保留。兼顾上下文完整性和 Token 成本,是超长对话、长期会话的最优解决方案,也是 LangChain 1.2 官方最推荐的长记忆策略。

长期跨会话记忆(用户级永久记忆)

上述短期记忆均绑定 单个 thread_id 会话,会话结束、新建对话后历史丢失。而长期记忆是跨 thread、跨会话、永久保存的用户全局记忆,用于存储用户固定属性、偏好、关键历史信息。

1.2 主推两种长期记忆实现方式,和 LangGraph 短期记忆完美搭配:

(1)向量库语义记忆(核心)

将用户对话中的关键信息(姓名、偏好、需求、习惯)抽取、向量化后存入向量数据库(Chroma、Pinecone、Weaviate),对话时相似度检索召回,注入上下文。适合个性化 AI、知识库问答、用户习惯记忆场景。

(2)结构化实体记忆

将用户信息结构化(字典、数据表),存入关系型数据库,存储固定字段信息(用户姓名、身份、业务配置、历史订单等),适合结构化业务场景。

完整层级关系

从上到下完整优先级、依赖关系:

  1. 底层存储:InMemorySaver / SqliteSaver / PostgresSaver(会话状态持久化)

  2. 中层优化:四种记忆压缩策略(解决长对话 Token 问题)

  3. 顶层扩展:向量/结构化长期记忆(跨会话用户记忆)

新版记忆核心优势

  1. 状态统一:记忆是 State 的一部分,统一管理,无外挂组件割裂问题

  2. 全自动管理:无需手动读写、拼接历史,框架自动处理

  3. 适配复杂场景:原生支持 Agent、工具调用、循环、分支、断点续跑

  4. 生产能力完备:从调试到企业级存储全覆盖,支持集群、持久化、回滚

官方生产选型

  • 本地开发调试:InMemorySaver

  • 单机中小型生产:SqliteSaver + 摘要记忆策略

  • 企业集群高可用:PostgresSaver + Token窗口/摘要策略

  • 需要用户长期个性化:叠加 向量库长期记忆

总结

LangChain 1.2 唯一主推的记忆体系只有三类(无任何旧版 LCEL 方案):

  1. 短期会话记忆(三种 Checkpointer 存储:内存、Sqlite、Postgres)

  2. 会话记忆压缩(四种策略:全量、滑动窗口、Token窗口、摘要)

  3. 长期跨会话记忆(向量语义记忆、结构化实体记忆)

这三套架构构成了新版 LangChain 生产级 Agent 的完整记忆能力,也是目前官方唯一迭代、维护、推荐的标准记忆方案。