400-100-5265

预约演示

大模型短期记忆vs长期记忆:上下文窗口与RAG

2026-02-04

【导读】很多人把LLM的“记忆”理解成像人一样的长期存储,但在智能体(Agent)体系里,Memory往往分为Short-term memory与Long-term memory两套机制:前者靠上下文窗口把“刚聊过的内容”带回模型,后者则通过RAG把跨会话的信息持久化到外部存储,再在需要时检索回填到Prompt。理解这两者的原理、局限与工程实现,是搭建可用智能体、控制tokens成本与提升回答稳定性的关键。

一、Short-term memory:靠上下文窗口“临时记住”会话

在以LLM为核心的智能体架构中,Short-term memory通常指:智能体在单次会话内维持即时上下文的能力。它并不等同于模型在参数里“学会了”你的对话,而是一个更工程化、更直接的机制——把对话历史、中间推理步骤等内容拼进Prompt,再作为请求参数发送给LLM

1)工作机制:Prompt携带历史上下文

智能体每次调用LLM时,会将以下内容(全部或部分)放入上下文窗口(context window):

  • 历史对话(user/assistant messages)
  • 系统提示词(system prompt)
  • 工具调用结果(tool outputs)
  • 过程性中间信息(有时包括 Chain of Thought 的变体内容或“中间推理痕迹”)

因此,所谓短期记忆,本质是:“你把它带上,它就记得;你不带,它就不知道。”

2)局限性:窗口上限、成本与“越长越钝”

Short-term memory的硬约束来自上下文窗口的容量与成本模型:

  • 窗口限制导致遗忘:对话越长,越早的信息越可能因为超出context window而被截断,表现为“突然忘记你前面说过什么”。
  • tokens计费压力:多数API按输入/输出tokens计费,上下文越长,请求越贵;并且会显著拖慢响应时间。
  • 长上下文质量退化:工程实践中常见现象是:上下文越长,模型越容易出现注意力分散、信息抓取不准,甚至“答非所问”。业界也把这类现象概括为长上下文下的能力衰减问题(一些研究将其称为 context rot 一类现象)。

3)常见工程处理:滑动窗口与摘要法

为在“记住更多”与“成本/性能”之间做平衡,智能体一般会用两类策略:

  • 滑动窗口(sliding window):只保留最近N轮对话,把更早内容直接丢弃。实现简单、成本可控,但会丢失早期关键约束。
  • 摘要法(summarization):将长对话压缩为一段摘要,再把摘要与近期对话一起带入上下文。优点是节省tokens;缺点是摘要质量一旦偏差,模型会基于“压缩后的错误信息”继续推理。

4)一个直观现象:上下文轮数就是“短期记忆的长度”

在一些客户端或智能体框架里,你会看到类似“上下文数/上下文轮数”的设置。其含义往往很直接:请求时最多携带多少轮对话。当轮数超过上限,最早的消息就不会再进入下一次请求,自然也就“被遗忘”。

这也解释了一个常见误区:把上下文数拉满并不等于体验必然变好——它同时带来:

  • 更高tokens账单
  • 更慢的响应
  • 更复杂的干扰信息,降低回答稳定性

二、Long-term memory:用RAG把记忆“放到模型外面”

如果说Short-term memory解决的是“这一段对话怎么不断片”,那么Long-term memory面对的是另一类需求:跨会话、跨天甚至跨月地保留信息,并在未来需要时重新取回使用。由于LLM本身不具备可靠的持久化存储能力,Long-term memory几乎都要借助外部系统完成。

1)典型实现:RAG + Embeddings + 向量数据库

Long-term memory的主流工程路线是检索增强生成(RAG):

  1. 将“值得记住的信息”做向量化:生成Embeddings
  2. 把Embeddings与原文片段写入存储(常见是向量数据库)
  3. 当用户提出新问题时,先做语义检索(similarity search)
  4. 将检索到的相关片段作为“外部记忆”回填到上下文窗口
  5. 再让LLM基于这些片段生成答案

