向量库时代结束了吗?ai-memory 的 file-first 设计与 Chroma 可编程记忆,两条路线谁更香? 向量库时代结束了吗ai-memory 的 file-first 设计与 Chroma 可编程记忆两条路线谁更香【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memoryAI 编程智能体正在经历一场集体失忆Claude Code 干了一半的活换到 Codex 就忘了架构结论同一个仓库换了台机器之前踩过的坑全部归零团队的十来个智能体各自攒着互不相通的笔记。于是给智能体装长期记忆成了 2026 年最拥挤的赛道——Mem0、Zep、MemOS、EverOS、TencentDB Agent Memory 接连登场传统向量数据库也纷纷升级成可编程记忆服务。但就在所有人都默认记忆 ≈ 向量库时ai-memory 交出了一份截然不同的答卷用 git 版控的 Markdown Wiki 当唯一事实源SQLite 只做派生索引默认路径零 LLM 调用。一边是 Chroma Foundation 从向量存储进化出的记忆即服务一边是文件即事实源的 file-first 路线。两条路线到底谁更香本文结合社区讨论与仓库源码把两边的工程账摊开算。两条路线的主张可编程服务 vs 文件即事实源先说可编程记忆阵营的主张。以 Chroma Foundation 为代表社区普遍把它理解为把传统向量数据库存向量—查向量的简单模式升级为具备时间线、多维索引、元数据驱动和可编程生命周期管理的记忆基础设施——Memory、Memory Stream、Memory Index 与 Memory Functions 四个层级支持重要性评估、自动总结、关联检索并可深度集成 LangChain 等框架。腾讯云开源的 TencentDB Agent Memory 走的是同一条路的另一变体不是简单的向量数据库而是集存储、检索、生命周期管理与访问控制于一体的结构化记忆中枢把会话、代码片段蒸馏成 Chat Memory / Skill / Wiki / CodeGraph 四类资产供多智能体共享访问。这两者的共同点是记忆的形态由服务端决定用户通过 API 读写。知识被转换成事实行、时间线或向量块检索靠相似度表达。而 ai-memory 的主张完全相反。仓库的设计决策里写得明明白白存储模型在DB-primarySQLite 为唯一事实源、Markdown-in-git primary、DB-primary 按需导出三个方案中反复权衡后选择了方案 B——Markdown 在 git 仓库里是事实源SQLite 只是派生索引。理由朴素但有力备份/迁移就是一个git clone或rsync数据库随时可从文件重建损坏可恢复Karpathy 的 LLM Wiki 构想本身就是磁盘上的 wiki用导出步骤伪造它会丢掉在 Obsidian 里直接查看的性质任何能读wiki/*.md的工具无需 MCP 集成即可共享记忆。落地到数据目录就是 README 中描述的这套结构data_dir/ ├── wiki/ # markdown source of truth, git-versioned ├── raw/ # immutable sanitized managed-workstream transcript segments ├── db/ # SQLite indexes, including FTS5, entities, and embeddings ├── models/ # reserved for local embedding models └── logs/ # rolling tracing output核心流程在架构文档中是一张完整数据流图生命周期钩子捕获SessionStart、UserPromptSubmit、PostToolUse 等→ 钩子路由器在类型化脱敏边界净化载荷 → 会话结束时规则式生成sessions/id.md摘要页并开出 Handoff 交接单 → 检索阶段多路融合 → 遗忘调度按层级衰减。注意几个关键差异点记忆会编译不是存储。原始钩子事件只是证据会话结束被编译成人类可读、可编辑的 wiki 页面冷数据还可以在零 LLM 的情况下做抽取式压缩保留 abstract、摘要和路径/错误码等 keep-token甚至用 DBSCAN 聚类去重——所有改写都走 supersede 而非 delete旧版本留在 git 版本链里restore-page随时能捞回来。记忆可以交接。Handoff 是类型化的协议owner-scoped、claim-once不是一段复制粘贴的总结文本。这直接命中标题里跨工具失忆的痛点Claude Code 干到一半退场Codex 在同一目录打开SessionStart 钩子自动取走交接单。记忆是可移植的标准格式。2.0 起 wiki 原生就是一个 Open Knowledge FormatOKF v0.2 bundle——每页带type、generated、sources、stale_after等标准元数据ai-memory export-okf导出的包任何 OKF-aware 工具都能读。Google 在 2026 年 6 月标准化了这套每概念一个 markdown 文件的格式等于给 file-first 路线盖了官方章。而服务端决定形态路线的隐含成本是事实源是不可读的。向量块、事实行、时间线都藏在二进制或远端 API 后面grep 不到、diff 不了、Obsidian 打不开。ai-memory 与同类工具的完整对比里反复出现的主题正是这个files you own、zero-LLM default、one binary。工程代价对比向量检索 vs FTS5 实体如果只谈主张两边都能自圆其说。真正的分水岭在工程代价。ai-memory 的检索核心是hybrid_search见 crates/ai-memory-store/src/reader.rsFTS5 全文 实体匹配 链接邻居扩展 可选向量余弦四路 RRF 融合k60Hybrid search: RRF-fuse FTS5 results with cosine-similarity over the stored embeddings … entity matches, and link-neighbour expansion — four RRF streams.每路流都可以独立降级到贡献为零没有 query_vec 就跳过向量流entities 表为空就跳过实体流图扩展仍从其他流产生的种子出发。这意味着向量不是必要条件而是第四路可选信号。这就是它对向量库时代结束了吗的回答向量没有消失但被降格了。这套设计省下了哪些钱FTS5 是 SQLite 内置的。pages_fts虚拟表由触发器自动同步查询准备逻辑crates/ai-memory-store/src/fts_query.rs负责把用户裸查询转成合法 MATCH多词默认 OR 连接、停用词过滤、对含标点的 token 加引号防语法错误、显式 FTS5 语法OR/AND/NOT/NEAR原样保留。没有外部服务、没有索引漂移。向量路线的运维坑是真实存在的。ai-memory 的交叉不变量 #8 要求{provider, model, dim}三元组去规范化存储在每一条向量旁边配置变更导致维度/模型不匹配时旧向量标记为 stale 并告警直到重新 embedding 完成——这是从 agentmemory 的实际 bug 中学来的教训。换模型 全库重嵌 一次性迁移成本这在可编程记忆服务里同样存在只是被服务商藏起来了。RRF 融合本身不需要训练。Reciprocal Rank Fusion 只是对每路排名的倒数求和k60 是固定常数比训练一个排序模型便宜一个数量级。实体索引直接从 frontmatter 的entities列表派生空索引贡献为零不报错。那么纯向量损失了什么仓库里有一组诚实的数据docs/benchmarks/README.md在 LongMemEval-S 数据集上ai-memory 的 2.0 本地嵌入默认 hit5 达到0.8232.4 RC 复测 0.815在运行噪声内一致而 zero-LLM 的纯 FTS5实体路径为0.668A/B 实验显示本地嵌入相对纯 FTS 提升0.149 hit5 / 0.254 recall10代价是约 90ms 的 p50 延迟。换句话说向量信号在 file-first 架构里不是可有可无的装饰而是实打实值十几个点的召回但它同样不是地基——0.668 的纯词法底线已经能跑通完整的捕获-检索-交接闭环。关键在于ai-memory 的默认向量路径依然是本地的、免费的进程内的纯 Rust BERTall-MiniLM-L6-v2无 API key、无外部服务见 crates/ai-memory-llm/src/embedding.rs 的LocalEmbedder注释。这让要不要向量从一道成本题变成了纯粹的召回质量权衡而不是预算题。再对比可编程记忆服务的工程账单向量索引是基础设施需要选型Chroma / LanceDB / pgvector / Qdrant、维护副本、处理 embedding 配置漂移语义抽取依赖每轮 LLM 调用token 成本随会话量线性增长记忆形态由服务决定意味着想 grep 你的记忆、想手工修正一条错误结论、想把记忆带走迁移到另一个平台全都做不到。更微妙的是不少服务把重要性评估、自动总结、关联检索做成了必须依赖 LLM 的闭环——而 ai-memory 的同类能力衰减、抽取式压缩、去重、矛盾标记全部 zero-LLM 实现只有dream整合式重写这类锦上添花的功能才可选接入 LLM 且默认关闭。给不同团队的建议两条路线不是替代关系是不同岗位的两种分工。选 file-firstai-memory、basic-memory 这类的团队典型画像重 coding agent 工作流。记忆的主体是会话、决策、gotcha、procedure天然是文章形态而非向量块形态。你需要的不是找相似片段而是上次为什么选了 A 方案这种可追溯、可质疑、可修改的结论——文件形态让改记忆变得像改文档一样廉价。跨工具、跨机器、跨人协作。Claude Code 与 Codex 之间的 Handoff、桌面与 homelab 之间的同步、团队成员共享项目记忆但保持私人交接——这是文件派生索引架构的主场因为事实源是标准 markdown任何工具都能接入。对数据主权敏感、对成本敏感。零 LLM 默认路径意味着不配 API key 也能完整运行git 版控意味着每一页记忆都有审计链OKF 导出意味着没有供应商锁定。需要团队共享而非个人 vault。ai-memory 明确pages shared, batons owned——页面按项目共享、交接单归个人这是它对比纯个人记忆服务的关键差异。选可编程记忆服务Chroma Foundation、TencentDB Agent Memory 这类的团队典型画像应用级 RAG / 语义召回为主。知识库是多模态文档、产品手册、客服对话召回质量直接决定产品体验需要向量相似度做主力信号。已有稳定的向量基础设施。团队已经运维过 embedding 流水线愿意为召回质量付基础设施和 token 成本。记忆形态愿意交给服务端。不需要 grep 记忆、不需要手工改记忆、不需要跨平台迁移换取开箱即用的生命周期管理。一个经常被忽略的现实是这两条路线并不互斥。ai-memory 的检索本身就是以词法为主、向量为辅的混合——FTS5 保底实体和链接图谱补上下文向量只在需要语义相似时加入 RRF 融合还可以再叠一层可选的 LLM rerank单查询一次调用、四并发上限、失败即保留原序。它在与同类工具的对比里也公开承认自己的短板没有 VLM 事实抽取、原始召回分数低于带 reranking 的顶配方案、不打算成为图数据库。这不是遮遮掩掩而是选型上的自觉——为编程智能体设计的记忆优先级是可拥有、可编译、可交接而不是召回分数最高。结论向量库没有结束它退位了回到标题的问题。答案藏在 ai-memory 的架构事实里向量检索在 file-first 系统里是第四路可选信号不是地基。FTS5 实体 链接邻居 可选向量的 RRF 融合让一个单二进制、零 LLM 默认、SQLite 内置全文检索的系统拿到了 0.668 的纯词法召回和 0.823 的本地嵌入召回——向量存在但它不再是记忆系统的同义词。向量库时代结束了吗更准确的说法是向量库记忆的时代结束了。记忆的核心矛盾从来不是怎么找相似而是记忆归谁所有、能不能读、能不能改、能不能跨工具交接。Chroma 们在向量之上堆时间线、索引和生命周期是在补存储-检索模式的天花板ai-memory 从另一个方向入场——先保证记忆是你可以打开、编辑、rsync、git diff 的普通文件再决定要不要用向量锦上添花。两条路线一条把记忆做成服务一条把记忆做成文件。对 coding agent 这个具体场景ai-memory 的选择正在被越来越多的同类项目以及 Google 的 OKF 标准独立验证。至于谁更香如果你的记忆终归要被人和机器一起反复读、改、交接那么文件就是最诚实的事实源——毕竟能grep的记忆才配叫你的记忆。【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考