启用FTS5全文索引后,执行hermes memory search "nginx OR ssl" --rank可20毫秒内按BM25相关性排序返回带ID和摘要的结果,需先运行hermes memory enable-search初始化索引,否则搜索为空。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你在调试一个API集成方案,刚让Hermes Agent生成了完整的Docker Compose配置,转头处理其他任务后想立刻找回那段对话——不是翻列表、不是等加载,而是输入关键词后20毫秒内就弹出带ID和摘要的精准结果。这背后不是运气,是SQLite FTS5引擎+BM25排序+预建索引三者咬合运转的结果。
确认FTS5全文索引已启用
首次使用搜索前必须手动激活索引,否则state.db里只有原始数据,没有倒排表。运行hermes memory enable-search,系统会校验~/.hermes/state.db结构并初始化FTS5虚拟表。这一步不可跳过,【未执行该命令时所有search指令均返回空】。
执行后终端显示“FTS5 index built on messages table”,表示索引已就绪。若提示“already enabled”,说明此前已启用,可直接进入下一步。
构造高命中率搜索语句
FTS5默认用AND逻辑连接词,但历史会话中关键词往往分散在不同轮次。比如你只记得“nginx”和“SSL”,但实际对话里可能是第一轮提nginx,第三轮才说SSL证书。所以必须显式用OR连接:
hermes search "nginx OR ssl"
如果结果仍偏少,改用短语匹配:“nginx reverse proxy”;或启用前缀通配:deploy* 可同时命中 deploy、deployment、deploying。注意:短语必须加英文双引号,通配符*只能放在词尾,不能写成*nginx。
按相关性排序并快速定位目标
第一步:执行带--rank参数的搜索,强制启用BM25算法排序
hermes memory search "docker networking" --rank
第二步:查看返回结果中的score字段,数值越高代表语义相关性越强。前三条通常就是你要找的。
第三步:复制目标行最左侧的会话ID(如20260628_0915_e3f7a1b9),直接执行hermes session resume 20260628_0915_e3f7a1b9即可加载完整上下文。
这一步的关键在于--rank参数——它绕过默认的timestamp排序,直连FTS5的BM25评分模块,把耗时从300ms压到20ms量级。不加该参数时,系统先查ID再逐条比对摘要,本质是线性扫描。


















