知识图谱+本地存储:开源Mnemo给AI配的长期记忆中枢


Mnemo 是一个面向大语言模型(LLM)的本地优先(Local-first)长期记忆层(Memory Layer)。它的核心目标很简单:让 AI 不再像“金鱼”,每次开新会话都把之前的事情忘得一干二净。

从作者介绍来看,Mnemo 更像是一个位于 LLM 和数据之间的“记忆中枢”,负责把历史对话、文档、知识点和实体关系提取出来,构建成可持续增长的知识图谱(Knowledge Graph),然后在后续提问时自动召回相关上下文。

核心观点总结
AI特别聪明,但记性贼差,每次聊天都像第一天上班的实习生。Mnemo就是给AI配的一块“长期硬盘”加一张“知识地图”,让它能记住以前聊过啥、做过啥决定,甚至能顺着关系找到线索。它不是简单存聊天记录,而是把知识点拆开、连成网,以后问问题自动把相关背景塞回来。这样AI就能从“金鱼”变成“老员工”,特别适合编程助手、私人知识库这些需要长期干活的场景。

为什么AI总是像条金鱼

咱们先说说现在AI最烦人的毛病。你跟它聊了半天,好不容易把它教会了怎么配置你家那个复杂的数据库。它点头说懂了,明白你的意思了。然后你关掉聊天窗口。再打开一个新的。你问它同样的问题。它一脸懵。什么是PostgreSQL?你刚才不是教过我吗?不记得啊,这是第一次见面吧。你心里那个火。恨不得把它脑子拆开看看是不是进水了。

这就像每天换一个新实习生上班。你今天花俩小时告诉他,公司数据库长什么样,哪个表存用户信息,哪个字段是主键。他嗯嗯嗯点头。明天走了。新来一个。你还得从头讲一遍。后天又一个。你再讲一遍。工程师真正干活的时间其实不多。大部分时间都在重复喂上下文。喂完一遍,人走了。再喂一遍,又走了。你以为你在写代码。其实你在当复读机。而且这个复读机还得每天换新电池。

现在的大语言模型有个天生的毛病。它每次处理你的问题,都像第一次见你。不管你之前跟它聊了多久,聊得多深入。会话一结束,它就把你忘得干干净净。就好像电脑重启之后,内存里的东西全没了。模型有上下文窗口这个东西。这个窗口能装多少字是有限的。比如你塞进去一万字的聊天记录。再塞两万字。再塞。窗口满了。它就开始忘前面的事。

金鱼脑子带来的真实浪费

你想想看,一个项目做三个月。每天跟AI讨论架构、数据库设计、API怎么写。三个月下来,它理论上应该比你还懂这个项目。但实际上呢?每次新会话,它都是一张白纸。你得把项目背景、技术选型、之前踩过的坑,全部重新说一遍。说一遍至少半小时。一天开五次新会话。那就是两个半小时。一周就是十几个小时。一个月就是好几天。

这还只是一个人浪费的时间。团队里五个人都在用AI。每个人都在重复讲同样的事情。张三跟AI讲了数据库设计。李四不知道,又讲一遍。王五也不知道,再讲一遍。AI之间还不互通。相当于每个AI都是独立的失忆患者。你给AI一号解释清楚的事,AI二号完全不知道。你还得跟AI二号从头解释。这效率低得离谱。

更搞笑的是,有些时候你明明把文档链接发给AI了。它说好的我看看。过一会儿你问它问题。它回答得驴唇不对马嘴。为什么?因为它根本没记住文档里的内容。它只是在你发链接那一刻扫了一眼。然后就把这事忘了。就像你让实习生去看公司手册。他翻了翻说看完了。第二天你问他手册里怎么规定的。他说啊?什么手册?这就很要命。

有人给AI做了个外挂硬盘

