语义记忆搜索

语义记忆搜索

OpenClaw 的内置记忆系统将所有内容存储为 markdown 文件——但随着记忆在数周和数月内增长,找到上周二的那一个决定变得不可能。没有搜索,只能滚动浏览文件。

这个用例使用 memsearch 在 OpenClaw 现有的 markdown 记忆文件之上添加了向量驱动的语义搜索,所以你可以通过含义即时找到任何过去的记忆,而不仅仅是关键词。

功能

  • 使用单个命令将所有 OpenClaw markdown 记忆文件索引到向量数据库(Milvus)中
  • 按含义搜索:“我们选择了什么缓存解决方案?“即使单词 “caching” 没有出现也能找到相关记忆
  • 混合搜索(密集向量 + BM25 全文)与 RRF 重排序以获得最佳结果
  • SHA-256 内容哈希意味着未更改的文件永远不会重新嵌入——零浪费的 API 调用
  • 文件监视器在记忆文件更改时自动重新索引,因此索引始终是最新的
  • 适用于任何嵌入提供商:OpenAI、Google、Voyage、Ollama 或完全本地(不需要 API 密钥)

痛点

OpenClaw 的记忆存储为纯 markdown 文件。这对于可移植性和人类可读性很有好处,但它没有搜索功能。随着你的记忆增长,你必须要么 grep 文件(仅关键词,错过语义匹配),要么将整个文件加载到上下文中(在不相关的内容上浪费 token)。你需要一种方法来询问"我对 X 做了什么决定?“并获得确切的相关块,无论措辞如何。

所需技能

  • 不需要 OpenClaw 技能——memsearch 是一个独立的 Python CLI/库
  • Python 3.10+ 带有 pip 或 uv

如何设置

  1. 安装 memsearch:
pip install memsearch
  1. 运行交互式配置向导:
memsearch config init
  1. 索引你的 OpenClaw 记忆目录:
memsearch index ~/path/to/your/memory/
  1. 按含义搜索你的记忆:
memsearch search "我们选择了什么缓存解决方案?"
  1. 对于实时同步,启动文件监视器——它在每次文件更改时自动索引:
memsearch watch ~/path/to/your/memory/
  1. 对于完全本地设置(无 API 密钥),安装本地嵌入提供商:
pip install "memsearch[local]"
memsearch config set embedding.provider local
memsearch index ~/path/to/your/memory/

关键见解

  • Markdown 保持为真实来源。 向量索引只是一个派生缓存——你可以随时使用 memsearch index 重建它。你的记忆文件永远不会被修改。
  • 智能去重节省资金。 每个块由 SHA-256 内容哈希标识。重新运行 index 仅嵌入新的或更改的内容,因此你可以根据需要运行它,而不会浪费嵌入 API 调用。
  • 混合搜索胜过纯向量搜索。 通过倒数排名融合将语义相似性(密集向量)与关键词匹配(BM25)结合,可以捕获基于含义和精确匹配的查询。

相关链接