大家好,我是何三,独立开发者

5000 条记忆,文件方案要吃掉 101,739 个 tokens,直接撑爆任何上下文窗口。而这个叫 YantrikDB 的数据库,同样的 5000 条记忆只花 ~70 tokens。省了 99.9%,精度反而从 66% 涨到 88%。

数据越多越准——跟我们认知里"塞的越多越乱"完全反着来。

yantrikdb_cover

AI 记忆的"死穴"

现在做 AI Agent 的兄弟应该都有这个体感:Agent 用久了就变笨。不是模型退化,是它的"记忆"烂了。

主流方案是啥?向量数据库。工作流基本就是:存一切 → Embed → 检索 Top-K → 塞进上下文 → 祈祷它有用。

这不叫记忆,这叫搜索引擎加了个上下文注入。

刚开始 100 条记忆还好,到了 500 条,光往上下文里塞就得 9807 个 tokens。1000 条直接逼近两万。5000 条?101,739 tokens——这已经不是哪个模型能装得下的了,连 200K 上下文的都塞不进去。

更要命的是,向量检索只看"语义相似度"。你跟 Agent 说"我上周决定用 PostgreSQL",又过了三天说"算了还是用 MySQL 吧"——它两段记忆都存着,下次问"我们用啥数据库"的时候,随机抽一个给你。

它分不清哪个新哪个旧,哪个是最终决定哪个是中间过程。就像你问一个人"午饭吃啥",他说"我昨天想过吃面,也想过吃火锅"然后沉默了——你等了半天发现他没给结论。

这就是向量数据库做记忆的根本缺陷:只存不管,只检不判

yantrikdb_01

YantrikDB 怎么干的

YantrikDB 的作者 Pranab Sarkar 琢磨了一个问题:人脑的记忆不是"存得多就聪明",恰恰相反——遗忘、合并、矛盾检测,才是记忆的核心能力

所以他造了一个"认知记忆引擎",核心就三件事:

1. 它会遗忘

每条记忆有重要性权重(0-1)和半衰期(half_life)。你记一条"周五前看 SLA 文档",重要性 0.4,半衰期一天。24 小时后这条记忆的相关性评分开始衰减,7 天后除非你主动提,不然 Agent 根本不会想起它。

就像你自己,一个月前老板随口说的一件事,你不翻聊天记录也记不起来——这不叫失忆,这叫大脑在正确地分配注意力。

2. 它会合并

开了一个站会,你往里头灌了 20 条碎片化的笔记。调一次 think(),20 条被合并成 5 条。

不是简单去重,是语义层面的合并——把碎片拼成完整的"记忆块"。原文说的是 20 fragments → 5 canonical memories。

(我跑了一下,合并效果确实不错,类似会议纪要的精简版,不会丢关键信息。)

3. 它会挑刺

你先告诉它"CEO 是 Alice",后来某次对话里又说"CEO 是 Bob"。

YantrikDB 不会傻乎乎地两份都存。think() 跑完之后会报一个冲突:

{"conflicts_found": 1,
 "conflicts": [{"memory_a": "CEO is Alice",
                "memory_b": "CEO is Bob",
                "type": "factual_contradiction"}]}

然后怎么办?不是它自己猜,是让 AI 去跟用户确认:"你之前说 CEO 是 Alice,现在说 Bob,哪个对?"

这个设计太对了。很多 Agent 框架的痛点就在这——记了一堆自相矛盾的东西,越用越混乱。YantrikDB 至少把矛盾暴露出来了。

yantrikdb_02

架构拆解

底层是 Rust,单文件嵌入式(跟 SQLite 一个路子),Python 和 TS 双语言绑定。它内部跑了五个索引:

  • Vector (HNSW):语义相似检索
  • Graph:实体关系图谱——"Alice" 和 "engineering" 之间有条边
  • Temporal:时间索引,支持"上周二发生了什么"这种问法
  • Decay Heap:衰减堆,按半衰期自动降低不活跃记忆的权重
  • Key-Value:快速事实存取

每次 recall 的时候不是只算向量余弦相似度,而是五个信号加权:语义相似 × 时间衰减 × 重要性 × 图谱距离 × 历史检索质量。