有一个叫Mnemo的东西,专门解决这个金鱼脑子的问题。它的思路特别直接。既然AI自己记不住,那就在外面给它挂一块硬盘。每次聊天产生的信息,都存到这块硬盘里。下次再聊天的时候,自动把相关的旧信息翻出来,塞给AI看。这样AI虽然还是会忘,但它能看到以前的笔记啊。就像你记性不好,但你有个小本本。什么事都记下来。回头翻翻就知道了。

这个Mnemo不是简单存聊天记录。如果只是存原文,那跟翻聊天记录没什么区别。它干的事更聪明。它会把聊天内容拆开。比如你说“PostgreSQL是我们项目的主数据库”。它就会拆出几个东西:一个叫PostgreSQL,一个叫主数据库,还有一个关系说PostgreSQL属于主数据库。拆完之后,它把这些小零件连成一张网。这张网就是知识图谱。

知识图谱这个词听起来挺唬人,其实就是一张关系网。你想想看,你认识的朋友们。张三认识李四,李四认识王五,王五是你同事。这就是一张小网。Mnemo干的事是一样的。它把知识点当成一个个的人,把它们之间的关系记下来。比如“用户模块依赖认证模块”,“认证模块用JWT实现”,“JWT过期时间是24小时”。这些知识点连起来,就是一个关系网。

以后你问“为什么用户登录总超时?”它不会只找“超时”这个词。它会顺着这张网找。用户模块→认证模块→JWT→过期时间→24小时。哦,找到原因了。原来24小时到了就要重新登录。这种顺着关系找线索的能力,是普通搜聊天记录做不到的。普通搜索只能找关键词。你搜“超时”,它给你所有带“超时”的句子。但“24小时”这个词条里没有“超时”啊,它就找不到了。

Mnemo具体怎么干活

第一步是把各种信息灌进去。你平时跟AI的聊天记录,直接倒进去。你写的项目文档,也倒进去。你在记事本里记的零碎想法,也倒进去。开会时的决策记录,也倒进去。总之任何你觉得以后可能用得上的文字,全部往里塞。这一步没什么技术含量,就是往数据库里扔东西。但关键在后头。

第二步是抽取知识。Mnemo会调用一个大语言模型,帮你把扔进去的文字拆解。比如你扔进去一句话:“我们决定用SQLite当本地缓存”。它会拆出:SQLite、本地缓存、决策、以及“SQLite用作本地缓存”这个事实。如果另一句话说“SQLite比Redis轻量”,它又会拆出:SQLite、Redis、以及“SQLite更轻量”这个比较关系。这些被拆出来的小零件,就叫实体和关系。

第三步是画图。拆出来的实体就像一个个的点。关系就是连接点的线。Mnemo用Rust语言里的一个叫petgraph的库来画这张图。比如说你有三个点:用户、项目A、数据库。用户→项目A(用户负责项目A),项目A→数据库(项目A用了数据库)。这就连起来了。如果再来一个点叫PostgreSQL,数据库→PostgreSQL(数据库用的是PostgreSQL)。这张网就越画越大。最后整个项目的知识都在上面。

第四步是取东西。当你问AI一个问题的时候,Mnemo不会把整张图都塞给AI。那样信息太多了,AI也看不过来。它会先看看你问的是什么。然后在这张图里找相关的部分。怎么找呢?它用了好几种方法一起上。全文搜索:找跟你问题里关键词匹配的节点。图遍历:从匹配到的节点出发,顺着线找到邻居节点,再找邻居的邻居。多跳检索:走好几步,把间接相关的也找出来。

最后把这些找到的相关知识,自动塞进你的提问里。AI看到的不是你单独的一个问题。而是“相关背景知识”加上“你的问题”。这样一来,AI就像有个秘书提前帮它翻好了旧笔记。你问“那个缓存方案后来改了没有?”AI看到的背景可能是:2025年3月讨论过用Redis,2025年5月改成了SQLite,2025年6月有人提议换回Redis但被否决了。你看,它全知道。

跟那些花里胡哨的RAG有什么区别

