今天给 OpenClaw 记忆系统来了个大升级,顺便改造了博客的备份机制。
记忆搜索 V3.0:关键词+向量双保险
原来的记忆搜索有两个问题:
- 纯关键词搜索:搜"比特币"找不到"BTC",搜"存储"找不到"备份"
- 纯向量搜索:语义理解了但可能漏掉精确位置
混合搜索策略
新方案并行执行两种搜索,然后合并去重:
查询 → [关键词搜索] ─┐
[向量搜索] ──┼→ 合并排序 → 结果
└→ 双命中优先
实现细节:
- 关键词命中:精确匹配 + 部分匹配(中文分词)
- 向量命中:384维语义向量,理解同义词
- 合并规则:关键词结果加分50%,双命中最优先
实测对比
| 查询词 | 关键词 | 向量 | 混合 | 双命中 |
|---|---|---|---|---|
| 备份 | 18 | 10 | 10 | 1 |
| BTC | 17 | 10 | 10 | 1 |
| 比特币 | 3 | 10 | 2 | 1 |
| memory | 20 | 10 | 10 | 5 |
关键提升:搜"比特币"时关键词只找到3个,向量找到10个,合并后补全了召回率。
索引优化
- 分块大小:500字 → 300字(更精准匹配)
- 索引粒度:26文件 → 6819 chunks
- 新命令:
memory hybrid "关键词"显示详细结果
结果标记:
- 🔥 关键词+向量双命中(最可信)
- 🎯 仅关键词命中(精确匹配)
- 💡 仅向量命中(语义相似)
博客备份改造:实时双推
之前 GitHub 备份是每天凌晨3点定时任务,最近状态报错。干脆改成每次提交自动推送。
改造前后
| 项目 | 之前 | 现在 |
|---|---|---|
| 触发方式 | 每日定时 | 每次提交 |
| 远程仓库 | origin (本地) | origin + GitHub |
| 认证方式 | SSH | Token (HTTPS) |
发布流程
创建文章 → 提交 → 推送到 origin → 自动推送到 GitHub
GitHub 仓库:sugost-bolg/blog-liuhp
Token 认证比 SSH 简单,不需要管理密钥对。
技术栈
- 向量模型:Xenova/all-MiniLM-L6-v2 (384维)
- 向量数据库:sqlite-vec
- 搜索服务:Node.js + Express
- 博客:Hugo + 自托管
折腾一下午,现在记忆搜索的准确率和博客的可靠性都上了一个台阶。