这个多信号评分才是它精度随数据增长反而提升的原因。数据越多,图谱越密,关系越清晰,检索越准。

支持 CRDT 多设备同步——这点挺实用的,你在手机和电脑上各跑一个 Agent,记忆能合并。不会出现"手机上的 Agent 不知道电脑上的 Agent 做了什么决策"的情况。

上手体验

三种用法,看你需要哪种:

Docker 一键启动:

docker run -p 7438:7438 ghcr.io/yantrikos/yantrikdb:latest
curl -X POST http://localhost:7438/v1/remember -d '{"text":"hello"}'

装完了。没报错。神奇。(这年头 Docker 能一次性跑起来的开源项目不多。)

Python 嵌入:

pip install yantrikdb
import yantrikdb
db = yantrikdb.YantrikDB("memory.db", embedding_dim=384)
db.set_embedder(SentenceTransformer("all-MiniLM-L6-v2"))
db.record("Alice leads engineering", importance=0.8)
db.recall("who leads the team?", top_k=3)
db.think()  # 合并、冲突检测、模式挖掘

MCP 接入 Claude Code / Cursor:

pip install yantrikdb-mcp

然后在 MCP 配置里加一下就行。Agent 自动回忆上下文,自动记录决策,自动检测矛盾。不用写提示词。

(这个 MCP 的 license 是 MIT,不会传染 AGPL,商用无压力。)

性能方面,官方数据是 2 核 LXC 集群,1689 条记忆,recall p50 延迟 112ms(其中 ~100ms 是 query embedding 的时间)。如果用预计算 embedding,recall 能压到 ~5ms。

对于嵌入式场景来说,够用了。

跟同类比一比

方案 干什么的 缺什么
Pinecone / Weaviate 向量最近邻检索 没有衰减、没有因果、不会自组织
Neo4j 结构化关系图 对模糊记忆不友好,不自适应
LangChain / Mem0 检索包装层 不是记忆架构,只是中间件
CLAUDE.md / 记忆文件 往上下文里灌所有东西 O(n) token 开销,没有相关性过滤

说白了,向量数据库是"仓库",YantrikDB 是"大脑"。仓库只管存取,大脑会遗忘、会整理、会判断矛盾。

话说 Pinecone 现在也学坏了,免费额度越来越抠,效果也就那样。Neo4j 更不用提,社区版一堆限制。开源方案里做"记忆管理"这个细分方向的,YantrikDB 确实是我见过的思路最清晰的一个。

一些顾虑

先说好的地方:Rust 写的,嵌入式单文件,思路正确,API 设计得也干净。作者甚至申请了美国专利(虽然开源了),说明这东西有正经的产品思考。

再说几个要留意的:

  1. 当前是 v0.5.11,hardened alpha。作者自己说的,server 部分跑了几个礼拜。嵌入式引擎在 YantrikOS 生态里用了一段时间了,但对外还是早期阶段。
  2. AGPL-3.0 开源协议。如果你要把引擎嵌入到自己的闭源产品里,需要注意。不过 MCP server 那个包是 MIT 的,通过 MCP 用就没这个问题。
  3. embedding 依赖外部模型。默认用的是 all-MiniLM-L6-v2,体积小但能力一般。如果你对语义精度有要求,得换更大的模型,延迟会上去。

总的来说,如果你想给自己的 AI Agent 加一个"像人一样的记忆系统",YantrikDB 值得试。别指望它是生产就绪的"开箱即用",但这个方向——认知记忆——大概率是未来 AI Agent 基础设施的标配。

同类延伸

如果你对 AI Agent 记忆管理感兴趣,这几个项目也值得关注:

  • Mem0github.com/mem0ai/mem0):做 Agent 记忆层比较早的项目,定位偏"检索增强",跟 YantrikDB 的"认知引擎"路线不同,各有侧重。
  • Zepgithub.com/getzep/zep):另一个做 AI 记忆的开源项目,带时间线摘要功能,适合聊天机器人场景。

觉得 AI Agent 基础设施有意思?我此前还写过《2025 年 GitHub 高性能神器排行榜》,关注后回复「工具」获取。

本文使用 MGO 编辑并发布

关注"何三笔记",回复"mgo" 免费下载使用