现在很多人喜欢搞RAG,就是检索增强生成。那个东西的思路也不复杂。把文档切成一块一块的,每一块转成一串数字,叫向量。然后你问一个问题,也转成向量。去找最相似的文档块,拿出来塞给AI。这就像你去图书馆,跟管理员说我要找关于数据库的书。管理员去书架上给你抱来一堆跟数据库有关的书。你自己翻去吧。

RAG的问题在哪呢?它只能找到长得像的东西。比如你问“那个被否决的方案是什么?”如果文档里没有“否决”这个词,全是“不采用”“放弃”“pass”,RAG可能就找不到了。它不理解“否决”和“不采用”是一个意思。它只管长得像不像。而且RAG不知道知识之间的关系。书和书之间有什么联系?哪本书是在哪本书的基础上改的?哪本书反驳了哪本书?RAG完全不知道。

Mnemo走的路线不一样。它先拆出实体和关系,再画图。这就像你不是去图书馆随便翻书,而是找了个在这个项目里干了三年的老员工。你问他认证模块怎么回事。他不光知道认证模块的代码在哪。他还知道当初为什么选JWT而不是Session。他知道后来谁提过要改。他知道为什么没改。他甚至知道认证模块跟用户模块之间有个历史遗留的耦合问题。这些东西你翻文档翻不到,但老员工脑子里有。

所以说RAG适合那种“找资料”的场景。你问“Python里怎么读取CSV文件”,RAG从一堆文档里找到相关片段,给你看。但如果你问“我们项目里那个读取CSV的函数后来为什么重写了”,这事RAG干不了。因为没有文档会写“我们重写是因为张三发现旧版本慢得要死”。但Mnemo可以。因为之前有人在聊天里说过“张三说旧CSV解析器太慢了,得重写”。这句话被拆成了实体和关系,存进了图里。

这东西到底好在哪

第一个好处是完全本地运行。现在很多所谓的记忆系统,最后都会变成“你的记忆放我服务器上”。他们跟你说这样安全、这样方便。但实际上你的聊天记录、项目文档、决策过程,全跑到别人家去了。万一泄露呢?万一他们拿你的数据训练模型呢?Mnemo反着来。数据全存你电脑上,用SQLite,就一个文件。你想放哪放哪。没人能偷看。

第二个好处是部署极其简单。整个程序就是一个Rust编译出来的二进制文件。没有复杂的依赖,不需要装数据库服务器,不需要配云服务。下载下来,双击运行,完事。难度跟用命令行工具差不多。那些搞过技术的人都知道,部署一个带依赖的服务有多恶心。装Python环境、装各种库、版本冲突、缺这个缺那个。折腾半天跑不起来。Mnemo没这些破事。

第三个好处是知识图谱驱动。前面说了,普通向量库就是个仓库。你知道东西在仓库里,但不知道东西之间的关系。知识图谱是仓库上面加了一张地图。地图上标着每个东西在哪,还标着路怎么走。从A到B到C。这样你找东西的时候,不光能找到直接相关的东西,还能顺着路找到间接相关的东西。这特别适合那种需要推理的场景。

第四个好处是自动干活。你不需要主动去搜索记忆。Mnemo在你每次问AI问题的时候,自动在后面跑检索。找完了自动把相关内容塞进prompt里。你什么额外操作都没有。就像你有个秘书。你刚要开口问问题,秘书已经把旧会议记录、相关文档、之前讨论的结论,全放你桌上了。你只需要张嘴说就行了。这种体验跟手动翻聊天记录完全不是一个级别。

哪些地方最需要这种记忆

AI Agent最需要。Agent就是那种能自己干活、自己决策的AI程序。比如你让它每天帮你整理邮件、安排日程、回复消息。这种Agent要长期运行。今天它知道你哪个客户最重要。明天重启一下就忘了,那还怎么干活?Mnemo就是给Agent配的记忆层。Agent今天学到的客户偏好,存进去。明天继续用。这才是真正的助理,不是每天失忆的复读机。

