不受欢迎的观点:AI 代理并不总是需要向量数据库来存储项目记忆
摘要
文章认为,对于中小型编码项目,使用向量数据库作为 AI 代理的记忆可能没有必要,并提议使用 Markdown 和 Git 作为更简单、可审计的替代方案来管理项目上下文。
许多 AI 编码教程似乎遵循相同的模式:希望你的 AI 代理记住项目上下文、编码指南或架构决策?→ 将文档分块 → 生成嵌入 → 存储到向量数据库 → 构建 RAG 管道。对于大型代码库和大量知识集合,这完全合理。但对于许多中小型编码项目,我开始怀疑我们是否添加了过多的基础设施来解决一个相对简单的问题。
我看到的向量数据库用于项目记忆的问题
1. 更难检查
如果代理记住了一个错误的架构决策,这个记忆究竟来自哪里?使用嵌入和检索管道,调试记忆本身可能成为另一个问题。
2. 它增加了一层开发者必须管理的内容
开发者已经有 Git 和文本编辑器。那么,为什么不将 AI 记忆变成开发者可以实际打开、阅读、编辑、比较、审查和提交的东西呢?
3. 并非每个项目都需要语义检索
如果代理正在处理一个 20-50 个文件的项目,我们真的需要将每段上下文转换为嵌入,然后模型才能使用吗?有时,简单地将相关的项目上下文提供给模型就足够了。
一种不同的方法:将 AI 记忆视为源代码
我一直在试验一种更简单的方法来处理 AI 编码代理:Markdown + Git。这个想法很简单:
平面文件存储:项目记忆以 Markdown 形式存储在 .ai-memory/ 目录中。
人类可读:如果 AI 做出了错误的假设,我可以在 VS Code 中打开文件并直接修复。
Git 可审计:每次记忆更改都成为 Git 历史的一部分。git diff 可以精确显示代理学习或更改的内容。
无额外基础设施:基本情况下不需要数据库、嵌入管道或单独的记忆服务。
我正在探索的原则是:
这并不意味着向量数据库不好或不必要。当信息量或检索需求合理时,它们显然有其用武之地。我更感兴趣的是两种方法之间的界限。在什么情况下,简单的 Git + Markdown 记忆对 AI 代理来说不再足够,而向量数据库/RAG 系统实际上变得必要?
相似文章
@alex_prompter: 真正可行的AI代理记忆系统就是四个markdown文件,零数据库。你不需要向量…
文章描述了一个简单的AI代理记忆系统,使用四个markdown文件、一个索引和带新鲜度跟踪的缓存,从而避免使用向量数据库和检索管道。
我为AI编码代理构建了一个开源持久记忆层
一个为AI编码代理设计的开源持久记忆层,使用Postgres和pgvector存储和检索项目决策与上下文,旨在减少上下文窗口大小并提高代理的一致性。
@PrajwalTomar_: 你的向量数据库正在悄无声息地拖垮你的AI智能体,而你完全不知道。陷阱就在这里。每个人都选了那个……
一条推文警告说,仅根据速度基准测试选择向量数据库可能会对AI智能体造成陷阱,因为AI智能体具有持续的写入负载,这与RAG以读取为主的模式不同。它根据用例推荐了特定的数据库,例如用于智能体记忆的Qdrant,以及用于PostgreSQL上低于1000万向量的pgvector。
AIPass 记忆系统:为何拥有小型 JSON 文件的智能体胜过巨型向量存储
AIPass 引入了一个记忆系统,其中 AI 智能体在小型 JSON 文件中管理其身份和会话历史,通过钩子实现在必要时才归档到向量存储的上下文注入,从而提升多智能体设置的效率。
@PrajwalTomar_: 你的向量数据库不是记忆,它是坟墓。伦敦存储、取消忽略、健身房仍、伦敦嵌入有效、数据库有效……
这篇文章认为,向量数据库单独作为数据坟墓,缺乏真正的记忆功能,并描述了在Actian VectorAI DB之上构建具有矛盾检测和遗忘周期的本地AI记忆层。