Hotdry.

Article

Manticore Search 混合相似度评分:BM25 词频与稠密向量嵌入的实时 MLT 实现

剖析 Manticore Search 的 More Like This 实现演进,从经典 BM25 词法匹配到稠密向量 KNN 搜索,提供可直接落地的混合相似度评分参数与生产部署要点。

2026-06-10ai-systems

在信息检索场景中,用户往往并非从空白搜索框开始,而是基于已浏览的文档寻求相关内容 —— 查看商品后寻找替代品、阅读文章后探索相似主题、处理工单时检索历史案例。这种以已知文档为起点的相似推荐,业界称为 More Like This(MLT)。Manticore Search 作为开源搜索引擎,近期在其官方博客中详细阐述了 MLT 机制从经典词法分析到混合向量搜索的演进路径,为构建实时更新的相似文档推荐引擎提供了可直接落地的技术方案。

经典 MLT:BM25 词频统计的适用边界

传统 MLT 基于词法分析,核心逻辑是提取源文档的关键术语,通过 TF-IDF 或 BM25 算法计算文档间的词频重叠度。实现流程包括:分析源文档文本、筛选信息性术语、构建查询、执行全文检索并返回相似文档列表。这种机制在特定场景下表现优异 —— 错误代码匹配、产品 SKU 检索、法律条文比对、函数名或堆栈跟踪定位等需要精确字面匹配的任务。

词法 MLT 的优势在于成本低廉:倒排索引已存在于搜索引擎内部,分析器和排序机制均已配置就绪,无需额外部署向量检索基础设施。然而其局限同样明显:当文档使用不同词汇表达相同概念时(如 "内存泄漏" 与 "无界堆增长"),标准分词器无法识别语义关联;同义词处理效果参差不齐,跨语言相似性通常不可用。因此,词法 MLT 适合处理精确标识符和稳定表述,但在语义泛化场景下存在覆盖盲区。

向量嵌入 MLT:稠密向量的语义捕获

现代 MLT 引入嵌入向量(embeddings)作为文档的数值表征,将语义相似性转化为向量空间中的距离计算。预先将文档编码为稠密向量存储于索引中,搜索时通过 KNN(K-Nearest Neighbor)查找向量空间中的邻近文档。这种方法突破了词法匹配的词汇壁垒 —— 即使文档用词迥异,只要语义相近,其向量表征在空间中仍保持接近。

对于大规模数据集,精确 KNN 的计算成本过高,因此生产环境通常采用 ANN(Approximate Nearest Neighbor)索引进行近似搜索,以牺牲微小精度换取数量级的性能提升。向量 MLT 不仅适用于文本,还可扩展至产品、图像、代码片段、用户事件等多种对象类型,在 RAG(检索增强生成)系统中用于上下文扩展尤为有效。

Manticore 的引擎层实现:从文档 ID 到 KNN 查询

Manticore Search 的关键创新在于将 MLT 操作下沉至搜索引擎内部执行,而非在应用层处理。传统实现需要应用层先获取文档、提取向量、再发起独立查询,涉及跨服务数据传输、模型版本校验、过滤条件同步等复杂环节。Manticore 的简化路径是:应用仅传递源文档 ID,引擎直接从索引中提取预计算向量并执行 KNN 搜索。

SQL 接口的极简示例如下:

SELECT id, title, knn_dist()
FROM products
WHERE knn(embedding, 10, 123)
LIMIT 10;

其中 embedding 为存储向量的字段,123 为源文档 ID,10 指定返回邻近文档数量,knn_dist() 返回向量距离(值越小语义越近)。HTTP JSON API 提供同等能力,应用层无需处理高维向量的序列化和传输,过滤条件与主搜索保持一致,显著降低系统架构复杂度。

混合相似度评分:词法与向量的协同

生产环境的最佳实践并非二选一,而是采用混合搜索策略。词法搜索确保精确匹配(错误码、SKU、法规引用),向量搜索补充语义关联(同义表述、概念泛化),过滤条件约束搜索空间,重排序(reranking)优化最终排序。Manticore 支持在同一查询中组合 BM25 评分与向量距离,通过权重参数调节两者贡献比例。

混合方案的工程价值在于覆盖率的完整性:词法 MLT 可能遗漏同义文档,纯向量搜索可能因 ANN 近似性引入假阳性或遗漏真正相关文档。两者结合可在精确性与召回率之间取得平衡,尤其适用于支持工单匹配、产品目录推荐、RAG 上下文扩展等对准确性要求较高的场景。

生产部署要点

部署混合 MLT 系统需关注以下参数与机制:

嵌入模型管理:建立模型版本元数据系统,确保索引中的向量与查询时使用的编码模型版本一致。模型更新时需重新编码存量文档或维护版本兼容性策略。

访问控制与租户隔离:MLT 查询需继承主搜索的 ACL 规则和租户过滤条件,防止跨用户数据泄露。建议在引擎层统一处理过滤逻辑,避免应用层重复实现。

ANN 索引调参:根据数据集规模和精度要求选择 ANN 算法(如 HNSW、IVF),配置适当的构建参数(efConstruction、M)和搜索参数(efSearch),在查询延迟与召回率之间权衡。

质量监控体系:建立精确率、召回率指标监控,追踪假阳性频率和 ANN 近似导致的漏检问题。定期使用真实查询和数据集评估搜索质量,迭代优化嵌入模型和评分权重。

实时索引更新:Manticore 支持实时索引更新,新文档入库时即时计算嵌入向量并加入 ANN 索引,确保 MLT 结果反映最新数据状态,无需全量重建索引。

总结

Manticore Search 的 MLT 演进体现了信息检索从词法匹配到语义理解的范式转移。通过将向量检索能力内嵌至搜索引擎核心,开发者得以用单一文档 ID 触发混合相似度计算,在保持词法精确性的同时获得语义泛化能力。对于需要实时更新、支持复杂过滤、兼顾精确匹配与语义推荐的相似文档系统,这种引擎层集成的混合方案提供了工程实现上的简洁性与运维可控性。


参考来源

ai-systems

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com