memweave:使用 Markdown 和 SQLite 的零基础设施 AI 代理内存 — 无需矢量数据库

今天代理内存的问题memweave 帖子:使用 Markdown 和 SQLite 的零基础人工智能代理内存 — 不需要矢量数据库首先出现在《走向数据科学》上。

来源:走向数据科学

披露:memweave 是我构建的一个开源项目。本文描述了它解决的问题及其背后的设计决策。

想象一下:您花了一个下午构建一个人工智能编码助手。它了解您的项目约定,记住您使用 Valkey 而不是 Redis,并了解您团队的首选测试模式。会议结束。第二天早上你开始新的对话,然后你就忘记了一切。回到第一点。

这是每个 LLM 代理的默认状态。模型在设计上是无状态的。每次通话都以一张白纸开始。内存是你要解决的问题。

最常见的解决方法是将整个对话历史记录填充到上下文窗口中。它会起作用——直到不起作用为止。上下文窗口是有限且昂贵的。长期运行的代理会积累数千个历史标记,其中大部分与当前问题无关。当你的代理所需要的只是三个月前的一个架构决策时,你最终会花钱反复向你的代理提供上周的调试笔记。

所以你找到了一个矢量数据库。启动 Chroma,或提供 Pinecone 索引,嵌入所有内容,并通过语义相似性进行查询。这也有效 — 但它引入了一类新的问题:

  • 不透明度。你的代理的记忆存在于一个你无法打开、读取或推理的二进制索引中。你的代理人实际上知道什么?只能通过查询才能知道。
  • 无版本控制。矢量存储没有 git diff。您无法看到代理在运行之间学到了什么,无法审核其知识,也无法回滚不良记忆。
  • 基础设施开销。即使对于单个本地代理,您现在也需要管理服务器进程、配置凭据以及保持运行的服务。
  • 隐形编辑。如果您想更正记忆 — 修复代理存储的错误假设 — 您需要删除并重新嵌入。您不能只打开文件并更改行。
  • 有一个更简单的方法。

    方法:Markdown + SQLite

    pip 安装 memweave

    输出:

    架构

    写入路径

    其中: