前往主页Meilisearch的标志
返回文章
2025年3月13日

混合搜索101:工作原理及重要性

了解什么是混合搜索、它的工作原理、优势和局限性,以及如何开始实施它等等。

Ilia Markov
Ilia Markov高级增长营销经理nochainmarkov
Hybrid Search 101: how it works and why It's important

混合搜索结合了关键词搜索和语义搜索,为用户提供了两全其美的体验,并能控制所需的上下文深度。

这种类型的信息检索(IR)在企业搜索、电子商务和知识管理系统中尤其关键,其中一些输入需要深入的上下文理解,而另一些则需要精确的关键词匹配。

混合搜索的一个明显优势是它能够以更低的计算成本处理数据。

这得益于词汇匹配系统,它比可能依赖大型语言模型(LLM)、卷积神经网络(CNN)和其他耗能模型的语义算法消耗更少的算力。

因此,这些系统可以进行调整以获得更高的性能,同时也是纯语义搜索系统的一种经济高效的替代方案。

然而,实施混合搜索需要战略规划。不熟悉语义权重设置的用户可能会感到困惑,从而导致沮丧或放弃使用。

在接下来的文章中,我们将深入探讨混合搜索的重要性、如何实施它以及在哪些情况下它是首选解决方案。

什么是混合搜索?

混合搜索系统结合了基于关键词的检索(稀疏向量方法)和语义搜索系统(密集向量嵌入),以优化精确性和上下文相关性。

为了直观解释混合搜索中使用的术语和技术,我们来看看下面的图表:

What is hybrid search.png

语义搜索依赖于密集向量,要求搜索查询和目标数据都使用机器学习(ML)模型进行嵌入。一些方法,如神经搜索,利用深度神经网络(DNN)生成丰富的上下文洞察力,用于嵌入、检索和排名。向量搜索是另一种语义搜索类型,它使用嵌入模型创建密集向量,使用近似最近邻(ANN)等ML算法进行信息检索,并使用余弦相似度搜索进行排名。

另一方面,关键词搜索依赖于通过算法生成的稀疏向量。例如,我们的全文搜索依赖于与数据集中每个词关联的文档向量。当输入搜索查询时,系统会通过提取单个词并将其与文档的稀疏向量值进行匹配来预处理输入。然后,这些结果会根据关键词相关性使用递归桶式评分进行排名。

Prepocessing.png

密集向量

密集向量范围广,可以包含数百甚至数千个浮点数(数值表示)来识别单个文档。它们表示向量空间中对象的相似性,并可以具有以下形式:

dense_vector = [0.8, 0.4, 0.2, 0.7, 0.9, 0.1, … ]

密集向量通常是多维的,并且没有零值,因为它们是连续创建的,以捕获文档或查询的完整信息。

稀疏向量

在全文搜索中,稀疏向量以与数据集中每个词关联的文档形式出现。这种向量表示构成了排名和检索相关准确结果的基础。

混合搜索结合了密集向量和稀疏向量检索的优点,以提高搜索分数。它首先从两种方法中收集匹配项,然后通过全局排序结果的相关性来优化最终输出。

在下一章中,我们将探讨混合搜索过程的每个步骤。

混合搜索是如何工作的?

混合搜索通过利用密集向量的语义能力以及稀疏向量的精确匹配和准确性来工作。然后将从这两种方法检索到的输出混合,以提供更相关的搜索结果。

How does hybrid search work.png

通过查看上面的示意图,我们可以将混合搜索工作流分为不同的步骤,允许语义搜索和关键词搜索并行操作:

数据清洗与预处理

  • 关键词搜索:需要强大的数据清洗(例如,Meilisearch 原生支持停用词,尽管全文搜索需要手动配置)以确保准确的词语匹配。
  • 语义搜索:受益于降噪和策略性文本分割(分块)以提高文档嵌入的质量。

嵌入:密集和稀疏表示

  • 语义:像 Transformer 的双向编码器表示(BERT)和全局向量(GloVe)这样的模型将文档转换为密集向量,捕获细微的上下文含义。
  • 关键词:一些算法使用基于频率的评分,而另一些则使用神经网络生成稀疏嵌入。

