全部文章
模型进展2026-05-29

KV Cache 深度解密:为什么本地 LLM 能记住对话

Context、Chat History、KV Cache、Long-term Memory 四个概念一次拆清:KV Cache 不是知识,是计算中间状态;Session Memory 不是真正记住,是激活窗口内的临时可用。

本地 LLM 能继续对话,因为运行时保持了激活上下文可用,也因为 KV Cache 让模型复用已经做过的计算工作。

听起来像记忆,但这和学到的知识、数据库、或长期个人记忆不是同一回事。

#四个概念一次拆清

#Context(上下文)

模型在生成 token 时能看到的所有信息。包括:

  • System prompt
  • User messages
  • Assistant responses
  • 任何通过 API 传入的内容

这是模型「看到」的东西,但每次请求都是独立的,不跨 session 保留。

#Chat History(聊天历史)

你在 UI 里看到的对话记录。它保存在应用层,不在模型层。每次对话,你的消息和 AI 的回复都被存储起来,下次请求时重新发送给模型。

模型「记起」对话,是因为你在每次请求时把历史消息重新发给它,而不是模型真的记住了。

#KV Cache(键值缓存)

这是模型内部的技术实现。

当模型处理一个序列时,它需要计算每个 token 的 Key 和 Value 向量。KV Cache 保存这些计算结果,这样下次生成 token 时不需要重新计算之前所有 token 的 K 和 V。

作用:加速生成 ——但它是模型内部的一次性计算副产品,不是存储机制。

#Long-term Memory(长期记忆)

模型权重中编码的知识。这是预训练时学到的,在模型的生命周期内保持固定。

不包括你上周告诉它的任何事情,不包括你的偏好,不包括你上传的文档(除非你把它放到当前请求的上下文中)。

#为什么本地 LLM 能「继续」对话

一个常见的初级解释:

「模型记住了我说的。」

这方向上是有用的,但技术上是粗糙的。

模型本身不是在改权重。不是在永久学习你的偏好。不是在把消息加到内部知识里。

相反,运行时把你的之前的 tokens 保存在激活 session 中,模型在生成下一个 token 时可以 attend 到这些 tokens。

那个激活 session 是临时的。

#关键区别

正常推理时,模型不是从对话中学习。 它是用对话作为激活上下文。

当你关掉窗口、清除 session、或重启服务时,那个 KV Cache 就消失了。除非你的应用层把聊天历史保存下来,并在下次请求时重新发送给模型,否则模型不记得任何事情。

这就是为什么「session memory」这个词容易误导——它听起来像记忆,实际上只是「当前激活上下文窗口内的临时可用」。

#为什么模型会「忘记」

当对话超出 context window 时,早期的 tokens 会被推出窗口。此时模型无法再 attend 到它们,看起来就像「忘了」之前说过的内容。

这不是模型真的忘了,而是那些内容不在它能看到的上下文中了。

KV Cache 是计算优化,不是记忆系统。 模型没有真正记住任何东西——它只是在你愿意支付 token 的范围内,把足够的上下文维持在它能访问的地方。