关键点在于:长期记忆不是让模型自己记住,而是让系统在需要时把相关内容“找回来”塞进Prompt。所以Long-term memory最终仍会回到context window,只不过“内容来源”变成了外部检索而不是完整对话历史。

2)记忆类型更细的分法:Episodic/Semantic/Procedural

在智能体研究与工程实践中,长期记忆经常进一步拆成三类,便于决定“存什么、怎么用”:

  • Episodic Memory(情境记忆):记录具体经历、事件轨迹
    例:用户上周二在上海出差、提到喜欢某家咖啡店。
  • Semantic Memory(语义记忆):更抽象、更稳定的事实与偏好
    例:用户对花生过敏、岗位需要熟悉Transformer。
  • Procedural Memory(程序记忆):可复用的技能、步骤或SOP
    例:智能体调用某个API的固定流程、工具链编排方式。

在企业落地时,这种分类往往对应不同的存储策略与权限策略:事实类信息需要更强校验;流程类信息需要版本管理;事件类信息可能需要生命周期与过期机制。

3)长期记忆“看起来很美”,但也有坑

Long-term memory带来跨会话体验提升,但并不等于“装上就万事大吉”,常见挑战包括:

  • 记忆写入的正确性:很多系统由AI自动决策写入内容,如果没有与用户确认,可能把误解当成事实,形成“错误的长期偏见”。
  • 检索相关性与幻觉耦合:当检索结果不够相关时,模型可能“硬贴”检索片段进行回答,导致看似有依据、实则偏题。
  • 隐私与合规问题:长期记忆天然涉及持久化数据,必须考虑数据最小化、可删除、可追溯,以及不同角色的访问控制。
  • 更新与冲突:同一事实被多次写入不同版本(例如用户偏好变化),需要支持修改、合并、删除与时间戳优先级。

4)一个工程化流程:先检索、再回填、再异步更新

不少智能体会采用“读写分离”的记忆流水线:

  • 对话开始/中途:调用类似 Memory_Search 的工具检索相关记忆,回填到Prompt
  • 对话结束/异步:从本轮对话抽取“可记忆信息”,决定新增、修改或删除,并写回存储

这种模式的好处是:不让“写记忆”阻塞主链路,同时也更便于做审核与治理。

三、场景对比:什么时候用短期,什么时候要上长期

把两类记忆放在一起看,它们解决的问题并不重叠:

  • Short-term memory更适合
    • 单次任务型对话(一次性问答、一次性方案输出)
    • 强依赖近期上下文的协作(连续多轮澄清、逐步改稿)
    • 成本敏感、对跨会话复用要求不高的场景
  • Long-term memory更适合
    • 需要跨会话持续服务(客服、个人助理、长期项目协作)
    • 用户偏好/约束需要沉淀(禁忌、格式偏好、合规要求)
    • 知识需要长期复用(企业制度、产品资料、项目文档,配合RAG实现“可追溯依据”)

更现实的做法往往是组合:短期记忆负责“当前上下文不断片”,长期记忆负责“关键知识可复用”,两者在Prompt层汇合。工程团队需要重点优化的是:什么信息进入context window、什么信息进入向量数据库、以及检索回填的阈值与排序。

结语:技术背后的管理思考

从组织视角看,Short-term memory与Long-term memory的差异,类似“会议纪要”与“知识库体系”的分工:前者让团队在一个协作周期里保持对齐,后者让经验跨团队、跨项目沉淀复用。对企业而言,智能体是否可用,往往不取决于LLM本身有多“聪明”,而取决于记忆机制是否可控——上下文窗口如何限制tokens成本、RAG检索如何保证相关性、记忆写入如何校验事实、以及权限与合规如何落地。进一步说,这会直接影响岗位能力模型:不仅需要会写Prompt的人,也需要懂Embeddings、向量数据库、RAG评测与数据治理的人,来把“能聊”变成“能交付”。正如红海云在探索新一代人力资源管理解决方案时所强调的,技术的终极价值在于赋能组织:把分散的经验变成可检索、可复用、可审计的“组织记忆”,才能持续提升流程效率与人效表现。

创作声明:本内容包含AI辅助创作,观点仅供参考。