很多人一听“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 不是会记忆,而是会管理信息。
夜雨聆风