1. 为什么模型需要记忆能力
在自然语言处理领域,让AI模型记住对话历史一直是个棘手的问题。传统模型就像金鱼一样,每次交互都是全新的开始,这种"健忘症"严重限制了应用场景。想象一下,如果你每次跟客服聊天都要重复自己的订单号,那体验得多糟糕。
LangChain的Memory模块就是为解决这个问题而生的。它通过几种精妙的设计,让模型能够:
- 记住当前会话的完整历史(ConversationBufferMemory)
- 只保留最近N轮对话(ConversationBufferWindowMemory)
- 自动总结长期记忆(ConversationSummaryMemory)
- 甚至结合数据库实现永久记忆(ConversationEntityMemory)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心记忆机制解析
2.1 基础记忆容器工作原理
所有Memory类的基类都是BaseMemory,它定义了四个关键方法:
python复制class BaseMemory:
@property
def memory_variables(self) -> List[str]: ...
def load_memory_variables(self, inputs: Dict[str, Any]) -> Dict[str, Any]: ...
def save_context(self, inputs: Dict[str, Any], outputs: Dict[str, str]) -> None: ...
def clear(self) -> None: ...
实际使用时,最简单的ConversationBufferMemory内部维护着一个聊天记录列表。每次调用save_context()时,它会将用户输入和AI响应拼接成"Human: xxx\nAI: xxx"的格式存入列表。当需要生成prompt时,这些记录会被拼接成完整对话历史。
2.2 滑动窗口记忆实现
ConversationBufferWindowMemory在父类基础上增加了窗口大小控制:
python复制memory = ConversationBufferWindowMemory(k=3) # 只保留最近3轮对话
其核心逻辑
