记忆存进库只是完成了一半,AI 智能体用得上它,全靠检索:新任务来了,从记忆库里把相关片段找出来,放到模型的上下文里。检索的目标很明确——把最相关的几条召回,其余的都留在库里不动。
按意思找,不靠字面硬碰
传统搜索靠关键词匹配,搜「写作偏好」就找含这四个字的条目。记忆检索不走这条路,它按语义找:把当前任务描述转成向量,和库里每条记忆的向量算相似度,距离近的就是候选。这样「我的行文习惯」能被「写作时注意什么」召回,哪怕两边一个相同的词都没有。
这就是写入环节做向量化的原因:没有向量,语义检索无从谈起。
召回的三道关:向量化、粗排、精挑
第一道是向量化:把当前任务的目标描述交给嵌入模型,生成查询向量。第二道是粗排:在向量库里做近邻搜索,快速捞出相似度排前的几十条候选,讲究速度。第三道是精挑:对候选再加工——按标签过滤、按时间衰减、按相关性重排——最后只留三五条真正有用的。
三道关各有取舍:粗排求全,宁多勿漏;精挑求精,宁缺毋滥。纳米AI、秘塔AI搜索这类产品的资料召回也是同一套思路的放大版。
三道关各管一段,量级和取舍都不一样。
| 关卡 | 这一步做什么 | 捞多少 | 图什么 |
|---|---|---|---|
| 向量化 | 把当前任务的目标描述交给嵌入模型,生成查询向量 | 一条查询向量 | 语义检索的起点,没有它无从谈起 |
| 粗排 | 在向量库里做近邻搜索,捞出相似度排前的候选 | 几十条 | 求全,宁多勿漏,讲究速度 |
| 精挑 | 按标签过滤、按时间衰减、按相关性重排 | 只留三五条 | 求精,宁缺毋滥 |
召回太多或太少都不好
召回太多,上下文被塞满,模型注意力被稀释,真正关键的那条反而被淹没;召回太少,模型缺信息,只能瞎猜或反复追问。数量控制是检索设计的核心参数,常见做法是定一个小的条数上限加一个相似度下限:相似度不够的,条数没满也不硬凑。
还有个实用技巧是给记忆打场景标签,检索时先按标签收窄范围再算相似度,既准又快。比如「写作类任务」标签下的记忆,只在写作任务里召回。
检索结果怎么进上下文
召回的片段不是原样粘贴。先做格式整理:每条前注明「这是你的长期记忆」「来自某月某日」,让模型分清哪些是当下的事实、哪些是历史参考。再按相关性排序,最相关放最前。最后控制总长度,给当前任务的新信息留足空间。
放进去之后,模型把记忆当作背景知识使用:回答风格向偏好靠拢,决策参考过往结论。检索质量好,模型一次到位;召回了一堆不相关的,模型会被带偏,这就是为什么检索环节值得反复打磨。
查不到怎么办
检索也可能空手而归。库里的确没有,就当没有,别硬编——这要靠系统明确告诉模型「未召回相关记忆,请按通用方式处理」。有库但没召回,多半是查询写得笼统,可以把任务目标改写得更具体再查一次,或扩大相似度门槛重捞一轮。
记忆检索速查
- 查询向量化,按语义相似度粗排
- 标签过滤加时间因素,精挑三五条
- 入上下文前注明来源与时间,控制总量
问你的智能体一个上个月说过的偏好,答得上来,检索链路就是通的。
延伸阅读:记忆怎么写进去的,见长期记忆是怎么写入的?摘要与向量化;检索完何时收工,参考循环是怎么退出的?完成判据,从原理到落地;记忆在多角色间怎么共享,见多 Agent 是怎么分派任务的?;接手者怎么获得背景,看Agent 之间的上下文怎么交接?。
换个问法再问记忆检索三句
- 向量检索一定优于关键词检索吗?:各有场景。专名、编号类查询关键词更准,模糊语义类向量更强,成熟系统两者混用互为补充。
- 每次任务都要检索全库吗?:不必。按任务类型先分桶,只在对应分桶里查,速度和准确率都更高。
- 召回的记忆过时了怎么办?:给记忆带时间戳并按新鲜度加权,同时依赖写入环节的更新机制把旧结论替换掉,两头一起治。


