目录
- 1. 引言
- 2. 记忆技术概览
- 2.1 短期记忆
- 2.2 长期记忆
- 2.3 情景记忆
- 2.4 语义记忆
- 3. 记忆技术的实现架构
- 3.1 记忆写入流程
- 3.2 记忆检索流程
- 4. RAG 技术概览
- 4.1 RAG 整体流程
- 4.2 检索技术
- 4.3 查询优化技术
- 4.4 重排序技术
- 4.5 上下文组装与生成
- 5. 为什么很多人直接用 LangGraph 的记忆模块?
- 5.1 LangGraph 记忆模块的核心能力
- 5.2 为什么选择 LangGraph 而非自研?
- 5.3 何时仍需要自研?
- 6. LangGraph 与 Deep Agent 的记忆与 RAG 对比
- 6.1 记忆能力对比
- 6.2 RAG 能力对比
- 6.3 选型建议
- 7. 记忆与 RAG 的协同
- 7.1 记忆增强检索
- 7.2 RAG 结果写入记忆
- 7.3 统一的知识管理
- 8. 实践建议
- 8.1 技术选型参考
- 8.2 工程落地要点
- 9. 总结
1. 引言
随着大语言模型(LLM)应用的深入,单一的"输入-输出"交互模式已无法满足复杂任务的需求。Deep Agent 框架通过引入**记忆(Memory)与检索增强生成(RAG)**两大核心机制,让智能体具备了持续学习、上下文感知与知识扩展的能力。本文将系统梳理 Deep Agent 框架中记忆与 RAG 的关键技术,帮助读者建立完整的技术认知。
2. 记忆技术概览
记忆是智能体区别于普通对话系统的核心能力。Deep Agent 框架中的记忆体系可分为以下几类:
2.1 短期记忆(Short-term Memory)
短期记忆对应对话过程中的上下文窗口,通常由 LLM 的 context window 承载。关键技术包括:
- 上下文窗口管理:通过滑动窗口、摘要压缩等方式控制 token 消耗,避免超出模型上下文限制。
- 对话状态跟踪:记录当前任务的中间状态、用户意图与已执行动作,保证多轮交互的连贯性。
- 缓存机制:对重复计算或高频访问的中间结果进行缓存,提升响应速度。
2.2 长期记忆(Long-term Memory)
长期记忆用于跨会话持久化存储重要信息,是智能体"越用越聪明"的基础。主要技术包括:
- 向量数据库存储:将重要事实、用户偏好、历史决策编码为向量,存入向量数据库(如 Chroma、FAISS、Milvus)。
- 结构化知识库:以实体-关系三元组形式存储领域知识,支持精确查询与推理。
- 记忆写入策略:通过重要性评分、时效性评估等机制,决定哪些信息值得写入长期记忆。
- 记忆遗忘与更新:定期清理过期或低价值记忆,保持记忆库的准确性与时效性。
2.3 情景记忆(Episodic Memory)
情景记忆记录具体的交互事件与经验,帮助智能体从历史案例中学习。关键技术包括:
- 事件日志记录:完整记录每次交互的输入、输出、工具调用与反馈。
- 经验回放(Experience Replay):从历史事件中采样相似案例,辅助当前决策。
- 案例推理(Case-Based Reasoning):通过检索相似历史案例,复用其解决方案。
2.4 语义记忆(Semantic Memory)
语义记忆存储抽象的概念、规则与常识,是智能体理解世界的知识底座。关键技术包括:
- 知识图谱嵌入:将实体与关系映射到低维向量空间,支持语义相似度计算。
- 规则库管理:维护业务规则、约束条件与推理逻辑。
- 概念分层组织:以本体(Ontology)方式组织概念层级,支持泛化与推理。
3. 记忆技术的实现架构
Deep Agent 框架中的记忆模块通常采用分层架构,各层之间通过统一的接口协作:
3.1 记忆写入流程
classMemoryManager:def__init__(self):self.short_term=ShortTermMemory()self.long_term=LongTermMemory()self.episodic=EpisodicMemory()self.semantic=SemanticMemory()defwrite(self,event,importance_score):# 短期记忆直接写入self.short_term.add(event)# 根据重要性决定是否写入长期记忆ifimportance_score>0.7:self.long_term.add(event)# 记录交互经验self.episodic.record(event)# 提取抽象知识knowledge=self.extract_knowledge(event)ifknowledge:self.semantic.add(knowledge)3.2 记忆检索流程
defretrieve(self,query,top_k=5):# 先查短期记忆short_results=self.short_term.search(query)# 再查长期记忆(向量相似度检索)long_results=self.long_term.search(query,top_k)# 结合情景记忆中的相似案例episodic_results=self.episodic.search(query,top_k)# 融合语义记忆中的相关知识semantic_results=self.semantic.search(query,top_k)# 综合排序返回returnself.merge_and_rank(short_results,long_results,episodic_results,semantic_results)4. RAG 技术概览
检索增强生成(Retrieval-Augmented Generation)通过外部知识检索弥补 LLM 的知识局限,是 Deep Agent 框架中另一项核心技术。
4.1 RAG 整体流程
4.2 检索技术
4.2.1 向量检索(Dense Retrieval)
- 嵌入模型:使用 BERT、Sentence-BERT、OpenAI Embedding 等模型将文本映射为向量。
- 相似度计算:通过余弦相似度、内积等方式计算查询与文档的语义距离。
- ANN 索引:使用 HNSW、IVF 等近似最近邻算法加速大规模检索。
4.2.2 稀疏检索(Sparse Retrieval)
- BM25 算法:基于词频与逆文档频率的经典检索方法,对精确关键词匹配效果好。
- TF-IDF 加权:衡量词项在文档中的重要程度。
- 倒排索引:高效支持关键词查询。
4.2.3 混合检索(Hybrid Retrieval)
结合向量检索与稀疏检索的优势,通过加权融合提升召回质量:
defhybrid_search(query,dense_weight=0.6,sparse_weight=0.4):dense_results=vector_search(query)sparse_results=bm25_search(query)# 加权融合merged={}fordoc_id,scoreindense_results.items():merged[doc_id]=score*dense_weightfordoc_id,scoreinsparse_results.items():merged[doc_id]=merged.get(doc_id,0)+score*sparse_weight# 按融合分数排序returnsorted(merged.items(),key=lambdax:x[1],reverse=True)4.3 查询优化技术
- 查询改写(Query Rewriting):将口语化问题改写为更利于检索的规范表达。
- 查询扩展(Query Expansion):通过同义词、相关词扩展查询,提升召回率。
- 多查询策略(Multi-Query):生成多个查询变体并行检索,再合并结果。
- HyDE(Hypothetical Document Embeddings):先让 LLM 生成假设性回答,再用该回答的向量进行检索。
4.4 重排序技术(Reranking)
检索出的候选文档需经过重排序,将最相关的内容排在前面:
- 交叉编码器(Cross-Encoder):将查询与文档拼接后输入模型,计算精确相关度。
- LLM 重排序:利用 LLM 的语义理解能力对候选文档打分。
- 多级重排:先粗排再精排,平衡效率与效果。
4.5 上下文组装与生成
- 上下文压缩:对检索到的长文档进行摘要或截断,控制输入长度。
- 去重与去噪:过滤重复、矛盾或低质量内容。
- 提示词模板:将检索结果与用户问题组装为结构化的 LLM 提示词。
- 引用溯源:在回答中标注信息来源,提升可信度。
5. 为什么很多人直接用 LangGraph 的记忆模块?
在工程实践中,很多开发者并不从零实现记忆体系,而是直接选用LangGraph内置的记忆模块。这并非因为 LangGraph 的记忆技术更"高级",而是因为它把本文前面讲到的记忆能力做成了开箱即用、与图执行引擎深度绑定的组件,大幅降低了落地成本。
5.1 LangGraph 记忆模块的核心能力
LangGraph 的记忆模块主要围绕"状态(State)"展开,与本文 2.1 节的短期记忆、2.2 节的长期记忆一一对应:
- 短期记忆(Thread-scoped Memory):LangGraph 通过
State与Checkpointer维护对话线程内的上下文,等价于本文的短期记忆层。它自动保存每个节点的中间状态,支持多轮对话的连贯执行。 - 长期记忆(Cross-thread Memory):LangGraph 提供
Store机制,将重要信息跨会话持久化,等价于本文的长期记忆层。开发者可以用Store保存用户画像、历史偏好,并在后续会话中检索复用。 - 记忆检索接口:LangGraph 的
Store支持按命名空间(namespace)组织数据,并提供语义检索能力,与本文 3.2 节的记忆检索流程对应。
fromlanggraph.store.memoryimportInMemoryStore# 长期记忆:跨会话持久化用户偏好store=InMemoryStore()# 写入记忆store.put(("user","alice"),"preference",{"topic":"langgraph","level":"advanced"})# 检索记忆item=store.get(("user","alice"),"preference")print(item.value)# {"topic": "langgraph", "level": "advanced"}5.2 为什么选择 LangGraph 而非自研?
| 对比维度 | 自研记忆体系 | LangGraph 记忆模块 |
|---|---|---|
| 开发成本 | 需自行设计分层架构与接口 | 开箱即用,配置即可 |
| 与执行引擎耦合 | 需手动接入决策流程 | 与图执行天然绑定,状态自动流转 |
| 多线程管理 | 需自行实现会话隔离 | Thread 机制原生支持 |
| 持久化方案 | 需对接向量库/数据库 | Checkpointer + Store 内置 |
| 生态与维护 | 需自行迭代 | 社区活跃,持续更新 |
5.3 何时仍需要自研?
LangGraph 记忆模块虽方便,但并非万能:
- 深度定制:需要复杂的情景记忆、语义记忆(知识图谱)时,LangGraph 默认模块覆盖有限,仍需结合本文 2.3、2.4 节的技术自研扩展。
- 大规模检索优化:对检索性能、混合检索、重排序有极致要求时,可基于 LangGraph 的
Store接口对接自研的向量检索与重排链路。 - 多记忆类型融合:需要将短期、长期、情景、语义四类记忆统一调度时,可在 LangGraph 之上构建本文 3 节所述的分层记忆管理器。
一句话总结:LangGraph 记忆模块是"开箱即用的短期+长期记忆",适合快速落地;当需要情景记忆、语义记忆或深度定制检索时,再在其上叠加自研能力。
6. LangGraph 与 Deep Agent 的记忆与 RAG 对比
前面分别介绍了 Deep Agent 的记忆/RAG 技术,以及 LangGraph 的记忆模块。下面从记忆与 RAG 两个维度,对两个框架做系统对比,帮助读者在选型时做出更清晰的判断。
6.1 记忆能力对比
| 对比维度 | Deep Agent | LangGraph |
|---|---|---|
| 短期记忆 | 上下文窗口管理、对话状态跟踪、缓存机制 | State+Checkpointer自动保存节点中间状态 |
| 长期记忆 | 向量数据库 + 结构化知识库,自定义写入/遗忘策略 | Store跨会话持久化,按命名空间组织 |
| 情景记忆 | 事件日志 + 经验回放 + 案例推理 | 默认不内置,需自行扩展 |
| 语义记忆 | 知识图谱嵌入 + 规则库 + 本体组织 | 默认不内置,需自行扩展 |
| 记忆检索 | 多类型记忆融合排序(短期/长期/情景/语义) | Store语义检索,按命名空间过滤 |
| 记忆写入策略 | 重要性评分、时效性评估、遗忘更新 | put直接写入,策略由开发者自定义 |
小结:Deep Agent 的记忆体系更完整,覆盖四类记忆并强调写入/遗忘策略;LangGraph 开箱即用地提供短期+长期记忆,情景与语义记忆需自行扩展。
6.2 RAG 能力对比
| 对比维度 | Deep Agent | LangGraph |
|---|---|---|
| 检索方式 | 向量检索、稀疏检索、混合检索 | 依赖外部检索器(如 LangChain 的 Retriever) |
| 查询优化 | 查询改写、扩展、多查询、HyDE | 需自行接入 LangChain 的查询改写组件 |
| 重排序 | 交叉编码器、LLM 重排、多级重排 | 需自行接入 LangChain 的重排组件 |
| 上下文组装 | 压缩、去噪、提示词模板、引用溯源 | 通过图节点编排,将检索结果注入状态 |
| 与记忆协同 | 记忆增强检索、RAG 结果写回记忆 | 可在图执行中手动串联 Store 与检索器 |
小结:Deep Agent 将 RAG 的检索、优化、重排、组装作为框架内的一等能力;LangGraph 本身不内置检索算法,而是通过图编排把 LangChain 生态的检索组件串联起来,灵活性更高但需要更多组装工作。
6.3 选型建议
- 快速落地、以对话为主:选 LangGraph,其
State+Store开箱即用,配合 LangChain 检索器即可搭建基础 RAG。 - 需要完整记忆体系(情景/语义):选 Deep Agent,或基于 LangGraph 自行扩展四类记忆。
- 对检索质量有极致要求:两者都需自研或接入混合检索、重排序链路,Deep Agent 内置更省事。
- 深度定制执行流程:LangGraph 的图执行模型更灵活,适合把记忆与 RAG 编排进复杂工作流。
一句话总结:LangGraph 胜在"开箱即用 + 灵活编排",Deep Agent 胜在"记忆/RAG 能力内置完整";实际选型取决于你对记忆深度与检索质量的要求。
7. 记忆与 RAG 的协同
记忆与 RAG 并非孤立的技术,二者在 Deep Agent 框架中深度融合:
7.1 记忆增强检索
- 将长期记忆中的用户偏好作为检索的过滤条件,提升个性化。
- 将情景记忆中的历史案例作为检索的扩展来源,丰富上下文。
7.2 RAG 结果写入记忆
- 将 RAG 检索到的高质量知识沉淀到长期记忆中,实现知识积累。
- 将用户的反馈与纠错写入记忆,持续优化后续检索。
7.3 统一的知识管理
8. 实践建议
8.1 技术选型参考
| 场景 | 推荐技术 | 说明 |
|---|---|---|
| 多轮对话 | 短期记忆 + 上下文压缩 | 控制 token 消耗 |
| 个性化服务 | 长期记忆 + 向量检索 | 存储用户画像 |
| 领域问答 | RAG + 混合检索 | 结合外部知识库 |
| 复杂推理 | 情景记忆 + 案例推理 | 复用历史经验 |
| 知识积累 | 语义记忆 + 知识图谱 | 构建结构化知识 |
8.2 工程落地要点
- 记忆容量管理:设置合理的记忆上限,避免无限增长导致检索退化。
- 检索质量监控:定期评估检索准确率,及时调整嵌入模型与索引参数。
- 隐私与安全:对敏感记忆数据加密存储,设置访问权限。
- 性能优化:使用缓存、异步写入、批量索引等技术提升系统吞吐。
9. 总结
Deep Agent 框架中的记忆技术为智能体提供了持续学习与上下文感知的能力,涵盖短期记忆、长期记忆、情景记忆与语义记忆等多个层次;RAG 技术则通过向量检索、稀疏检索、混合检索、重排序等环节,让智能体能够动态接入外部知识。二者协同工作,构成了智能体知识管理与决策支持的核心底座。理解并善用这些技术,是构建高质量 Deep Agent 应用的关键一步。