为什么传统混合搜索效果不佳(以及我们如何解决它)
Meilisearch 创新的评分系统通过正确结合全文搜索和语义搜索,彻底改变了混合搜索,提供比传统排名融合方法更相关的结果。

在Meilisearch v1.6中,我们通过将全文搜索的精确性与人工智能的智能相结合,彻底改变了搜索。这种混合方法不仅仅是另一个功能,它是对搜索工作方式的根本性重新构想。今天,我们将揭示我们实施的幕后,并展示为什么Meilisearch独特的混合搜索方法能够提供卓越的结果。
加入我们,共同探索混合搜索的机制,审视传统的实施方法,并揭示Meilisearch的创新解决方案如何提升搜索相关性的标准。
什么是混合搜索?
搜索总是为了找到与用户查询最相关的文档。
混合搜索旨在结合两种互补的搜索方法的结果:全文搜索和语义搜索。
全文搜索以词法方式分析查询中出现的单词,擅长纠正拼写错误和补全不完整的查询。它速度快,结果易于理解。
语义搜索利用大型语言模型(LLM)技术来理解查询中单词的含义。它擅长查找包含用户查询同义词和其他类似概念的文档。
两种搜索方法都根据各自的方法构建相关文档列表。混合搜索将这些列表结合起来,生成最终的结果列表。
那么,关键问题是如何将它们结合起来?
传统的混合结果方式存在缺陷
混合这两个列表结果的传统方法被称为倒数排名融合(RRF),因为它考虑了文档在每个结果列表中的排名,并以此作为计算最终结果列表的基础。
在此上下文中,文档的排名指的是它在结果列表中的位置,表示它距离顶部有多近。
例如,在一个包含20个文档的列表中,排名第一的结果可以获得20分。RRF可以为每个列表中的文档分配分数,然后将每个文档的分数相加,并根据总分重新排序文档。这里有一篇关于Azure AI Search中RRF实现方法的详细解释。
然而,这种混合结果的方法存在缺陷,因为要正常运行,它假设所有结果列表中的文档具有可比较的相关性:也就是说,所有列表中的所有文档都是我们希望返回的“好文档”。
但是,就像宝可梦一样,每种搜索方法都容易受到不同类型搜索查询的影响。弥补另一种方法的弱点是混合它们的全部意义!
因此,假设您正在使用一个对语义搜索有效,但对关键词搜索结果平平的查询。使用RRF,您可能会得到以下某种变体:
递归排名融合就像把上好的巧克力和变质的牛奶混合在一起,白白浪费了!
为了解决这个问题,我们需要更多关于结果列表中文档的信息。
排名不足:文档评分
主要思想是,您可以独立于文档在列表中的排名,对其相关性进行评分,范围从0(完全不相关)到1(“完美”匹配)。
自然,越接近列表顶部的文档越相关,但第一个文档的得分可能介于0到1之间。然后,您比较两个列表中的得分,并以这种方式对两个列表中的文档进行排名。
幸运的是,Meilisearch已经对全文搜索的文档进行评分(有关此的更多详细信息,请参阅我们之前关于评分的文章),并且语义搜索本身会根据文档与查询的相似程度对文档进行排名(尽管细节很复杂)。
所以我们对全文搜索和语义搜索都有了分数,但是我们能比较它们吗?
使分数可比较
当你有两个0.0到1.0范围的分数时,你可能会想比较它们,但要实现这一点,相似相关度的文档必须通过两种方法获得相似的分数。
在进行这种比较时出现的一个困难是,语义搜索中使用的模型倾向于只使用它们可能使用的全部向量空间的一部分,导致即使对于完全不同的文本,向量的相似度也至少为0.5。此外,即使是非常相似的文本,其相似度也可能被限制在0.7左右,这将导致它们排名低于良好的全文搜索结果。
幸运的是,Meilisearch 提供了解决这个特定问题的工具。Meilisearch 允许您对语义搜索的分数执行仿射变换,以便分数可以通过观察到的向量间平均相似度进行偏移,并且围绕该平均相似度聚集的结果可以在 0.0 到 1.0 的空间中更广泛地分布。欲了解更多详情,请参阅关于 distribution
字段的文档。
对于Meilisearch已知的模型(例如OpenAI模型),已配置的嵌入器已应用了合适的默认分布,因此用户无需自行配置!
通过此操作,我们的分数变得可比较,并且根据查询,混合搜索将倾向于生成最相关文档的方法。
构建正确的混合搜索还需要什么?
文档评分是 Meilisearch 相对于传统基于倒数排名融合方法的决定性相关性优势,但要正确实现混合搜索,还有许多其他方面需要考虑。
- 我们开发了我们定制的向量存储,arroy,以利用我们的数据库后端(LMDB)并达到我们的性能目标。Arroy 支持近似最近邻搜索、多种距离、原生文档过滤器和二进制量化。Arroy 在写入时不会阻塞读取器,在读取时也不会阻塞写入器,并且允许增量更新。
- 我们秉持着“让简单的事情变得简单,让困难的事情变得可能”的理念,始终将灵活性铭记于心:混合搜索新手可以快速设置默认提供商和配置的嵌入器,但用户也可以通过多个受支持的提供商(甚至通过REST嵌入器和用户提供的嵌入提供自己的嵌入器)和文档模板来精心优化其嵌入过程,以自定义文档如何转换为文本进行嵌入。
- 一流的全文搜索引擎,与语义搜索无缝集成,支持高效且富有表现力的文档排序和过滤。
搜索是基础;它需要坚如磐石,才能可靠地满足应用程序的需求。Meilisearch的混合搜索实现对文档进行评分以合并结果,同时保持其相关性。评分还支持联邦搜索,它是语义搜索的通用版本,可统一来自多个中间命中列表的结果。
我们的用户使用联合搜索在多个向量存储中执行混合搜索,经常结合图像和文本搜索请求。
为什么Meilisearch的混合搜索脱颖而出
Meilisearch的创新混合搜索方法超越了简单地结合全文和语义搜索结果。
通过实施复杂的评分系统而非传统的排名融合,仔细校准评分可比性,并利用arroy构建坚实的技术基础,我们创建了一个始终如一地提供更相关结果的混合搜索解决方案。
这种深思熟虑的实现确保了每种搜索方法的优势得以保留,同时弥补了它们的弱点,为现代应用程序的搜索相关性树立了新标准。