前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全文检索、向量检索和混合检索的比较分析

全文检索、向量检索和混合检索的比较分析

作者头像
大数据杂货铺
发布2024-04-24 09:44:26
2000
发布2024-04-24 09:44:26
举报
文章被收录于专栏:大数据杂货铺大数据杂货铺

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

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

全文检索

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

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

尽管现代 SQL 和 NoSQL 数据库具有一些全文搜索功能,但与以搜索为中心的数据库相比,它们往往存在不足。

矢量搜索

矢量搜索是人工智能驱动的搜索方法。它不是查找与文本查询匹配的文档,而是允许查找具有相似语义的文档。这是通过建立大型语言模型(LLM) 提供的文本语义理解来实现的。

大语言模型可以处理数据库记录并生成向量嵌入——文档语义的数字表示。然后将这些嵌入存储在向量数据库中。顾名思义,矢量搜索的工作原理是比较相似的矢量。

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

对比分析:全文搜索与矢量搜索

全文搜索的工作原理是在文档中查找单词。这使得它能够很好地理解用户查询背后的词汇意图。但当它必须处理无法模糊匹配的模糊查询时,它就显得不足了。对文档缺乏语义理解,导致无法理解上下文并进行概括。

总结一下,全文搜索:

  • ? 纠正拼写错误——例如reutrn of the jedi
  • ? 处理精确查询 - 例如an exact product name
  • ? 处理不完整的查询 - 例如return of the j
  • ? 无法处理模糊查询——例如folks fighting with lightsabers
  • ? 无法理解上下文——例如winter clothes

另一方面,矢量搜索的工作原理是查找具有相似含义的文档。这使得它能够很好地理解用户查询背后的语义意图。它非常适合理解文档的同义词和描述。它还适用于类似文档的发现。

总结一下,向量搜索:

  • ? 处理模糊查询——例如首部上映的星球大战电影
  • ? 理解上下文——例如冬天的衣服
  • ? 可以推荐类似的文档
  • ? 无法处理精准查询
  • ?需要更多资源

正如我们所看到的,这两种解决方案都不是完美的。对于给定的用例,它们各自具有明显的优势。他们相辅相成。构建最先进的搜索体验需要结合全文搜索和矢量搜索的优势。

确实,我们可以两者兼得吗?

混合搜索的案例

混合搜索结合了全文搜索和矢量搜索的优点。它建立在全文搜索的可访问性、即输入即搜索体验的基础上,并集成了人工智能搜索支持的增强发现功能。

Meilisearch

像 Meilisearch 的混合搜索这样的解决方案可以在不妥协的情况下实现两全其美。这使得开发人员可以使用统一的 API 来进行所有类型的搜索。下面的代码示例演示了此类 API 的用法。

代码语言:javascript
复制
// Hybrid search with Meilisearchconst results = await client.multiSearch({queries: [{ indexUid: 'movies', q: 'batman',hybrid: { embedder: 'default', semanticRatio: 0.5 }
        }]
})

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

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

该semanticRatio领域使我们能够平衡语义搜索结果的重要性。较高的值将允许语义空间中距离较远的文档进入最终搜索结果。

该semanticRatio值的工作原理如下:

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

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

Elastic Search

Elastic Search 引入了带有倒数排名融合 (RRF) 的混合搜索,以结合向量、关键字和语义技术以获得更好的结果。此版本还提高了向量搜索和摄取的性能,响应时间加快了 30% 以上。

Elasticsearch 用户越来越多地使用不同类型信息的搜索检索 — BM25 用于文本,向量搜索用于密集向量。混合搜索技术通常会提供更好的结果:对多个 BIER 数据集进行基准测试显示,结合 BM25 和基于 ELSER 的排名时,相关性有所提高,现在用户甚至可以更轻松地组合所有这些检索方法。使用倒数排名融合 (RRF) 的混合搜索现在允许用户组合来自以下任意组合的搜索:

  • Elastic? 向量数据库搜索
  • 基于关键字的 BM25f 搜索
  • 使用 Elastic Learned Sparse Encoder 模型进行文本扩展搜索

它开箱即用,无需规范化或配置权重,因此你可以快速、无缝地将向量或语义搜索与 Elastic Learned Sparse Encoder 模型合并到现有搜索体验中。

结论

正如工程师会告诉您的那样,“X 的最佳工具是什么?”的问题。总是:这取决于。就其本身而言,全文搜索和矢量搜索都无法满足构建快速、相关的搜索体验的所有标准。混合搜索将全文搜索的可访问性与人工智能实现的改进发现相结合。

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

原文链接:https://blog.meilisearch.com/full-text-search-vs-vector-search/

原文作者:LAURENT CAZANOVE

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-23,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 大数据杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全文检索
  • 矢量搜索
  • 对比分析:全文搜索与矢量搜索
  • 混合搜索的案例
    • Meilisearch
      • Elastic Search
      • 结论
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com