当前位置: 首页 > news >正文

[智能体-257]:智能体的短期记忆,即memory;长期记忆,即RAG

Memory = 运行内存 RAM:只存本次对话上下文,进程在数据在、会话销毁数据丢;短期记忆,只用于本轮多轮聊天拼接 Prompt。

RAG = 机械硬盘:文档落地向量库持久化存储,永久保存全量私有资料;跨会话全局知识库,需要时按需检索。

一、核心定义与原理

1. Memory(短期记忆:会话上下文)

  1. 存储内容:历史聊天消息(HumanMessage/AIMessage)
  2. 生命周期:绑定单次会话 ID,程序重启 / 会话结束 → 数据清空
  3. 使用逻辑:每次提问自动把历史对话拼入 Prompt,实现多轮连贯对话
  4. ** 存储载体:内存数组、Redis (会话缓存),不会存入向量库

python

运行

from langchain_core.chat_history import InMemoryChatMessageHistory history = InMemoryChatMessageHistory() # 一轮一问一答自动append消息,只在当前会话生效 history.add_user_message("报销标准?") history.add_ai_message("一线350一晚")

2. RAG(长期记忆:全局知识库)

  1. 存储内容:企业合同、规章、产品文档、海量私有非结构化文本
  2. 生命周期:文档切片→向量化→写入向量库 (Chroma/Milvus),永久落盘
  3. 使用逻辑:用户提问 → 向量相似度检索文档 → 文档作为参考上下文拼入 Prompt
  4. 跨会话:A 用户、B 用户、不同聊天会话共用同一套知识库

二、5 点关键差异

维度Memory 短期记忆RAG 长期记忆
存储对象聊天历史对话业务文档、知识库原文
存活周期

单次会话有效,临时缓存

在会话session的不同chat中有效

永久持久化,服务重启仍存在
触发时机每次对话必加载历史固定 RAG:每次必检索;Agent-RAG:LLM 按需检索
作用

标准化、常识、通识:理解上下文指代(它、这个、如上所述)

定制化、个性化、专有:解决大模型知识截止、私有数据、幻觉问题

部署位置内存 / 会话缓存向量数据库 / 文件存储

三、三种落地组合方案(工程最常用)

方案 1:纯对话机器人(Memory + 无 RAG,L2)

只靠历史上下文聊天,没有私有知识库,只记住本轮对话内容。

python

运行

def get_hist(_): return history.messages chat_chain = {"input":RunnablePassthrough(),"history":get_hist} | prompt | llm

方案 2:带会话记忆的固定 RAG(Memory+RAG,L3 企业客服)-- 固定流程

  1. Memory 保存多轮聊天,解决指代;
  2. RAG 固定前置检索,拿企业资料;

plaintext

用户问题→读取聊天历史→RAG查知识库→历史+文档+问题一起进Prompt

方案 3:Agent+Memory+RAG (封装 Tool,L4 智能体) --大模型动态流程

  • Memory:Agent 内部 scratchpad + 会话聊天记忆,保存本轮思考与对话;
  • RAG:封装 RetrieverTool,LLM缺资料才调用知识库常识直接用模型固有知识。

四、容易混淆的两个概念澄清

  1. Agent 内部 scratchpad ≠ Memoryscratchpad:保存 ReAct/FC 每一轮「思考 - 工具 - 结果」步骤,是智能体任务临时草稿;Memory:用户聊天对话历史,面向用户。

  2. RAG 不能替代 Memory,Memory 不能替代 RAG

  • 没有 Memory:多轮对话无法理解代词;
  • 没有 RAG:模型不知道企业内部规章制度。

五、拓展:长期对话记忆落地(会话数据落库 = 会话 RAG)

如果需要跨会话记住用户历史聊天(数月前聊天记录):把历史聊天消息存入向量库,变成聊天 RAG,提问时检索过往历史,此时聊天记录从「短期 Memory」升级为「长期 RAG 记忆」。

最简总结

  • Memory:记人话(短期聊天)
  • RAG:记资料(长期文档)
http://www.rkmt.cn/news/1464798.html

相关文章:

  • Fit Analytics Innovation重获独立以构建AI电商的未来
  • 从Moment.js到Day.js:一个前端时间库的迁移实战与性能优化指南
  • 生物医学知识图谱驱动的临床聊天机器人构建实践
  • Mac Mouse Fix 终极指南:如何让你的普通鼠标在macOS上超越苹果触控板
  • 实战应用开发:基于快马平台构建可复用的JS质数工具库模块
  • 实战复盘:用JTS处理物流配送中的‘最近提货点’与‘子线路’规划
  • 避坑指南:nRF52832主机连接从机时NRF_ERROR_INVALID_STATE错误分析与解决
  • Mac Mouse Fix:让普通鼠标在macOS上拥有苹果级体验的终极指南
  • 企业级媒体管理终极指南:如何用MediaCMS构建自主可控的视频门户
  • 上海入境就医服务知名公司
  • 从ISE到Vivado:一个老FPGA工程师的调试工具迁移心得(ILA/VIO篇)
  • 别只盯着单片机!用古老的555定时器和4017芯片DIY一个可调速度的流水灯(附元件清单和焊接要点)
  • 别再死记命令了!用eNSP图解二层与三层交换机连接路由器的本质区别
  • 给硬件工程师的PCIe BAR配置实战:手把手教你用Wireshark和lspci分析设备地址空间
  • AI标注效率提升300%的5个实战技巧:从零搭建LLM+CV协同标注流水线(含开源工具链配置清单)
  • 指纹识别算法实战:如何用Matlab优化特征点匹配的准确率?
  • AnythingLLM私有知识库解决方案实战指南:从本地部署到企业级应用深度解析
  • Python混合并发架构:asyncio+ProcessPool实现类Go协程体验
  • 避坑!用Thonny调试STM32F401 MicroPython项目时程序响应慢/不执行的排查与解决
  • 深度解析Kronos金融AI模型:从架构设计到实战应用的完整指南
  • 3步掌握Windows系统深度安全检测:OpenArk反Rootkit工具实战指南
  • 告别数据焦虑:用mootdx构建你的量化交易数据基础设施
  • Java纯代码表达式计算器:支持$变量传参、sin/log/max等函数及 || !逻辑运算
  • 从ADS仿真到PCB打样:手把手复现四臂螺旋天线馈电网络(含S参数深度解读)
  • Oops Framework-3-Oops Framework项目创建
  • 影刀RPA店群自动化架构实战:Python协同多店铺类型差异化管理与动态流程适配
  • Chain of Thought(CoT)提示工程实战指南:从原理到终端命令行落地
  • 声壳碰撞引力波:数值模拟与谱特征分析
  • Python 3 文件操作指南
  • 从理论到实践:Aguila-7B的tokenizer适配与嵌入层调整技术详解