Hacker News 中文摘要

RSS订阅

展示 HN:我用 Git 替代向量数据库实现 AI 记忆(概念验证) -- Show HN: I replaced vector databases with Git for AI memory (PoC)

文章摘要

DiffMem是一种基于Git的轻量级内存后端,专为AI代理和对话系统设计。它使用Markdown文件进行人类可读的存储,Git用于通过差异跟踪时间演变,内存中的BM25索引用于快速、可解释的检索。DiffMem将内存视为版本化存储库,当前知识状态存储在可编辑文件中,历史变化保存在Git的提交图中。这种分离使代理能够查询和搜索最新的紧凑数据,同时允许在需要时深入查看历史演变。相比传统数据库或向量存储,DiffMem通过Git的优势,专注于当前状态,减少查询和搜索的表面区域,提高操作效率。

文章总结

DiffMem:基于Git的AI代理差分记忆系统

DiffMem是一个轻量级、基于Git的记忆后端,专为AI代理和对话系统设计。它使用Markdown文件进行人类可读的存储,Git通过差分跟踪时间演变,内存中的BM25索引用于快速、可解释的检索。该项目是一个概念验证(PoC),探索版本控制系统如何作为AI应用中高效、可扩展记忆的基础。

核心设计

DiffMem将记忆视为一个版本化的存储库:知识的“当前状态”存储在可编辑的文件中,而历史变化则保存在Git的提交图中。这种分离允许代理查询和搜索紧凑、最新的数据,而无需处理历史数据的开销,同时在需要时深入探究演变过程。

为何选择Git作为AI记忆系统?

传统的AI代理记忆系统通常依赖数据库、向量存储或图结构。这些在某些规模下表现良好,但在处理长期、不断演变的个人知识时可能会变得臃肿或低效。DiffMem通过利用Git的优势采取了不同的路径:

  • 当前状态聚焦:记忆文件仅存储信息的“现在”视图(例如,当前关系、事实或时间线)。这减少了查询和搜索的范围,使操作更快,在LLM上下文中更节省令牌。历史状态默认不加载,它们存在于Git的历史中,按需访问。
  • 差分智能:Git的差异和日志提供了一种自然的方式来跟踪记忆的演变。代理可以询问“这个事实是如何随时间变化的?”而无需扫描整个历史,仅提取相关提交。这类似于人类记忆从线索中重建事件,而不是完整回放。
  • 持久性和可移植性:纯文本Markdown确保记忆是人类可读的且与工具无关。Git的分布式特性意味着数据易于备份,不受专有格式限制。
  • 代理效率:通过将“表面”(当前文件)与“深度”(Git历史)分离,代理可以有选择性——加载当前数据以快速响应,深入差异以进行分析任务。这保持了上下文窗口的精简,同时实现了丰富的时间推理。

这种方法在长期AI系统中表现出色,记忆在多年中积累:它扩展而不蔓延,保持可审计性,并通过修剪实现“智能遗忘”,同时保留可重建性。

工作原理

DiffMem结构化为可导入模块——无需服务器。关键组件包括:

  • 写入代理(writer_agent):分析对话记录,识别/创建实体,在Git的工作树中暂存更新。提交是显式的,确保原子更改。
  • 上下文管理器(context_manager):在不同深度组装查询相关上下文(基本:核心块;广泛:语义搜索;深度:完整文件;时间:带Git历史)。
  • 搜索代理(searcher_agent):LLM协调的BM25搜索——从对话中提炼查询,检索片段,合成响应。
  • API层(api.py):用于读/写操作的简洁接口。

项目状态与限制

这是一个早期的PoC——功能完备但未达到生产级。已知限制包括:

  • 无自动Git同步(手动拉取/推送)。
  • 基本错误处理。
  • 每次初始化时重建索引(生产环境需添加缓存)。
  • 无多用户并发锁。

未来愿景

DiffMem指向一个未来,AI记忆像代码一样版本化和协作。想象一下:

  • 代理驱动的修剪:LLM通过归档到Git分支“遗忘”低强度记忆,模仿神经可塑性。
  • 协作记忆:多代理系统共享存储库,通过合并请求进行“记忆协调”。
  • 时间代理:专门模型查询Git日志以回答“我是如何改变的?”——实现自我反思的AI。
  • 混合存储:与向量嵌入结合以获得语义深度,使用Git作为嵌入上的“差异层”。
  • 开源生态系统:语音输入、移动同步或与Obsidian等工具集成的插件。

随着AI代理成为长期伴侣,类似Git的系统可以使它们可进化而不形成数据孤岛。我们期待社区将其推向分布式、隐私优先的个人AI。

如何开始

克隆存储库:git clone https://github.com/alexmrval/DiffMem.git
安装依赖:pip install -r requirements.txt
设置环境:export OPENROUTER_API_KEY=your_key
运行示例:python examples/usage.py

贡献

欢迎分叉、实验、提交PR!我们正在寻找:

  • Git同步优化。
  • 高级搜索插件。
  • 实际集成。

问题和PR欢迎。让我们一起构建AI记忆的未来。

许可证:MIT

Growth Kinetics © 2025

评论总结

评论内容总结:

  1. 正面评价与支持

    • 多位评论者对该项目表示兴趣和支持,认为其具有创新性和实用性。例如,namrog84提到:“I really like this. It seems clever and easy for me to grasp some pros for this approach.”(我真的很喜欢这个。它看起来很聪明,我很容易理解这种方法的优点。)
    • jmtulloss建议进行更多评估:“It would be great to see some evals to understand how well this works.”(希望能看到一些评估,以了解它的效果。)
  2. 技术改进建议

    • 一些评论者提出了技术上的改进建议。例如,bob1029建议使用BM25和FM索引结合:“Maybe having both kinds of search at the same time could work better than either in isolation.”(也许同时使用两种搜索方式会比单独使用任何一种更好。)
    • lsb建议使用SQLite替代文件存储:“It could be worth sketching out how to use SQLite for your application.”(值得考虑如何在你的应用中使用SQLite。)
  3. 质疑与对比

    • 部分评论者对项目的实际效果提出质疑。BenoitP表示:“I'm failing to grasp how it solves/replaces what vector db were created for.”(我无法理解它如何解决或替代向量数据库的初衷。)
    • pdp认为git和向量数据库是不同用途的工具:“So saying that git replaces vector database is like saying that a filing cabinet replaces a search engines.”(说git替代向量数据库就像说文件柜替代搜索引擎。)
  4. 其他替代方案

    • 评论者提到了其他类似的技术方案。例如,albertdessaint提到Graphiti/Zep:“How does it compare to Graphiti / Zep?”(它与Graphiti/Zep相比如何?)
    • mingtianzhang分享了自己使用“Table of Content”替代向量数据库的经验:“I also replaced vector databases with 'Table of Content' for retrieval.”(我也用“目录”替代了向量数据库进行检索。)

总结:评论者对项目普遍持积极态度,认为其具有创新性,但也提出了技术改进建议和质疑。同时,评论者还分享了其他类似的技术方案,供项目参考和对比。