最近刷到一条图文,作者主张自己做了套 AI agent 记忆系统:无向量、百分百召回、自动降噪、主动记忆,还说后面会开源。配文很燥——「性能怪兽,百分百召回!再也不用告诉 AI 才能记忆了!」

我正好在折腾一个 2000+ 篇笔记的知识库该上什么检索方案,这条恰好是「向量语义检索」的对立面。所以我没把它当热闹看,而是拆了个问题:这套「无向量百分百召回」到底是不是黑魔法?它和向量检索差在哪?一个上千篇的知识库,该选哪个?

结论先说:它不是黑魔法,而是把「判断相关」这件事,从「检索阶段的向量距离」搬到了「生成阶段的大模型阅读」。 用大模型的理解力,换掉了向量的近似性。值不值,看你的规模。

先看人家到底做了什么

图文里就一张图,是个 AI 编程工具接入这套记忆系统的「接入完成」截图,信息量不小:

  • 一个本地服务,跑在某个端口,状态「运行中,40 条记忆」
  • 对外三个接口:存(memo)/ 取(recall)/ 统计(stats)
  • namespace 分桶做隔离(把一批关键记忆写进一个命名空间)
  • 配一个 skill,驱动 agent 自动做两件事:对话开始时调 recall 检索相关记忆,对话结束时把重要事实 memo 存进去,全程不用人提醒

注意最后这点。它真正的卖点其实不是「无向量」,是主动——记忆这个动作被 skill 接管了,不再依赖你每次手动喊「记一下」。

「百分百召回」凭什么?

要搞懂它,得先搞懂向量检索的召回为什么天生就不到 100%

向量检索(就是大家说的 embedding RAG)的链路是:把问题和每条记忆都转成向量,算相似度,取最像的前 K 条。漏检是结构性的,四个口子:

  1. topK 截断——第 K 条之后的相关项,直接丢
  2. 向量本身有偏差——模型会把真相关的判远、把不相关的判近,中文、专有名词、短句尤其容易翻车
  3. 阈值过滤——低于相似度门槛的被丢,可它没准是对的
  4. 切块破坏语义——长文切块,关键句被切两半,谁都不够「像」

所以向量检索本质是「有损的近似最近邻」。召回不到 100%,是它的出厂设定,不是 bug。

那「无向量」怎么把召回拉满?核心就一句:不预先丢东西。

最可能的实现是:namespace 内不做语义筛选,把这个桶里的候选全部丢给大模型,让大模型自己读、自己判哪些相关。 「百分百召回」是因为根本没有「检索丢弃」这一步——桶里每条都是候选,自然一条不漏。「自动降噪」就是大模型读完全部、自己把无关的扔掉。

降噪的活,从「向量距离」换成了「大模型阅读」。这就是它的全部秘密。

它能成立的前提,藏在那张图里:40 条记忆。几十条全塞进上下文,毫无压力。桶小,全量给模型,又准又不漏——这才是「无向量」的底气。

摆一张对比表

无向量(桶内全量 + 大模型降噪)向量语义检索
召回率桶内可到 100%(不预筛)结构性 < 100%
语义泛化(问法和原文不重词)弱,得先召回到才轮到模型判强,这是向量的主场
规模上限受上下文限,几十~几百条/桶百万级,扩展性好
成本不用 embedding 模型,但全量进上下文 = token 贵embedding 一次性,检索省 token
工程复杂度低(一个服务 + 关键词索引)高(embedding 服务 + 向量库 + 重建)
可解释 / 漂移看得到匹配、不漂移黑盒,换 embedding 模型得全量重建
离线容易,纯本地可跑要带 embedding 模型

看明白没?这俩根本不是替代关系,是「召回兜底」和「语义补召」的关系。 无向量保证「桶内、词面上的不漏」,向量保证「语义相关的不漏」。各自都漏掉对方那一半,正好互补。

上千篇的知识库,到底怎么选

回到我自己的问题:2000 多篇笔记,该上哪种?

我的第一反应反而是——别急着上向量。 如果你的记忆只有几十上百条,「无向量 + 全量塞给模型 + 模型筛」就是最优解,简单、不漏、还可解释。上向量纯属给自己加复杂度。很多人是被「RAG」这个词唬住了,几十条笔记也要架个向量库,杀鸡用牛刀。

但到了几千篇这个量级,「无向量百分百召回」会破功:

  • 全量塞上下文?塞不下,也太贵
  • 退回「关键词匹配」?那对换了说法的查询必漏——比如笔记里写「带货钩子前 3 秒」,你问「短视频开头怎么抓人」,一个重复的词都没有,关键词检索直接两手空空。而这恰恰是你想要语义检索的原因。

所以几千篇规模的正解,不是二选一,是把两套缝起来:

问题
 → ① 先按目录/命名空间过滤,把范围缩小(抄它的 namespace)
 → ② 并联两路召回、取并集:
       · 关键词召回(保词面不漏)
       · 向量召回 topK(保语义不漏,补它的短板)
 → ③ 候选一起丢给大模型降噪精排(抄它的「大模型降噪」)
 → ④ 命中的内容注入对话

一句话:「无向量百分百召回」给你的是工程骨架(本地服务 + 命名空间 + 主动存取),向量给的是语义肌肉。不是无向量替代向量,是无向量的骨架 + 向量的语义补召 + 大模型降噪,三合一。

几条能直接拿走的判断

  • 「百分百召回」有前提,别被营销话术带跑。它的「百分百」要么靠桶小全量,要么靠词面重合,不是任意规模任意问法都 100%
  • 几十条选无向量,几千条上混合。 规模决定方案,不是越「先进」越好。
  • 最值得抄的不是「无向量」,是「主动」。 大多数人的知识库死在「存了从来不调」——它用 skill 驱动「对话一开始就自动检索」,这一刀正中要害。检索方式可以慢慢调,「主动调用」这个习惯是 0 和 1 的区别。
  • 它和向量是队友不是对手。 谁也别替代谁,各补对方漏的那一半。

最后留个钩子:作者说这套要开源。真开源了,第一件事就该去翻它的 recall 内核——看它「百分百召回」到底是桶内全量,还是关键词。前者只适合小桶,后者就坐实了「上千篇得补向量」。到时候再写一篇。