别再死磕 RAG 了,试试用分类摘要给 LLM 助手做轻量化记忆
很多开发者在构建个人 AI 助手时,习惯性地把 RAG(检索增强生成)当作唯一解法。但实际操作中你会发现,为了让 AI 记住几个简单的个人偏好或项目进度,就得去折腾向量数据库、处理 Embedding 维度、调优 Top-K 召回率,这种过度工程化让系统变得极其臃肿。其实,大多数场景下我们需要的不是一个语义检索集群,而是一个能按类别存储信息的“笔记本”。
最近关注到一个叫 pawmc 的开源项目,它提供了一种非常清爽的替代方案:用“分类+主题(Category + Topic)”的映射机制来替代复杂的向量检索。这种逻辑更像人类的记忆方式——我不需要在海量文档中搜索关键词,我只需要翻到“工作计划”这个分类下的“项目 A”页面,就能看到之前的记录。
这个项目的核心架构极其精简,完全抛弃了 LangChain 这种沉重的套壳框架,而是直接基于 Cloudflare Workers 和 Durable Objects (DO) 构建。对于不熟悉 DO 的人来说,可以把它理解为一个在边缘端运行的、具有持久化状态的单例对象。
具体运作流程是这样的:当你发起一个新会话并提供特定的 category 和 topic 时,系统不会去跑 Embedding 向量比对,而是直接通过 DO 快速索引出该组合对应的摘要缓存。在对话过程中,LLM 能够直接读取这段摘要作为上下文。而最关键的步骤在对话结束时——系统会触发一次总结,将本次对话的要点 append 到该分类主题的摘要中。这意味着,只要你维持相同的分类标签,AI 就能在后续对话中顺滑地接上之前的进度。
从部署角度看,这个方案几乎是目前成本最低的自托管路径。你只需要安装 wrangler 命令行工具,通过 npm install 完成依赖安装,然后在 .dev.vars 文件中配置好 Provider。目前它支持 workersai 和 openrouter 两种路径,比如你想用 Llama-3-8B,只需设置 MODEL=META/LLAMA-3-8B 并填入 API Key,最后执行 wrangler deploy 即可完成全球部署。由于利用了 Cloudflare 的 Free Tier,个人日常记录琐事基本不需要支付任何费用。
当然,这种方案并非万能。因为它依赖于 LLM 对对话结束后的总结质量,如果模型在摘要阶段丢失了细节,那么后续的记忆提取就会出现偏差。而且由于它是 API-first 设计,目前缺乏原生的 Web UI,更适合那些习惯于通过 API 或第三方客户端调用接口的开发者。
但即便如此,这种“分类记忆”法在处理碎片化信息时比 RAG 更高效。RAG 容易在召回时由于语义相近而拉回无关片段,导致上下文被噪音污染;而分类摘要则是结构化的,它保证了注入上下文的信息是经过提炼的。如果你厌倦了维护复杂的向量索引,且记忆需求仅限于几个特定主题的长期跟踪,这种轻量化方案绝对值得尝试。
直接上SQLite存关键词简直是神来之笔,比折腾Vector DB那些维度报错省心太多了!