密集和稀疏向量的检索机制

  • 语义检索:利用近似最近邻(ANN)和K最近邻(KNN)等算法在密集向量空间中高效搜索。
  • 关键词检索:直接将查询词与文档向量进行匹配。

集成检索

  • 混合搜索:最后一步是结合两种检索方法的结果,以确定最相关的结果。

混合搜索过程可以调整,以赋予某种结果类型更高的重要性。如果上下文含义比词汇匹配更重要,系统会优先处理语义搜索的输出。否则,它会优先处理关键词匹配。此功能在 Meilisearch 的混合搜索设置中可用且易于控制。

混合搜索引擎的例子有哪些?

公司已采用混合搜索引擎来提高搜索结果的准确性和相关性。Google 搜索是最先进的混合搜索系统之一,它结合了多种搜索技术和算法,以提供精确且上下文相关的结果。

Google 集成了基于关键词的搜索和机器学习模型,以解释用户查询、对网页进行排名并呈现最相关的信息。目前,他们利用 Vertex AI Embedding 模型生成捕获语义含义的密集向量,同时为基于关键词的检索创建稀疏向量。

为了配置搜索结果,Google 使用互惠排名融合(RRF)将语义搜索和基于关键词搜索的输出合并,其官方笔记本中对此有详细说明。

截至 2025 年 1 月,Google 搜索仍保持 89.79% 的市场份额,继续主导搜索领域。虽然人工智能驱动的聊天机器人搜索功能已开始获得关注,但它们在准确性和实时信息检索能力方面仍不如 Google。

混合搜索有哪些优点?

混合搜索与独立的基于关键词或语义搜索方法相比,提供了多项优势。其中一些优点包括:

  1. 增强搜索准确性和相关性:混合搜索通过结合精确匹配和语义理解提供高质量的结果。这种准确性最终能留住用户并降低跳出率。
  2. 改善用户体验:即使用户输入不准确的词语或模糊的关键词,系统也能提供有意义的内容。这种检索信息的便利性使设计人员能够创建引人入胜的搜索元素。正如 CarbonGraph 所说:“我们从 Pinecone 迁移到 Meilisearch,以整合我们的搜索服务 [...] OpenAI 嵌入器的设置非常简单,我们喜欢它能自动使用搜索文档内容创建嵌入。
  3. 经济高效的实施:混合搜索中的词汇匹配相比纯语义搜索引擎减少了内存使用。这对于降低与存储和计算需求相关的云成本至关重要,特别是因为关键词搜索算法不依赖于 GPU。
  4. 提高搜索速度:Opinly 是一家允许您监控竞争对手网站的公司,它采用了混合搜索技术来提高其搜索结果的质量和上下文准确性。
  5. 个性化和适应性:混合搜索系统可以配置为动态调整关键词和语义相关性的权重,或允许用户对其进行控制。NFSA 收藏在其搜索引擎中提供了此选项,与 Meilisearch 的混合搜索非常相似。

混合搜索在各种业务领域都提供了显著优势,包括速度、鲁棒性和效率。然而,它并非总是每个搜索应用程序的最佳解决方案。下一章将探讨其局限性以及何时采用其他方法可能更合适。

混合搜索有哪些缺点?

虽然混合搜索结合了基于关键词搜索和语义搜索的优点,但它也带来了一些挑战,这些挑战可能会影响实施、性能和用户体验。以下是采用混合搜索方法时需要考虑的一些主要缺点:

  1. 实施复杂性增加:混合搜索需要集成多种搜索算法(例如,使用密集嵌入的语义搜索)。这种集成在技术上可能很复杂,并且需要深入的技术理解。
  2. 难以平衡关键词精度和上下文:过度依赖某一种方法可能会削弱另一种方法的优势(例如,语义能力强于关键词精度)。如果未能实现良好平衡,这可能导致糟糕的用户体验并增加跳出率。
  3. 糟糕的用户体验:如果用户可以调整语义权重,界面应该直观或专为熟悉该术语的受众设计。否则,可能会导致混淆并增加用户流失的风险。根据这篇Toptotal 报告,88% 的用户在经历糟糕的用户体验后不太可能再次访问。

