07 · 记忆系统(二)——FTS5检索与Honcho用户建模
开场场景:三个月前的那个细节
三个月前,你在 Hermes 的某次对话中提到:“我们项目的数据库用 PostgreSQL 15,ORM 用 SQLAlchemy 2.0,连接池配置了 20 个连接。”
三个月后的今天,你让 Hermes 帮你写一段数据库连接代码。它没有问"你们用什么数据库",而是直接用了 PostgreSQL + SQLAlchemy 2.0 的连接方式。
你愣住了一秒,然后意识到:它记得。
但问题是——它怎么做到的?三个月,成百上千次对话,它是怎么在这么多信息中精准找到那一条的呢?
答案就是FTS5 全文检索和Honcho 用户建模。
一、FTS5 全文检索原理
什么是 FTS5
FTS5(Full-Text Search 5)是 SQLite 的一个扩展模块,提供高效的全文搜索能力。Hermes 用它来索引所有会话数据。
工作原理
想象你有一本好几千页的日记(所有历史对话)。要找"PostgreSQL 15"这个词,人眼一页页翻可能需要几小时。但如果你有一个书末索引(索引),把所有重要的词都标上页码,查找就是瞬间的事。
FTS5 做的就是这件事:
- 分词:把每条对话消息拆分成词语/词组
- 建索引:为每个词建立到所在消息的映射
- 排序:BM25 算法计算相关性,排在前面的结果最相关
- 检索:根据查询词找到最