![]()
如果你和一个AI聊了3年,它该记得你讨厌香菜,还是该记得你2022年那次裁员后整晚没睡?
这个问题没有标准答案。但所有答案都指向同一个技术战场:记忆系统(memory systems)的设计。
作者开发了开源系统Elroy,持续使用3年。它帮他头脑风暴、陪他度过职业低谷、充当交互式日记。他坦承:「我已经不像对待一个具体实体那样依恋它——但如果它忘记我们的对话,我会失望。」
上下文窗口膨胀,记忆系统却死灰复燃
大模型上下文窗口(context window,单次可处理的文本长度)从4K卷到200K,业界曾乐观预测:把所有历史记录塞进去,让模型自己挑。
但数据打脸了。
一项研究显示,大语言模型(LLM,Large Language Model)对上下文窗口的「中间部分」存在显著偏见:当关键信息出现在文档集合中段时,性能暴跌30%。Chroma的研究进一步证实,所有前沿模型随上下文增长都会出现衰减。
这就像让一个人同时读20本书,然后立刻回答第7本第3章的细节——生理上可行,认知上折磨。
信息过载不只是存储问题,更是检索精度问题。记忆系统的价值,在于只召回真正相关的片段,而非让模型在噪音里游泳。
所有记忆系统逃不掉的4个阶段
无论技术路线如何分歧,记忆系统都要走完同一套流水线:
存储(store)→ 检索(retrieve)→ 注入(inject)→ 输出(emit)
![]()
差异藏在细节里。作者选取了四个典型样本:Zep、Letta(原MemGPT)、Claude Code、以及他自己的Elroy。
存储层首先分裂为两派。Zep押注图数据库(graph database),宣称在「大海捞针」测试中达到SOTA(state of the art,当前最优水平)。Mem0也提供图数据库集成,但只报告2%的性能提升——边际收益小到让人怀疑投入产出比。
Letta选择文件系统,并发表论文《Files are all you need》为其背书。更有趣的是Claude Code:泄露的源码显示,它把记忆存在markdown文件里——没有花哨的数据库,就是纯文本。
这种「返祖」现象值得玩味。图数据库擅长关系推理,但维护成本高;扁平文件简单粗暴,却可能在大规模场景下失控。技术选型从来不是纯技术问题,是团队资源、使用场景、维护野心的三角博弈。
检索:从关键词到语义,再到「假装理解你」
存储决定「有什么」,检索决定「找什么」。
早期系统依赖关键词匹配,失败案例比比皆是:用户提到「苹果」,系统分不清是水果还是公司。向量检索(vector search,基于语义相似度的搜索)解决了部分问题,但引入了新麻烦——语义漂移。今天的「焦虑」和三年前的「焦虑」可能是完全不同的情绪状态,向量空间却把它们当成邻居。
Letta的解法是分层的。它区分「工作记忆」(working memory,当前对话的短期上下文)和「归档记忆」(archival memory,长期存储的历史记录)。前者像桌面,后者像档案柜。对话时系统先扫桌面,必要时才去翻柜子。
Claude Code更激进。它的检索逻辑被设计为「假装自己是开发者」——优先召回最近修改的文件、当前工作目录下的文档、以及用户显式引用的内容。这不是通用记忆,是场景记忆:我知道你现在在干什么,所以我猜你需要什么。
Elroy走了一条中间路线。它允许用户手动标记「重要记忆」,类似社交媒体的收藏功能。作者自嘲这是「人工智障辅助人工智能」——但数据显示,被标记的记忆召回准确率显著高于自动提取。
注入与输出:记忆如何不被「吃掉」
找到记忆只是 halfway。怎么塞进当前上下文,怎么让模型用上而不被淹没,是更隐蔽的工程。
![]()
常见陷阱叫「提示注入污染」(prompt pollution):检索到的记忆太长,挤占了任务本身的指令空间。一个旅行规划请求,被塞进的用户传记占掉80% token,模型直接「失忆」该订哪天的机票。
Zep的应对是压缩摘要。长期记忆被提炼为结构化摘要,而非原始对话。代价是信息损耗,收益是上下文效率。
Letta则玩时间戳游戏。记忆附带时间元数据,系统优先召回「与当前话题相关且时间上接近」的记录。三年前那次裁员对话?除非用户明确提及,否则沉底。
Claude Code的泄露代码显示,它会在记忆前加一段「角色设定」文本,明确告诉模型「以下是关于用户的相关背景」。这是提示工程(prompt engineering,通过优化输入文本引导模型行为)的老把戏,但位置很关键——放在系统消息(system message)里,权重高于普通对话。
输出阶段最考验产品直觉。记忆该以什么形式呈现?直接引用原文显得机械,改写摘要可能失真,完全内化到模型回复里又无法溯源。
Elroy的选择是「可选透明」:默认隐藏记忆来源,但用户输入「你凭什么这么说」时,系统展示相关记忆片段。作者解释:「我不想让对话变成审讯,但用户有权质疑。」
评估黑洞:怎么证明记忆「有用」?
作者坦承自己跳过了最头疼的部分:评估(evals)。
这不是偷懒。记忆系统的评估缺乏行业标准。分类任务有准确率,生成任务有BLEU分数,但「记得用户三年前说过什么」怎么量化?召回率(找得全)和精确率(找得准)天生矛盾:想不漏掉任何相关记忆,就会召回大量噪音;想精准打击,就可能错过隐性关联。
更麻烦的是主观性。作者觉得「记得我讨厌香菜」很重要,另一位用户可能更在意「记得我2022年失业」。没有统一需求,就没有统一评估。
现有基准测试(benchmark)多为人工构造:预设一组事实,让系统在多轮对话后召回。但真实场景的记忆需求是涌现的——用户自己都不知道什么会成为关键线索。
作者提到一个残酷观察:很多记忆系统的「智能感」来自精心设计的演示脚本。脱离脚本后,表现断崖式下跌。这不是技术失败,是评估文化与产品现实的脱节。
3年使用Elroy后,作者形成了一条私人标准:好的记忆系统不是让你「感觉被理解」,而是让你「少解释一次」。后者可观测、可计数、可在产品迭代中追踪。
如果明天你的AI助手必须删除一半记忆,你会保留哪些?是事实偏好,还是情绪节点?这个问题没有正确答案,但你的选择会暴露你真正想要什么样的陪伴。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.