尽管存在这些挑战,但只要正确应用,混合搜索仍然是一个强大的工具。

何时应使用混合搜索?

混合搜索并非在所有情况下都是最佳解决方案。在数据高度结构化(例如产品库存或特定学术研究)的情况下,精确性是关键,并且必须严格区分含义不同的相似词语。混合搜索在以下示例中真正发挥了其优势:

  1. 电子商务平台:像亚马逊这样的在线零售商实施混合搜索以增强产品发现。当客户输入模糊查询时,系统会利用关键词匹配和语义分析来呈现相关产品。您可以在下面看到它的实际应用;用户搜索“能保冷的瓶子”并收到了关于保温瓶的结果。

image9.png

  1. 企业知识库:组织通常维护大量的文档、手册和通信。混合搜索使员工能够高效地检索相关信息并提高生产力。
  2. 流媒体服务:Netflix 等平台利用混合搜索帮助用户查找内容,无论他们是按特定标题搜索还是描述主题。
  3. 市场平台:电子商务中的混合搜索可以提高搜索准确性,处理复杂查询,并增加产品发现,从而带来更高的销售额。

现在让我们看看如何将混合搜索系统无缝引入您的项目或工作流程中,使用 Meilisearch

如何实现混合搜索?

实现混合搜索需要一个向量存储解决方案。可以使用多种语言和 AI 框架进行实现,但 Python 和 Langchain 通常是一个高效入门的良好组合。

Meilisearch 的 AI 增强型混合搜索(介绍混合搜索)允许使用第三方嵌入模型并控制输出的语义权重,从而实现对用户输入的更深层语义理解。

要开始使用 Meilisearch 的混合搜索功能,您必须创建一个帐户并获得 API 密钥和 云平台的访问权限。您可以免费注册并享受 14 天的试用期。

image6.png

注册后,您可以创建一个新项目并使用向量存储来添加和索引文档、运行查询、监控分析等。

在设置选项卡中,您会找到一个名为“嵌入器(Embedders)”的选项,您可以通过集成您选择的任何嵌入模型来增强您的混合搜索功能。下面是 OpenAI 嵌入模型添加到嵌入器列表中的示例。

image8.png

添加模型后,您可以直接跳转到搜索预览选项卡并控制语义权重——您正在使用混合搜索!

image1.png

要将搜索引擎集成到您的工作流程中,请使用 Meilisearch 的 API,该 API 在云仪表板主页上提供。以下是一个用于查询和检索结果的 Python 脚本:

import meilisearch


client = meilisearch.Client(
    '<meilisearch_server_url>',
    '<master_token>')
query = "Give me a book about a post-apocalyptic world"
results = client.index('books').search(query, opt_params={
  'hybrid': {
    'semanticRatio': 0.7,
    'embedder': 'openai'
  },
  'limit':4
})


for result in results['hits']:
    print(result['metadata']['text'])

为了能够无问题地运行代码,您首先需要安装 Meilisearch 包。

pip install meilisearch

接下来,您需要一个索引——这是您添加到 Meilisearch 云中的文档集合(此示例中为“books”)。此外,您还需要一个嵌入模型。

Python 脚本的结果如下:

{"id": 15, "title": "The Road", "description": "A father and his young son journey through post-apocalyptic America, fighting for survival while holding onto their humanity.", "genre": "Post-Apocalyptic"}
{"id": 6, "title": "1984", "description": "A dystopian social science fiction novel that follows Winston Smith and his rebellion against the totalitarian government that controls their society.", "genre": "Dystopian Fiction"}
{"id": 18, "title": "The Handmaid's Tale", "description": "In a dystopian future, a woman is forced to live as a concubine under a fundamentalist theocratic dictatorship.", "genre": "Dystopian Fiction"}
{"id": 19, "title": "Snow Crash", "description": "A pizza delivery driver and hacker investigates a dangerous computer virus that can affect human minds in both virtual and real worlds.", "genre": "Cyberpunk"}

