混合方法结合了全文搜索和向量搜索的优势,以提高搜索准确性和相关性。全文搜索依赖于关键词匹配,使用 BM25 等算法根据精确词频和邻近度对文档进行排名。另一方面,向量搜索使用嵌入(文本的密集数值表示)来查找语义相似的内容,即使关键词并不完全匹配。混合系统并行或顺序执行这两种搜索,然后使用分数归一化、加权平均或重新排名等技术合并结果,以生成统一的排名列表。
例如,考虑一个搜索查询,如“python data analysis”。全文搜索可能会优先处理包含诸如“data analysis with Python”等精确短语的文档,而向量搜索可能会显示有关“pandas library tutorials”的结果(因为“pandas”在 Python 中与数据分析语义相关联)。混合方法将通过归一化 BM25 和向量相似度分数(例如,将两者都缩放到 0-1 范围)并应用权重(例如,60% 向量,40% 关键词)来计算最终相关性分数,从而结合这些结果。一些系统还使用两阶段过程:首先通过一种方法检索候选结果,然后用另一种方法优化列表,以平衡速度和准确性。
实现通常涉及 Elasticsearch(用于全文)等工具与 FAISS 等向量数据库或 Elasticsearch 的 kNN 插件等集成解决方案搭配使用。开发者必须解决延迟(运行两次搜索会增加开销)和平衡不同方法之间的权重等挑战。例如,关键词密集的查询(如“error code 404”)可能从全文结果中获得更高的权重,而模糊的术语(如“apple fruit vs. company”)则可以依赖向量搜索。使用真实世界数据进行测试对于针对特定用例调整分数阈值或融合算法(如 reciprocal rank fusion)等参数至关重要。这种灵活性使混合系统能够适应精度和召回率同等重要的场景。