AI Agent 的记忆,根本不是“它真的记住了”

  • King
  • 发布于 1天前
  • 阅读 44

很多人一听“AIAgent记忆”,脑子里会同时冒出一堆词:RAG向量数据库长期记忆聊天历史SQLiteHNSW看起来都像一回事,其实不是。把这件事讲透,只需要一句话:Agent不是像人一样把东西记在脑子里,而是系统在替它管理信息。理解了这句话,后面所有概念都会顺很多

很多人一听“AI Agent 记忆”,脑子里会同时冒出一堆词:

  • RAG
  • 向量数据库
  • 长期记忆
  • 聊天历史
  • SQLite
  • HNSW

看起来都像一回事,其实不是。

把这件事讲透,只需要一句话:

Agent 不是像人一样把东西记在脑子里,而是系统在替它管理信息。

理解了这句话,后面所有概念都会顺很多。

Agent 的“记忆”,其实只有三种

1. 短期记忆

就是当前这次对话正在用的信息。

比如你刚问了一个问题,下一句继续追问,它还能接得上。不是模型突然有了永久记忆,而是系统把前面的内容继续带给它了。

所以短期记忆本质上就是:当前上下文。

你可以把它理解成 Agent 手里正拿着的便签。


2. 长期记忆

就是以后还可能反复用到的信息。

比如:

  • 你的长期偏好
  • 你一直在做什么项目
  • 某个项目固定的背景和约束
  • 某些值得保留的经验结论

这不是把所有聊天记录都存起来,而是只留下“以后还可能有用”的部分。

所以长期记忆本质上就是:有选择地保存重要信息。

你可以把它理解成 Agent 抽屉里长期留着的笔记。


3. RAG

RAG 说白了就是:需要时去查资料。

比如去查:

  • 知识库
  • 文档
  • 代码
  • 笔记
  • 历史资料

它不等于“记住了”,更像“遇到问题先翻书”。

所以:

  • 短期记忆,保证当前这次对话不断片
  • 长期记忆,保证下次见面还能接上
  • RAG,保证不会的时候知道去哪查

这三样经常一起出现,所以很多人容易混。

那向量数据库到底是什么?

向量数据库不是记忆本身,它只是一个找东西的工具

做法通常是:

  • 先把文档变成向量
  • 再把用户问题也变成向量
  • 然后去找“意思最接近”的内容

所以向量数据库更像一个“按语义检索”的引擎。它可以被拿来做 RAG,也可以拿来做长期记忆检索,但它本身不等于记忆系统。

很多文章喜欢一句话带过:“接个向量库,Agent 就有记忆了。”这话不算全错,但不准确。

因为真正的记忆系统,不只是“能存、能搜”,还要解决这些问题:

  • 什么值得存
  • 什么不值得存
  • 旧信息怎么更新
  • 冲突信息怎么处理
  • 什么该长期保留
  • 什么应该忘掉

这些才是记忆系统真正难的地方。

那为什么有些 Agent 用 HNSW?

HNSW 是向量检索里很常见的一种方法。你不用记全名,只要知道它是干什么的:

它是为了让“按意思找内容”这件事更快、更稳。

为什么很多 Agent 喜欢用它?

因为 Agent 很怕漏掉关键资料。普通搜索漏一条结果,可能无所谓;但 Agent 如果少拿到一段关键上下文,后面的回答可能整条跑偏。

所以 Agent 很在意两件事:

  • 找得准
  • 找得快

HNSW 在这两件事之间,通常是一个很稳的平衡点,所以在很多向量库和 RAG 系统里都很常见。

简单说就是:HNSW 适合做语义检索。

那为什么有些 Agent 又用 SQLite + FTS5?

因为不是所有 Agent 都在解决“语义检索”问题。

很多 Agent 处理的内容,其实更适合按“字面”找,比如:

  • 报错信息
  • 函数名
  • 类名
  • 配置项
  • 文件路径
  • 命令参数
  • 版本号

这些内容最重要的不是“意思接近”,而是精确字符串本身

这时候,用 SQLite + FTS5 往往更合适。

FTS5 可以理解成 SQLite 里内置的一个轻量全文搜索能力,擅长按关键词、短语、文本内容去查。它特别适合:

  • 本地运行
  • 不想额外部署服务
  • 数据规模不大
  • 需要强关键词检索
  • 需要好调试

所以很多本地 Agent、代码助手、日志助手,很喜欢 SQLite + FTS5。不是因为它们“技术落后”,而是因为它们解决的问题更实际。

简单说就是:

  • FTS5 更像按字面找
  • HNSW 更像按意思找

真正该问的,不是谁更高级

很多人总想问:

到底 HNSW 高级,还是 SQLite + FTS5 高级?

其实这问题问偏了。

不是谁更高级,而是你到底在找什么。

如果你主要找的是:

  • 报错
  • 路径
  • 配置项
  • 名称
  • 命令
  • 明确关键词

那 SQLite + FTS5 往往很好用。

如果你主要找的是:

  • 语义相近的内容
  • 换种说法也要找到
  • 文档里没有原话但意思接近的片段

那 HNSW 这类向量检索方案更合适。

为什么很多系统最后两种都用?

因为现实里的用户提问,往往同时包含两种信号:

  • 一部分是关键词
  • 一部分是语义意图

比如一句话里,既有产品名、报错名、函数名,也有模糊的自然语言问题。

这时候只靠关键词不够,只靠语义也不够。于是很多真正能打的系统,最后都会走向一个更实用的方案:

关键词检索 + 语义检索一起上。

也就是:

  • 用 FTS5 负责按词找
  • 用向量检索负责按意思找
  • 最后把结果合并

这才更接近真实世界。

总结

AI Agent 的记忆,不是模型突然像人一样“全都记住了”,而是系统把信息分成三类:

  • 当前马上要用的,放在眼前
  • 以后还会用的,单独存起来
  • 需要时再去外面查的,临时检索回来

而 HNSW、向量库、SQLite、FTS5,本质上都只是这套信息管理体系里的不同工具。

Agent 不是会记忆,而是会管理信息。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC/Move开发