最近在做AI产品时,我做了一个决定,完全放弃传统的向量数据库和复杂的RAG系统。
这个决定在技术社区听起来有点"不专业",但在实际运营中却暴露了一个有趣的真相:技术栈的复杂度和实际收益并不成正比。
当下很多团队一上来就配置Pinecone、搭建向量检索,但我的AI系统里只有三样东西:本地文件、文本检索和Git版本控制。
跑了几个月后,这套看似"原始"的方案反而成了我认为最稳定、最可控的选择。
一、为什么放弃数据库:可控性问题
核心原因很简单——AI是个不太可信的操作者。
我曾经历过一次事故:AI在更新数据时逻辑错乱,直接覆盖了三个月的关键数据。从那之后,我开始思考一个问题:如果让AI有不受限的数据库写权限,失控的成本有多高?

为了规避这类风险,我采用了"文件格式三层防御"的方案:
JSONL(数据流层)
- 采用Append-only(仅追加)的设计,确保AI每次写入都是在文件末尾加新行
- AI无法解析整个文件后进行覆盖操作,历史数据天然被保护
- 删除数据时,仅添加status标签标记为"archived",保留完整的操作痕迹
YAML(配置层)
- 完整支持注释,我可以在配置中写下各种上下文说明
- AI能理解这些备注,但不会在解析时污染数据结构
- 相比JSON的括号噪音,YAML的可读性更高
Markdown(知识层)
- 大语言模型对Markdown格式天然友好,理解能力最强
- 在Git中做版本Diff时极其清晰,修改轨迹一目了然
- 任何浏览器或编辑器都能完美渲染,可视化效果好
这套方案的优势在于:每一层都有明确的防御目的,而不是为了追求"高级"而堆砌复杂度。
二、存储的本质:从"死知识"到"活判断"
大多数"第二大脑"系统的问题是,它们只是数据的冷仓库——一堆书签、笔记、事实,时间久了就沦为"落灰档案"。
我的记忆系统的区别在于,存储的不是知识本身,而是做出判断的过程和逻辑。

以我的memory目录为例,里面有三个核心的JSONL文件:
- 决策日志:记录重要决策时的权衡维度和优先级排序
- 失败日志:记录项目失败的原因、当时的错误假设、以及事后的改进方向
- 模式识别库:提炼出的重复性决策规则,帮助识别相似场景
举个具体例子:当我面临"拿风投的钱 vs 加入初创公司"的职业选择时,我把整个思考过程记录了下来,包括对"学习空间 > 影响力 > 收入"的优先级排序。
下次再遇到类似的职业权衡,AI不会给我通用的鸡汤建议。而是会说:
"根据你上次的决策逻辑,核心权衡是'学习空间'的优先级最高,建议选择能够扩展认知的那个选项。"
这就是"活判断"和"死知识"的区别。前者编码了你的决策框架,后者只是存储了信息。
三、没有SQL,如何实现数据关联
传统方案中,数据库通过JOIN操作来实现表之间的关系。
如果只用本地文件,怎么做数据关联呢?
答案是:通过标识符实现的软链接。
我的系统包含11个JSONL、6个YAML和50多个Markdown文件。

它们在加载时是隔离的,但在推理时通过关键字段实现互联:
关联方式示例:
- interactions.jsonl 记录的 contact_id 直接指向 contacts.jsonl 中的用户记录
- tasks.jsonl 中的 project_id 关联到 projects.jsonl 中的项目信息
- notes.md 文件中的 #tag 标签可以跨文件检索
当我每天早上说"为我下午与Sarah的会议做准备"时,AI的执行流程是:
- 在contacts.jsonl中查询Sarah的基本信息
- 在interactions.jsonl中提取过往沟通记录
- 在tasks.jsonl中筛选与Sarah相关的待办项
- 在相关的Markdown笔记中获取背景信息
- 生成一份结构化的会议准备资料
整个过程中,AI顺藤摸瓜地跟随数据关系,无需加载和查询整个数据库。
这套方案的好处在于:透明性强、可控成本低、扩展灵活。需要新的关联维度?只需在JSONL中添加新的字段即可,不需要修改表结构或部署新的中间件。
四、技术选型的本质思考
在这个技术快速迭代的时代,我们很容易被"向量数据库""RAG检索""复杂推理链"这类词汇所吸引,误认为复杂的架构就是好架构。
但回归业务本质,最优的系统应该满足两个标准:
- 能完整地跑通你的业务流程
- 维护成本最低
我这套方案的实际优势在于:
- 调试透明度高:所有数据都是可读的文本格式,遇到问题可以直接查看
- 版本控制完整:Git能记录每一次数据和配置的变化,支持快速回滚
- 迭代成本低:不需要管理数据库连接、备份、同步等基础设施
- 可扩展性足够:即使文件数量和行数增加,通过合理的索引设计,检索性能仍然可控
最后的建议:如果你正在构建个人AI助手或初创公司的AI系统,不必被高大上的技术栈所绑架。
几百个精心组织的文本文档 + 一个配置得当的编码助手(如Claude Code、Cursor),足以帮你构建一个具有个人风格的数字分身。
让技术为业务服务,而不是为了用技术而用技术。