AI编程助手也很需要。现在Cursor、Copilot这些工具,它们能帮你写代码。但你要问“上次重构的那个模块现在在哪?”它们就懵了。它们不记得你上周重构过什么。如果用Mnemo给它加个记忆层就不一样了。你每次重构、每次改架构、每次讨论技术方案,都自动存进去。下次你问跟这个模块有关的问题,它自动把之前的讨论记录翻出来。这样编程助手就不是只会补全代码的玩具了。

私人知识库这个方向也特别适合。你有没有这种经历:读了一本书,觉得很有收获。过了俩月,想不起来具体内容了。再读一遍,又觉得浪费时间。如果你把读书笔记、划的重点、自己的感想都扔进Mnemo。它会帮你把这些内容连成网。这本书里的概念A,跟那本书里的概念B,原来有联系。你读的时候没发现,但Mnemo发现了。因为它的图里,A和B通过某个中间节点连上了。这种跨书的知识发现,靠人脑很难做到。

企业知识管理是更大的场景。公司最怕的事是什么?是员工离职。一个老员工走了,他脑子里的那些东西也跟着走了。项目为什么这么设计?哪个客户有什么特殊要求?上次那个坑是怎么填上的?新来的员工全不知道。只能重新摸索。如果公司用Mnemo把所有人的聊天记录、会议纪要、决策文档都存进知识图谱,那这些知识就留在公司里了。新人来了,问AI就行。AI把老员工的记忆翻出来给他看。

好处多得数不清

本地优先,数据在自己手里,不用担心泄露。SQLite存储,就一个文件,备份迁移都方便。开源,代码随便看,不用担心后门。知识图谱结构,能找间接关系。自动注入上下文,不用手动操作。支持本地模型,连网都可以不要。适合长期Agent系统,不会每天失忆。部署简单,一个二进制文件搞定。这些优点加在一起,让Mnemo在同类工具里显得很特别。它不是那种“看起来很厉害但用不起来”的玩具,是真的能干活的东西。

也得说说它还不够完美

项目还比较新,用的人不多,踩过的坑也没人分享。你敢在生产环境用吗?可能不太敢。万一出bug了,连个问的人都没有。社区还没形成,文档也可能不全。这是新项目都有的问题,需要时间解决。

另外有个争议挺大的点。很多人说,以后大语言模型自己的上下文窗口会越来越大。GPT-4已经能处理几十万token了。再过几年,可能直接几百万。到时候模型自己就能记住很多东西,那还要Mnemo这种外挂记忆层干嘛?模型自己就够了啊。

作者对这个质疑的回答是:模型上下文再大,也不适合无限存储长期知识。你想啊,如果一个模型把所有历史对话都塞进上下文窗口,那窗口得有多大?几年下来的聊天记录、文档、决策,那可不是几百万token能装得下的。而且塞太多信息进去,模型处理的速度会变慢,效果也可能变差。独立记忆层就不一样了。它只把最相关的那一小部分塞给模型。而且这个记忆层可以跨模型、跨会话、跨工具复用。你换了新模型,记忆还在。你开了新会话,记忆还在。你换了编程工具,记忆还在。这是模型内置记忆做不到的。

一句话给这东西定个性

你把Mnemo想象成给LLM装上一块长期硬盘,再配上一张知识关系地图。普通聊天机器人就是个每天失忆的实习生,你跟它说什么它都记不住。但Mnemo想让AI变成一个记得项目历史、知道决策原因、还能顺着关系网找线索的老员工。对于Agent、AI编程助手和长期知识库这些场景,这种记忆层很可能会成为未来的基础设施。现在它还是个小项目,但这个方向,看起来是对的。

总结

本文解释了AI为什么记不住事、Mnemo如何通过知识图谱构建关系网、以及它跟传统RAG的区别。适合AI Agent、编程助手和私人知识库的场景,也讨论了本地部署、SQLite存储和未来发展方向。