记忆召回调参
记忆召回管线四步:键位隔离 → 双路检索 → MMR 去重 → 时间衰减,守住「准、不重、够新」三条底线。挑下一条注入记忆时,MMR 同时要求「与查询相关」和「与已选中条目不重复」,两股力量按 λ 权衡——拧 λ 和半衰期,看 8 条候选的注入名单怎么实时洗牌:哪条被挤、哪条沉底、哪条怎么都拧不进来。
纯前端算真实数学:MMR 为 Carbonell & Goldstein 贪心式 λ·rel − (1−λ)·max sim(文章 mmr_diversify(hits, lam=0.7) 同式),相关分与相似度取自预设 2D 单位向量;时间衰减 0.5^(年龄/半衰期) 为演示口径(文章只定「新记忆靠前」的行为,未给公式);键位隔离在候选池结构上挡死租户外条目,零 API、零随机。
候选记忆名单 · 部署网关要改什么
8 天前写入 · 现役项目事实
10 天前写入 · 现役项目事实
端口早已改掉——约定变更时该覆盖旧条目,它没退休
与上一条同一件事的两种表述(近重复对)
文章开场的那条约定
跟人走的用户偏好(全局作用域)
新鲜但无关——写入判断本不该收它
租户 globex 的记忆——键位圈外,不进候选池
session_key 圈外(当前 acme::api):检索第一步就被键位圈死,相关分再高也没有 MMR 名次。
拧 λ:往 1 拧纯看相关(近重复条目一起挤进名单),往 0 拧只看互异(再相关也因重复被挤出);拧半衰期:越短旧条目沉得越快。
MMR 权重:1·相关 − 0.30·冗余;文章口径 λ=0.7
衰减 = 0.5^(年龄/半衰期):60 天前的记忆分数减半
每轮注入消息流的记忆条数——预算防线,注入多不等于答得好
MMR 为 Carbonell & Goldstein 贪心式(文章 mmr_diversify(hits, lam=0.7) 同式,已选为空时冗余项取 0); 时间衰减的「指数半衰期」为演示口径——文章只定「新记忆靠前」的行为,未给公式;相关分与相似度取自预设 2D 单位向量(真实系统是 embedding 余弦)。
MMR = λ·rel − (1−λ)·max sim(候选, 已选),衰减 = 0.5^(年龄/半衰期),注入 = MMR×衰减 的 top-k
准而不重没守住:名单里并存着相似度 1.00 的两条记忆——把 λ 往小拧,MMR 会把重复的那条挤出去。「够新」没守住:1 条 60 天以上的旧条目还在名单(最老 90 天)——半衰期拧小,旧条目会沉底。键位隔离恒成立:globex::api 的「网关统一走 /api/gx/v3 前缀」相关分 0.98,比名单里 2 条都高也进不来——隔离在检索最前,与任何参数无关,事后过滤漏网即事故。