我将我的"家居"记忆堆栈设定为基准:混合搜索+局部调整器取走LoCoMo从63%到80%

2026年8月13日1 次浏览来源:Dev.to阅读原文

纯矢量搜索使我的代理内存堆栈在LoCoMo上达到63%.

加上一个稀少的取回器 和一个在一张我拥有的卡片上运行的收取器 把它推到80% 准确性来自一个可能每个查询增加40ms的阶段,它所固定的查询正是我所关心的:具体的日期,错误代码,以及"谁说在哪个会话中"针被埋入了几个月的对话历史.

如果你正在运行一个本地的特工 能够通过长时间的谈话来回顾事实, 这是其他一切下面的检索层。

糟糕的记忆堆不会崩溃。

它悄悄地将错的3个块交给模型,让模型对一个自信的答案进行拼接.

失败模式比停产还要糟糕 因为没有东西告诉你它发生了。

设定和为什么我所有我的代理 运行在一个我之前写的内存堆上: 一个六层架构 Claude Code,一个维基层,一个向量存储,和一个基于激活的认知层。

向量商店是工作马。

当一个代理需要回顾过去一个会话中的事实时,它会嵌入查询,拉出最接近的克块,把它们塞入上下文中,并回答.

工作很顺利 我从未质疑过 然后我就让LoCoMo反对了 LoCoMo是一个长期的对话记忆基准.

它为你们提供了跨越上百个回合的多会对话,然后问问题,这些问题的答案分散在这些届会中。

单跳的外观,多跳的推理,时间顺序,作品.

这是一个很好的代名词,用于代理记忆系统实际上必须做的事情,因为答案从来没有在最近转折.

复有三会相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相出相 我的只向量堆栈得分为63%.

不错 不足以相信特工能采取行动 有趣的部分不是数字 而是失败的形状 我先尝试的(为什么是错的杠杆) 我的第一个直觉是显而易见的:嵌入物一定太弱了.

换出模型,获得更好的向量,解决问题.

所以我做了每个人都做的事。

我从一个通用的嵌入模型 转移到一个更大的, 排名更高的模型 在MTEB领导板上。

重新装入整个体.

R-ran LoCoMo. 63%进入65%.

两分.

几小时后再装两分 这时,我实际上看的不是总分,而是失败的分数,模式在事后看来是显而易见的.

我犯错的问题并不难解决 其具体说法是:“用户提到的票号是多少?” ——其中的块不是上-k的,因为作为查询的"票号"嵌入了近百个块,这些块泛泛地谈论了门票. “他们说迁移完成的日期是哪一个?” 模型检索到关于迁移的块, 只是没有一句与实际日期。 "玛丽亚对卖家说了什么?"——适当的名词被密集的嵌入物所平均被遗忘. "玛利亚"和"卖家"是针头,而同心相似性在针头上不好.

这是大量检索的有据可查的弱点。

Embeddings 捕捉到意义,他们擅长"找出关于数据库迁移的东西".

他们不擅长"找出确切的字符串TICKET-4471",因为该字符串的含义是细的.

识别符上没有任何语义.

更好的嵌入模型不会解决与语义无关的问题.

第二件事,我尝试了曲克。

如果右块不在前5,拉前20.

这会帮助人们回忆起,它确实使得分下降。

这也用噪音炸毁了上下文窗口并触发了"中途丢失"的问题,即模型忽略了埋藏在无关紧要的东西之间的相关块.

我用一个检索问题来换取一个注意力问题 没赢 实际修复: 很少召回, 然后重新排序精确 重要的一步是把检索分成两个工作 一次很难完成 回想起来是"把合适的块 放在候选人的设定里" 精度是"将右块放入"

分享