浏览器端语义搜索:无需服务器的4MB模型

Semantic/Hybrid Search in the Browser

浏览器端语义搜索:无需服务器的4MB模型

八年前我用Lunr.js实现了关键词搜索,但无法理解语义。今年我尝试在浏览器中运行语义搜索,发现传统的Transformers.js方案需要23MB,太重了。于是我转向了model2vec(potion)模型,它本质上只是一个查找表,通过简单的向量平均就能实现81%的MiniLM检索质量。我将整个模型量化为4MB的int8表,配合JavaScript实现的WordPiece分词器,成功在浏览器端实现了完全离线的语义搜索。有趣的是,我发现模型的停用词列表其实就藏在向量模长里,而我为加速构建索引设计的缓存机制,对于这种轻量级操作来说完全是多余的过度设计。

模型的停用词列表就隐藏在向量模长之中,无需任何特殊处理。