什么是会话记忆(Chat Memory)?有什么作用?
文章目录
- [什么是会话记忆(Chat Memory)?有什么作用?](#什么是会话记忆(Chat Memory)?有什么作用?)
- [1. 什么是会话记忆(Chat Memory)](#1. 什么是会话记忆(Chat Memory))
-
- [1.1 名称解释:当前对话的上下文状态](#1.1 名称解释:当前对话的上下文状态)
-
- [1. 主题与话题走向](#1. 主题与话题走向)
- [2. 指代关系](#2. 指代关系)
- [3. 用户意图和角色设定](#3. 用户意图和角色设定)
- [4. 历史对话的关键信息](#4. 历史对话的关键信息)
- [1.2 举个例子理解:](#1.2 举个例子理解:)
- [2. 会话记忆的作用](#2. 会话记忆的作用)
-
-
- [1. 上下文连贯](#1. 上下文连贯)
- [2. 减少重复输入](#2. 减少重复输入)
- [3. 个性化体验](#3. 个性化体验)
- [4. 多轮任务完成](#4. 多轮任务完成)
-
- [3. 会话记忆和上下文窗口(Context Window)是什么关系?](#3. 会话记忆和上下文窗口(Context Window)是什么关系?)
1. 什么是会话记忆(Chat Memory)
在对话系统中,会话记忆指的是模型对 历史对话内容的存储与利用机制,属于上下文理解的核心能力之一。
会话记忆包括:
- 用户之前说过的话
- 模型之前的回答
- 当前对话的上下文状态

1.1 名称解释:当前对话的上下文状态
本质上就是对话的整体语境与状态,主要包含下面 4 个部分:
1. 主题与话题走向
我们和大模型聊天,都会有对应的主题,比如聊技术、聊生活、聊经济。模型会记住当前正在聊什么。
话题走向,指对话主题的变化:是继续围绕原来话题聊,还是发生切换,比如从聊技术转到聊生活。
2. 指代关系
对话里经常会用到代词:它、他、她。
举例:你问 "哪种螃蟹最好吃?",AI 回答完,你接着问:"它的做法有哪些?"
这里的它,就指代前面提到的最好吃的螃蟹。上下文状态要把这种对应关系保存下来。
3. 用户意图和角色设定
-
用户意图:用户当下想达成什么目标。
比如用户问期末考试速通技巧,意图就是应付期末考试;用户刷面试题,意图就是准备面试。模型记住意图,回答才会贴合需求。
-
角色设定:模型识别出用户身份。
比如问考试复习,识别用户是学生,后续就会站在学生视角给出适配的回答。
4. 历史对话的关键信息
会话记忆本身已经存好了:
- 用户之前说过的话
- 模型之前的回答
那为什么还要单独提取关键信息?
核心原因:大模型存在最大上下文窗口,每一段对话都会消耗 token。
聊天轮次一多,完整历史全部送入模型,token 很容易超出上限。模型会把最早的内容直接截断丢弃,核心主题丢失后,AI 就容易跑题、答非所问。
举个通俗例子:
就像开插线板设计讨论会,如果一字不差记录所有人的闲聊和发言,内容会越记越长。本子写不下的时候,前面重要的设计需求就会被舍弃。
所以我们提炼关键信息:线长、插口数量、外观设计。用很少的 token 保存核心内容,过滤无效闲聊,守住对话主题,防止上下文超限。
简单总结:
完整历史会话会不断累积 token,受上下文窗口限制,过长会被截断,丢失早期主题信息。所以我们会提取关键信息做记忆压缩,用少量 token 保留对话核心,避免 AI 跑题。

1.2 举个例子理解:
1 用户:哪种螃蟹最好吃?
2 用户:它的做法有哪些?
这里的对话,我使用的是 deepseek
第二句话虽然没提 "哪种螃蟹最好吃",但模型能理解你是在延续上文问题,会基于第一个提问来进行回答 ------ 这就是会话记忆在起作用。
2. 会话记忆的作用
1. 上下文连贯
作用: 能理解"它""这个"等指代,让对话流畅。
例子:
你:什么是 Redis?
AI:Redis 是一种内存数据库。
你:它 为什么速度这么快?
AI:因为它主要在内存中读写数据。
这里 AI 能知道"它"指的是 Redis。
2. 减少重复输入
作用: 前面提供过的信息,后面不需要反复说明。
例子:
你:我的项目是 Spring Boot + Vue3,后端端口是 8081。
你:那 Nginx 怎么配置?
AI:可以将请求代理到 8081 端口。
你不需要再次说明项目技术栈和端口。
3. 个性化体验
作用: 根据用户的偏好调整回答。
例子:
你:我是 Java 初学者,讲代码时简单一点,多举例。
之后你问:什么是 Redis?
AI:会尽量用简单的语言和例子解释,而不是直接使用复杂术语。
4. 多轮任务完成
作用: 通过多次对话,逐步完成复杂任务。
例子:
你:帮我设计一个 AI 系统。
你:后端使用 Spring Boot。
你:AI 部分使用 Python。
你:帮我设计 Java 调用 Python 的方案。
AI 可以结合前面的信息,逐步完成整个系统设计。
3. 会话记忆和上下文窗口(Context Window)是什么关系?
- 会话记忆 :模型对 历史对话内容的存储与利用机制,属于上下文理解的核心能力之一。
- 上下文窗口 :大模型一次能够处理的 Token 总上限,通常包括输入 Token 和输出 Token。
两者的关系
可以把它们想象成一个背包:
上下文窗口 = 背包容量
会话记忆 = 背包里之前装进去的东西
你现在发送给 AI 的内容 = 现在准备装进去的东西
例如:
上下文窗口:10,000 Token
历史对话:6,000 Token
你现在发送给 AI 的内容:2,000 Token
系统提示词:1,000 Token
一共占用了:
6,000 + 2,000 + 1,000 = 9,000 Token
还剩下 1,000 Token 的空间。
如果继续增加内容,超过了上下文窗口的限制,就可能出现截断、报错等情况。
所以,两者的关系,可以简单理解为:
会话记忆 负责:"记住之前聊过什么"
上下文窗口 负责:"限制一次最多能处理多少内容"
两者的关系是:会话记忆 提供的历史信息需要放入上下文窗口中,因此会占用上下文窗口的容量。