立即开始构建,轻松将您的文档上传到 Meilisearch 云。使用 Python 及其他支持的语言,将混合搜索功能无缝集成到您的基础设施中,确保可扩展性和快速结果。

混合搜索与其他搜索类型有何比较?

混合搜索结合了两种关键方法:语义搜索和关键词搜索。然而,语义搜索是一个更广泛的术语,指代检索上下文或语义含义的方法,包括向量搜索和神经搜索。让我们探讨所有这些搜索类型之间的差异:

混合搜索向量搜索语义搜索关键词搜索神经搜索
结合密集和稀疏向量表示,以提高搜索准确性和上下文相关性。使用密集向量嵌入和ANN等算法检索语义相关结果。一个更广泛的术语,指使用密集向量获取上下文或语义输出的搜索技术。使用创建稀疏向量的技术进行精确的词汇匹配。该技术使用深度神经网络(DNN)创建密集向量并支持不同数据类型。

现在,让我们单独看看混合搜索与每种其他搜索方法的区别。

混合搜索和向量搜索有什么区别?

混合搜索通过结合关键词匹配来提高向量搜索的准确性。作为语义搜索的一种形式,向量搜索依赖于嵌入器生成密集向量,并依赖 ANN 和 KNN 等检索算法识别相关结果。通过将这些与稀疏向量输出合并,混合搜索使用 RRF 等技术优化检索。

语义搜索和混合搜索有什么区别?

混合搜索是语义搜索和关键词搜索的结合。混合搜索系统响应的质量高度取决于用于语义搜索的嵌入器。嵌入器和应用于密集向量的检索算法越好,混合搜索的语义或上下文响应就越好。此外,混合搜索还使用关键词匹配来实现词汇准确性。

关键词搜索和混合搜索有什么区别?

混合搜索利用关键词搜索来提供精确的词汇结果。关键词搜索依赖算法从查询和文档生成稀疏向量,从而实现快速准确的检索。然而,它缺乏语义理解,因此混合搜索集成了语义搜索技术以增强搜索相关性和上下文。

混合搜索和神经搜索有什么区别?

神经搜索是语义搜索的一种,可以集成到混合搜索系统中。它利用深度神经网络(DNN)提供高度上下文相关的结果,并支持各种数据输入类型。在混合设置中,当用户输入精确词语时,神经搜索通过词汇匹配来提高错别字容忍度,同时保持准确性。

混合搜索为您带来两全其美的体验

混合搜索提供了卓越的准确性和上下文相关性,但其实施可能很复杂。它涉及选择正确的向量数据库、选择最佳嵌入模型以及微调密集和稀疏向量的输出。

Meilisearch 通过提供一个直观的平台和富有洞察力的教程简化了这一过程。在此平台上,您可以轻松上传数据集、试验嵌入、微调语义相关性,并访问分析和货币化等高级指标。

轻松开始实施混合搜索

凭借跨多种编程语言的无缝 API 和 SDK 集成,Meilisearch 让您能够轻松测试产品并迅速部署混合搜索系统。

How to build a search engine in PHP: Step-by-step guide

如何在 PHP 中构建搜索引擎:分步指南

通过这份可操作的分步教程,了解如何在 PHP 中轻松构建搜索引擎。

Ilia Markov
Ilia Markov2025年6月5日
Building a JavaScript Search Engine: Tutorial, Examples & More

构建 JavaScript 搜索引擎:教程、示例及更多

通过这份可操作的分步教程,了解如何在 JavaScript 中轻松构建搜索引擎。

Ilia Markov
Ilia Markov2025年6月3日
How to Make a Search Engine in Python: Step-by-Step Tutorial

如何用 Python 制作搜索引擎:分步教程

通过这份详细的分步教程,了解如何轻松用 Python 制作搜索引擎。

Ilia Markov
Ilia Markov2025年5月29日