对于当前的大语言模型(LLM)而言,对话一旦结束,模型便会“遗忘”此前交流的所有内容。开发者zaydmulani日前在Hacker News上展示了名为Mnemo的开源项目,试图解决这一痛点。Mnemo是一个本地优先(local-first)的AI记忆层服务,可以作为sidecar进程旁路运行,监控每次对话,自动提取命名实体及其关系,构建持久化的知识图谱并存储在SQLite数据库中,后续在用户提问时自动注入相关的上下文到系统提示词中,整个检索过程耗时不超过50毫秒。
功能与架构
Mnemo本质上是一个轻量级的API服务,使用Rust语言编写,编译为单一静态二进制文件,不依赖任何云端服务。它通过两个核心端点(endpoint)工作的:/ingest用于接收原始文本(对话轮次、文档、笔记),Mnemo会将文本发送给配置好的LLM(支持Ollama、OpenAI、Anthropic或任何兼容OpenAI API的服务),由LLM从中提取实体(人物、工具、地点、概念等)以及实体之间的关系;实体按名称和类型去重,别名自动合并,最后写入SQLite,同时在内存中使用petgraph图数据结构进行原子更新,维持一张完整的知识图谱。
当需要检索时,用户调用/retrieve端点,Mnemo会执行一个六阶段流水线:全文分块检索 → 实体名称检索 → 基于广度优先遍历(BFS)的知识图谱扩展 → 关系过滤 → 得分与排序 → 组装成上下文提示(context prompt),最终注入到LLM的系统提示词中。整个过程无需用户手动干预,实现了“写后即记、问前即提”的自动化记忆管理。
技术细节与部署
项目采用Rust语言开发,核心依赖四个crate:petgraph用于在内存中维护图结构,sqlite(通过rusqlite或类似绑定)作为持久化存储,以及处理HTTP和LLM API调用的相关库。配置通过环境变量或TOML文件完成,环境变量优先级更高,当前配置源会在启动时报告。所有API端点的输入和输出均使用JSON格式,官方文档提供了完整的curl示例。
性能方面,根据开发者在Apple M2芯片上的基准测试(使用调试编译,release编译预计快3-5倍),单次记忆检索(包括图遍历和排序)可在50ms内完成。项目仓库中提供了基准测试脚本,方便用户在自有硬件上评估。当前测试覆盖了90个单元测试用例,开发者欢迎社区贡献代码,要求提交前运行just test-all并通过所有测试。
值得注意的是,Mnemo的记忆机制并非简单的键值对,而是受论文A-MEM: Agentic Memory for LLM Agents启发,构建了结构化的知识图谱“记忆笔记”,能够更精细地建模实体间的关联,从而在上下文注入时提供更精准的信息。这一设计使其区别于基于向量检索的简单记忆方案。
总体来看,Mnemo为需要持久记忆能力的LLM应用(如AI助手、知识库对话系统)提供了一种开箱即用的基础设施。它完全本地运行,不依赖云端,兼顾了隐私性与低延迟,对于希望在不牺牲数据隐私的前提下提升大模型对话连续性的开发者来说,是一个值得关注的工具箱。
本文参考来源:Hacker News
微信扫描下方的二维码阅读本文



