ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Mnemosyne 记忆召回原理揭秘:向量+全文+重要性混合检索打分公式深度拆解

Mnemosyne 记忆召回原理揭秘:向量+全文+重要性混合检索打分公式深度拆解 Mnemosyne 记忆召回原理揭秘向量全文重要性混合检索打分公式深度拆解【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyneMnemosyne是一个零云端、纯 SQLite 支撑的 AI 记忆系统一条pip install一个数据库文件即可为任意 Agent 提供长期记忆。本文带你深入它的召回引擎拆解 Mnemosyne 混合检索如何把向量相似度、全文检索FTS5和重要性分数融合成一个最终得分让最相关的记忆浮出水面。不需要任何机器学习背景跟着公式走一遍即可 。一、先搞清楚Mnemosyne 的记忆存在哪里在拆解打分公式前先建立整体画面。Mnemosyne 把记忆分成两个舱室舱室表名定位工作记忆working_memory当前会话的热点记忆类似桌面便签情景记忆episodic_memory经睡眠巩固后的长期记忆类似日记本当调用recall(用户偏好)时入口是 mnemosyne/core/memory.py 中的recall()方法它会把请求转发给底层引擎。真正的打分逻辑全部集中在 mnemosyne/core/beam.py 的recall()函数里——这就是本文的主角。二、混合检索的三大信号源为什么一个都不少Mnemosyne 的打分不是单一相似度而是三路信号加权融合向量相似度vec用嵌入模型把查询和记忆都变成向量算余弦相似度。擅长意思相近但用词不同比如查深色模式能召回 prefers dark interface。全文检索FTS5SQLite 原生的倒排索引关键词匹配。擅长精确词命中比如查 SQLite 就一定找得到。⭐重要性importance记忆写入时自带的 0~1 重要性分数。高重要性记忆天然更容易胜出。三者默认权重是(0.5, 0.3, 0.2)定义在 beam.py 第 2378 行_DEFAULT_RECALL_WEIGHTS (0.5, 0.3, 0.2) # vec, fts, importance为什么不全押向量纯向量检索对专有名词、代码标识符这类必须一字不差的查询容易翻车纯关键词又抓不住语义。三路融合是召回精度和泛化能力的平衡点。三、情景记忆的打分公式逐项拆解情景记忆是混合检索的主战场。对每条候选记忆Mnemosyne 依次执行以下步骤源码见 beam.py 第 9277-9376 行1. 三权重基础分核心公式base_score sim × vec_weight fts × fts_weight importance × importance_weight三个权重会自动归一化到总和为 1.0见 beam.py 第 2434-2449 行所以你调任意一个系统都会保证三者占比合理。2. 准入门槛防止沾边内容混入if 词法相关性 最低阈值 且 sim 0.62: 跳过该候选FTS 命中只能证明沾过一个词Mnemosyne 要求要么词法覆盖足够、要么向量相似度突破 0.62 准入门槛EM_VEC_ADMIT见 beam.py 第 897 行才有资格进入结果集。这是精度的一道守门员。3. 新鲜度衰减记忆也会过期score max(base_score, lexical × 0.8) × (0.7 0.3 × decay)其中decay是指数衰减函数见 beam.py 第 2610-2622 行decay e^(-年龄小时数 / 半衰期)默认半衰期168 小时一周新记忆 decay≈1.0一周后≈0.5一个月后≈0.1。注意公式用的是0.7 0.3 × decay而不是纯乘法——再老的基础相关性也保底 70%老而重要的记忆不会被彻底埋没。4. 图谱与事实加成结构化信号锦上添花图谱加成graph_bonus记忆关联的知识图谱边越多越相关min(边数 × 0.02, 0.08)上限 0.08事实加成fact_bonus记忆抽取出的三元组事实与查询词命中越多越好min(命中数 × 0.04, 0.1)上限 0.1二进制向量加成binary_bonus轻量级二值向量再校验一次语义方向。5. 时序加权可选查询上周的事时可对靠近目标时间点的记忆做软加成score × (1 temporal_weight × e^(-|时间差| / 24h))目标时刻的记忆加成最大boost1.0每过一个 24 小时半衰期加成衰减到 36.8%见 beam.py 第 2679-2688 行。6. 可靠性折价不是所有记忆都值得同样信任排序前还会乘以两个修正系数降级层级权重巩固层级越深Tier 1/2/3记忆质量越高权重从TIER1_WEIGHT递减见 beam.py 第 393 行真实性乘数stated用户亲述toolinferred推断unknown推断类记忆自动降权。最后所有候选按得分降序排列跨舱室摘要去重后返回 Top-K。四、工作记忆的打分公式关键词主导向量辅助工作记忆本会话热点走另一套配方见 beam.py 第 8803-8822 行base 相关性 × (1-重要性权重) × 0.6 重要性 × 重要性权重 相关性² × 0.08 若 向量相似度 0: base base × 0.80 向量相似度 × 0.20 score base × (新鲜度份额 (1-新鲜度份额) × 新鲜度衰减)对比情景记忆可以读出设计意图工作记忆关键词占 60%、新鲜度占 40%向量相似度只占 20% 的辅助票——刚说过的事要快、准情景记忆则向量权重拉满到 0.5更看重语义泛化。五、权重从哪来三级覆盖 意图自适应Mnemosyne 的权重解析优先级是见 beam.py 第 2412-2431 行调用参数recall(query, vec_weight..., fts_weight...)显式传参最高优先config.yaml 配置 / 环境变量MNEMOSYNE_VEC_WEIGHT、MNEMOSYNE_FTS_WEIGHT、MNEMOSYNE_IMPORTANCE_WEIGHT默认值0.5 / 0.3 / 0.2。更巧妙的是查询意图自适应MNEMOSYNE_QUERY_INTENT1开启系统先分类查询意图比如最近状态类查询自动加大新鲜度和精确词权重偏好事实类查询则更依赖向量相似度——同一个公式不同的题目用不同的系数。六、进阶多声部召回Polyphonic Recall如果开启MNEMOSYNE_POLYPHONIC_RECALL1Mnemosyne 会切换到 mnemosyne/core/polyphonic_recall.py 中的四声部引擎向量、图谱、事实、时序四路并行检索用RRFk60排名融合后再做多样性重排。可以理解为四个评委各投一票取综合名次每条结果都附带voice_scores字段让你看清每个信号各贡献了多少分。七、想亲眼看看打分过程Mnemosyne 内置可观测性设计两个实用入口explain 模式recall(query, explainTrue)会返回完整打分轨迹包括每个阶段wm_primary / em_primary / em_fallback的候选数与保留数召回诊断mnemosyne/core/recall_diagnostics.py 持续记录各档位命中统计与降级率帮你在自己的数据上判断哪路信号在发力。八、一句话总结Mnemosyne 的召回精髓浓缩成一句话三权重基础分向量 0.5 全文 0.3 重要性 0.2→ 新鲜度指数衰减保底 70% → 图谱/事实结构化加成 → 可靠性折价 → 全局排序。每一层公式都有明确的防御目标——防语义幻觉、防关键词误伤、防老旧噪音、防低质推断。所有权重都可通过配置微调这套打分体系也支撑着它在 BEAMICLR 2026基准上的表现详见 docs/beam-benchmark.md 与 docs/architecture.md。 想动手验证装好pip install mnemosyne-memory[all]后打开 explain 模式跑一次召回对着本文的公式逐项核对voice_scores你会发现每条记忆的分数都有迹可循。【免费下载链接】mnemosyneZero-cloud AI memory that works everywhere. SQLite-backed. One pure-Python dependency.项目地址: https://gitcode.com/gh_mirrors/mnemosyne5/mnemosyne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表