「一句话找工具」是怎么工作的:从关键词匹配到语义检索
为什么输入「把照片里的人抠出来换个背景」能找到抠图工具,普通搜索框却做不到。
关键词搜索的天花板
传统站内搜索比对的是字面是否包含同一个词。用户说「抠出来换背景」,工具描述写的是「自动去背景」,字面不重合,结果就是零条。这在工具目录站里尤其常见,因为用户描述的是任务,站点描述的是功能。
语义检索的做法
把每条工具的标题、简介、标签和常见用户说法预先转成向量,访客输入的整句话也用同一个模型转成向量,再算余弦相似度取最相近的几条。关键在于前后必须用同一个模型,否则向量不在同一空间,比较没有意义。
零成本的实现路径
- 构建期把向量算好,产出静态
vectors.json,访客端不需要调用任何付费 API。 - 访客端在 Web Worker 里懒加载轻量模型,只算查询那一句,约 22~118 MB,配进度提示。
- 保留关键词搜索作为降级,模型没加载完也能用。
本站的搜索页用的是意图词典 + 字符 n-gram 的离线降级方案,换成真实向量后页面与交互无需改动。