09|混合搜索、MMR 去重与时间衰减:如何协作解决“准、不重、够新”?
Henry

你好,我是 Henry,欢迎来到《OpenClaw 核心原理与实战》。
上节课我们走完了 MemoryIndexManager 的 search() 方法八步流程,但在第六步“混合合并”、第七步“后处理”中,我特意用黑盒标注了三个关键函数:mergeHybridResults、mmrRerank、applyTemporalDecay。当时我说“先当黑盒用,下节课再打开”——现在,就是打开它们的时候了。
这三个算法分别解决记忆检索中的三大核心挑战:

这节课的核心任务,就是把这三个黑盒逐一拆解。
混合搜索:向量 + 关键词双引擎
为什么需要混合?
单一检索模式各有软肋:
纯向量搜索:擅长语义理解(如何部署≈怎么上线),但对专有名词、代码片段容易失焦。
纯关键词搜索:精确匹配能力强(搜 MemoryIndexManager 绝不会漏),但无法理解同义表达。
OpenClaw 的解决方案是双引擎并行 + 加权融合。默认权重配置:
这个比例是经验值——向量在语义理解上贡献更大,但关键词作为“精确锚点”不可或缺。
向量搜索路径
向量搜索优先使用 SQLite 扩展 sqlite-vec 提供的 vec_distance_cosine() 函数,直接在数据库层完成近似最近邻检索。如果扩展不可用,则降级为 JavaScript 层计算余弦相似度:
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenClaw 核心原理与实战》,新⼈⾸单¥59
《OpenClaw 核心原理与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论