在当今信息海洋中航行既是一件奇迹,也是一件迷宫。全文搜索和向量搜索使我们能够构建搜索体验,使用户能够找到相关产品、内容等。随着我们对搜索中精度和语境的追求不断发展,一个问题出现了:我们能否平衡全文搜索的词汇灵活性与向量搜索的语义深度?

让我们一起探索每种解决方案的优缺点,并发现正在重新定义现代搜索和发现体验的协同作用。

全文搜索是指将文本查询的全部或部分与存储在数据库中的文档进行匹配。与传统的数据库查询相比,全文搜索即使在部分匹配的情况下也能提供结果。它允许为用户构建更灵活的搜索界面,从而使他们能够更快地找到准确的结果。

在实践中,有效的全文搜索解决方案具有对拼写错误、同义词、前缀搜索和模糊匹配的容忍度。这些功能使用户即使在所掌握的信息有限的情况下也能找到他们想要的东西。允许使用不完整信息进行搜索可以加快发现速度。

虽然现代 SQL 和 NoSQL 数据库具有一些全文搜索功能,但它们与专注于搜索的数据库相比往往存在不足。有关此主题的更深入探讨,请考虑阅读有关Postgres 在全文搜索方面的不足之处

💡
在我们的专门文章中,了解有关搜索引擎的内部工作原理

向量搜索是一种由 AI 驱动的搜索方法。它不是查找与文本查询匹配的文档,而是查找具有相似语义意义的文档。这是通过利用大型语言模型 (LLM) 提供的文本语义理解来实现的。

LLM 可以处理数据库记录并生成向量嵌入——文档语义意义的数字表示。然后将这些嵌入存储在向量数据库中。顾名思义,向量搜索通过比较相似的向量来工作。

通过执行向量比较,向量搜索有效地实现了语义搜索。尽管依赖于不同的底层技术,但它也解决了与全文搜索类似的目的:通过改进搜索的发现方面来增强用户能力。它特别支持多模式搜索——使用非文本输入进行搜索,例如在 Google 图片中。

全文搜索通过查找文档中的单词来工作。这使得它能够很好地理解用户查询背后的词汇意图。但当它必须处理无法进行模糊匹配的模糊查询时,它就会力不从心。由于缺乏对文档的语义理解,它无法理解上下文并进行概括。

总而言之,全文搜索

  • ✅ 更正拼写错误——例如:reutrn of the jedi
  • ✅ 处理精确查询——例如:准确的产品名称
  • ✅ 处理不完整的查询——例如:return of the j
  • ❌ 无法处理模糊查询——例如:拿着光剑战斗的人
  • ❌ 无法理解上下文——例如:冬季服装

另一方面,向量搜索通过查找具有相似意义的文档来工作。这使得它能够很好地理解用户查询背后的语义意图。它擅长理解同义词和文档描述。它还适应于发现类似的文档。

总而言之,向量搜索

  • ✅ 处理模糊查询——例如:第一部上映的星球大战电影
  • ✅ 理解上下文——例如:冬季服装
  • ✅ 可以建议类似的文档
  • ❌ 无法处理精确查询
  • 👎 需要更多资源

正如我们所见,两种解决方案都不完美。它们各自在给定的用例中具有明显的优势。它们是互补的。构建最先进的搜索体验将需要结合全文搜索和向量搜索的优势。

“Why don't we have both?“ meme

的确,我们能否同时拥有两者?

混合搜索结合了全文搜索和向量搜索的优点。它建立在全文搜索的易用性和即时搜索体验的基础上,并整合了 AI 搜索带来的增强型发现功能。

像 Meilisearch 的混合搜索这样的解决方案,在不妥协的情况下,带来了两全其美。这使开发人员能够对所有类型的搜索使用统一的 API。下面的代码示例演示了这种 API 的用法。

// Hybrid search with Meilisearch

const results = await client.multiSearch({
	queries: [{ 
		indexUid: 'movies', 
		q: 'batman',
		hybrid: { embedder: 'default', semanticRatio: 0.5 }
	}]
})
💡
不使用 JavaScript?Meilisearch 支持多个 SDK

此代码使用 Meilisearch 客户端在电影索引中搜索 batman 查询。它使用混合搜索,该搜索通过 hybrid 参数进行配置。让我们回顾一下 hybrid 对象中的字段,看看它们启用了什么功能。

embedder 字段允许选择哪个嵌入器将处理查询(Meilisearch 允许为给定的索引配置多个嵌入器。)

semanticRatio 字段允许我们平衡来自语义搜索的结果的重要性。较高的值将允许在语义空间中距离更远的文档进入最终搜索结果。

semanticRatio 值的工作原理如下

  • 语义比率 = 0——它是全文搜索
  • 语义比率 = 1——它是向量搜索
  • 0 < 语义比率 < 1——它是混合搜索 ✨

由于语义搜索总是会返回一些文档,因此保持整体搜索结果的相关性,平衡好很重要。下面的演示允许您搜索电影并使用语义比率来查看它如何影响结果。

Searching for movies using hybrid search
搜索“绿色巨魔在童话故事中的模仿”(实时演示

混合搜索即将登陆 Meilisearch 云,加入候补名单

结论

正如工程师会告诉你的那样,“什么工具最适合 X?”这个问题的答案总是:视情况而定。单独来看,无论是全文搜索还是向量搜索都无法满足构建快速、相关搜索体验的所有标准。混合搜索将全文搜索的可访问性与 AI 带来的改进型发现相结合。

混合搜索是现代的搜索方法,它通过单个 API 将最先进的搜索功能整合到一起。这种混合方法将全文搜索与语义搜索相结合,增强了搜索结果的准确性和全面性。它是一种适应当今搜索用例的现代、灵活的解决方案。


Meilisearch 是一款开源搜索引擎,使开发人员能够构建最先进的体验,同时享受简单、直观的 DX。 

有关 Meilisearch 的更多信息,您可以在Discord 上加入社区,或订阅时事通讯。您可以通过查看其路线图并参与产品讨论来了解更多关于该产品的信息。