什么是会话记忆(Chat Memory)?有什么作用?

什么是会话记忆(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 的空间。

如果继续增加内容,超过了上下文窗口的限制,就可能出现截断、报错等情况

所以,两者的关系,可以简单理解为:

会话记忆 负责:"记住之前聊过什么"

上下文窗口 负责:"限制一次最多能处理多少内容"

两者的关系是:会话记忆 提供的历史信息需要放入上下文窗口中,因此会占用上下文窗口的容量

相关推荐
恼书:-(空寄3 个月前
Spring AI实战|ChatMemory Advisor记忆优化:Redis + Kryo持久化方案
spring ai·会话记忆
__土块__4 个月前
AI 会话记忆模块静默失效:一次从链路耦合到分层治理的工程复盘
可观测性·系统稳定性·生产故障·ai工程·会话记忆·故障复盘·后台设计
kong79069288 个月前
对话机器人-会话记忆
ai对话机器人·会话记忆
邂逅星河浪漫1 年前
【LangChain4j+Redis】会话记忆功能实现
java·spring boot·后端·阿里云·langchain4j·会话记忆