
混合搜索结合了关键词搜索和语义搜索,为用户提供了两全其美的体验,并可以控制所需上下文的深度。
这种信息检索(IR)类型在企业搜索、电子商务和知识管理系统中尤为关键,在这些系统中,有些输入需要深入的上下文理解,而另一些则需要精确的关键词匹配。
混合搜索的一个明显优势是其以较低的计算成本处理数据的能力。
这得益于词汇匹配系统,它比可能依赖大型语言模型(LLMs)、卷积神经网络(CNNs)和其他耗能模型的语义算法消耗更少的计算能力。
因此,这些系统可以进行调整以获得更高的性能,同时也是纯语义搜索系统的一种经济高效的替代方案。
然而,实施混合搜索需要战略规划。不熟悉语义加权的用户可能会觉得它令人困惑,从而导致沮丧或脱离。
在下文中,我们将深入探讨混合搜索的重要性、如何实施以及在何种情况下它是首选解决方案。
什么是混合搜索?
混合搜索系统结合了基于关键词的检索(稀疏向量方法)和语义搜索系统(密集向量嵌入)以优化精度和上下文相关性。
为了视觉化地解释混合搜索中使用的术语和技术,让我们看看下面的图解。
语义搜索依赖于密集向量,需要使用机器学习(ML)模型嵌入搜索查询和目标数据。某些方法,如神经搜索,利用深度神经网络(DNNs)生成丰富的上下文洞察力,用于嵌入、检索和排名。向量搜索是另一种语义搜索类型,它使用嵌入模型创建密集向量,使用近似最近邻(ANN)等ML算法进行信息检索,并使用余弦相似度搜索进行排名。
另一方面,关键词搜索依赖于通过算法生成的稀疏向量。例如,我们的全文搜索依赖于与数据集中每个词关联的文档向量。当输入搜索查询时,系统通过提取单个词并将其与文档的稀疏向量值进行匹配来预处理输入。然后根据关键词相关性使用递归桶评分进行排名。
密集向量
密集向量庞大,可以包含数百或数千个浮点数(数值表示)来标识单个文档。它们表示向量空间中对象的相似性,可以具有以下形状
dense_vector = [0.8, 0.4, 0.2, 0.7, 0.9, 0.1, … ]
密集向量通常是多维的,并且没有零值,因为它们是连续创建的,以捕获文档或查询的完整信息。
稀疏向量
在全文搜索中,稀疏向量以与数据集中每个单词关联的文档的形式存在。这种向量表示构成了排名和检索相关且准确结果的基础。
混合搜索结合了密集向量和稀疏向量检索的优点,以提高搜索分数。它首先从两种方法中收集匹配项,然后根据相关性对结果进行全局排序,从而优化最终输出。
在下一章中,我们将探讨混合搜索过程的每个步骤。
混合搜索如何工作?
混合搜索通过利用密集向量的语义能力和稀疏向量的精确匹配及准确性来工作。然后将从两种方法中检索到的输出进行融合,以提供更相关的搜索结果。
通过查看上面的示意图,我们可以将混合搜索工作流分为不同的步骤,允许语义搜索和关键词搜索并行操作
数据清洗与预处理
- 关键词搜索:需要强大的数据清洗(例如,Meilisearch 原生支持停用词,尽管全文搜索需要手动配置)以确保准确的词语匹配。
- 语义搜索:受益于降噪和策略性文本分割(分块)以提高文档嵌入的质量。
嵌入:密集和稀疏表示
- 语义:诸如BERT(Bidirectional Encoder Representations from Transformers)和GloVe(Global Vectors)等模型将文档转换为密集向量,捕捉细微的上下文含义。
- 关键词:某些算法使用基于频率的评分,而另一些则使用神经网络生成稀疏嵌入。
密集和稀疏向量的检索机制
- 语义检索:利用近似最近邻(ANN)和K最近邻(KNN)等算法在密集向量空间中高效搜索。
- 关键词检索:直接将查询词与文档向量进行匹配。
集成检索
- 混合搜索:最后一步是结合两种检索方法的结果,以确定最相关的结果。
混合搜索过程可以调整,以赋予某种类型的结果比另一种类型更重要的权重。如果上下文意义重于词汇匹配,系统会优先处理语义搜索的输出。否则,它会优先处理关键词匹配。此功能在 Meilisearch 的混合搜索设置中可用且易于控制。
混合搜索引擎的示例是什么?
公司已采用混合搜索引擎来提高搜索结果的准确性和相关性。最先进的混合搜索系统之一是 Google Search,它结合了多种搜索技术和算法,以提供精确且上下文相关的结果。
谷歌整合了基于关键词的搜索和机器学习模型,以解释用户查询、对网页进行排名并呈现最相关的信息。目前,他们利用Vertex AI Embedding模型生成捕获语义含义的密集向量,同时创建用于基于关键词检索的稀疏向量。
为了配置搜索结果,谷歌使用倒数排名融合(RRF)合并了语义和基于关键词的搜索输出,正如其官方笔记本中详细说明的那样。
截至2025年1月,谷歌搜索保持着89.79%的市场份额,继续主导搜索领域。虽然人工智能驱动的聊天机器人搜索功能已开始获得关注,但它们仍不及谷歌的准确性和实时信息检索能力。
混合搜索有哪些好处?
混合搜索比独立的关键词搜索或语义搜索方法具有多项优势。其中一些优势包括
- 提高搜索准确性和相关性:混合搜索通过结合精确匹配和语义理解提供高质量的结果。这种准确性最终能留住用户并降低跳出率。
- 改善用户体验:即使用户输入不准确的术语或模糊的关键词,系统也能提供有意义的内容。这种检索信息的便捷性使设计师能够创建引人入胜的搜索元素。只需问问CarbonGraph就知道了:“我们从 Pinecone 迁移到 Meilisearch,以整合我们的搜索服务 […] OpenAI 嵌入器的设置非常简单,我们喜欢它能自动使用搜索文档内容创建嵌入。”
- 经济高效的实施:混合搜索中的词汇匹配相比纯语义搜索引擎减少了内存使用。这对于降低与存储和计算需求相关的云成本至关重要,尤其是因为关键词搜索算法不依赖 GPU。
- 提高搜索速度:Opinly 是一家允许您监控竞争对手网站的公司,它采用了混合搜索技术来提高其搜索结果的质量和上下文准确性。
- 个性化和适应性:混合搜索系统可以配置为动态调整关键词和语义相关性的权重,或者允许用户控制它们。 NFSA 收藏在他们的搜索引擎中提供了此选项,与 Meilisearch 的混合搜索非常相似。
混合搜索在各种业务领域都提供了显著的优势,包括速度、健壮性和效率。然而,它并非总是每个搜索应用程序的最佳解决方案。下一章将探讨其局限性以及何时其他方法可能更适合。
混合搜索的缺点是什么?
虽然混合搜索结合了关键词搜索和语义搜索的优点,但它也带来了可能影响实施、性能和用户体验的挑战。以下是采用混合搜索方法时需要考虑的一些主要缺点
- 实现复杂性增加:混合搜索需要集成多种搜索算法(例如,使用密集嵌入的语义搜索)。这种集成可能在技术上很复杂,并且需要深入的技术理解。
- 平衡关键词精度和上下文的难度:过度依赖某一种方法可能会削弱另一种方法的优势(例如,语义能力强于关键词精度)。如果未能实现良好平衡,这可能导致糟糕的用户体验并增加跳出率。
- 糟糕的用户体验:如果用户可以调整语义权重,界面应直观或专为熟悉术语的受众设计。否则,可能会导致混乱并增加用户流失的风险。根据这份Toptotal 报告,88% 的用户在经历糟糕的用户体验后不太可能再次访问。
尽管存在这些挑战,混合搜索在正确应用时仍然是一个强大的工具。
何时应该使用混合搜索?
混合搜索并非在所有情况下都是最佳解决方案。在数据高度结构化(例如产品库存或特定学术研究)的情况下,精确性是关键,并且必须严格区分含义相似但意义不同的术语。混合搜索在以下示例中表现出色
- 电子商务平台:亚马逊等在线零售商实施混合搜索以增强产品发现。当客户输入模糊查询时,系统会利用关键词匹配和语义分析来呈现相关产品。您可以在下面看到它的实际应用;用户搜索“能保冷的水壶”,然后收到了关于保温瓶的结果。
- 企业知识库:组织通常维护大量的文档、手册和通信。混合搜索使员工能够高效地检索相关信息并提高生产力。
- 流媒体服务:Netflix 等平台利用混合搜索帮助用户查找内容,无论是通过特定标题搜索还是描述主题。
- 市场:电子商务中的混合搜索可以提高搜索准确性,处理复杂查询,并增加产品发现,从而提高销售额。
现在,让我们看看如何使用Meilisearch,将混合搜索系统无缝地引入您的项目或工作流程中。
如何实现混合搜索?
实现混合搜索需要一个向量存储解决方案。可以使用多种语言和 AI 框架进行实现,但 Python 和 Langchain 通常是高效构建的良好开端。
Meilisearch 提供的 AI 增强型混合搜索允许使用第三方嵌入模型并控制输出的语义权重,从而更深入地理解用户输入。
要开始使用 Meilisearch 的混合搜索功能,您必须创建一个帐户并获得 API 密钥和云平台的访问权限。您可以免费注册并享受 14 天试用。
注册后,您可以创建新项目并使用向量存储来添加和索引文档、运行查询、监控分析等。
在设置选项卡中,您会找到一个名为“嵌入器”的选项,您可以在其中通过集成您选择的任何嵌入模型来增强您的混合搜索功能。下面是添加到嵌入器列表中的 OpenAI 嵌入模型的示例。
添加模型后,您可以直接跳转到搜索预览选项卡并控制语义权重——您正在使用混合搜索!
要将搜索引擎集成到您的工作流程中,请使用 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 Cloud 的文档集合(本例中为“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 Cloud。使用Python和其他受支持的语言,将混合搜索功能无缝集成到您的基础设施中,确保可扩展性和快速结果。
混合搜索与其他搜索类型有何不同?
混合搜索结合了两种关键方法:语义搜索和关键词搜索。然而,语义搜索是一个更广泛的术语,指检索上下文或语义意义的方法,包括向量搜索和神经搜索。让我们探讨所有这些搜索类型之间的差异
混合搜索 | 向量搜索 | 语义搜索 | 关键词搜索 | 神经搜索 |
---|---|---|---|---|
结合密集和稀疏向量表示,以提高搜索准确性和上下文相关性。 | 使用密集向量嵌入和ANN等算法来检索语义相关结果。 | 一个更广泛的术语,指利用密集向量获取上下文或语义输出的搜索技术。 | 使用生成稀疏向量以实现精确词汇匹配的技术。 | 该技术使用深度神经网络(DNNs)生成密集向量并支持不同数据类型。 |
现在,让我们单独 بررسی 混合搜索与所有其他搜索方法的区别。
混合搜索与向量搜索有什么区别?
混合搜索通过结合关键词匹配来提高准确性,从而增强了向量搜索。作为一种语义搜索形式,向量搜索依赖于嵌入器生成密集向量,并依赖于ANN和KNN等检索算法来识别相关结果。通过将这些与稀疏向量输出合并,混合搜索使用RRF等技术优化了检索。
语义搜索与混合搜索有什么区别?
混合搜索是语义搜索和关键词搜索的组合。混合搜索系统响应的质量高度取决于用于语义搜索的嵌入器。嵌入器和应用于密集向量的检索算法越好,混合搜索的语义或上下文响应就越好。此外,混合搜索使用关键词匹配以实现词汇准确性。
关键词搜索与混合搜索有什么区别?
混合搜索利用关键词搜索来提供精确的词汇结果。关键词搜索依赖于算法从查询和文档中生成稀疏向量,从而实现快速准确的检索。然而,它缺乏语义理解,因此混合搜索集成了语义搜索技术,以提高搜索相关性和上下文。
混合搜索与神经搜索有什么区别?
神经搜索,一种语义搜索类型,可以集成到混合搜索系统中。它利用深度神经网络(DNNs)提供高度上下文相关的结果,并支持各种数据输入类型。在混合设置中,当用户输入精确术语时,神经搜索在保持词汇匹配准确性的同时增强了容错性。
混合搜索为您带来两全其美的体验
混合搜索提供了卓越的准确性和上下文相关性,但其实施可能很复杂。它涉及选择正确的向量数据库,选择最佳的嵌入模型,以及微调密集和稀疏向量的输出。
Meilisearch 通过提供直观的平台和富有洞察力的教程简化了这一过程。在此平台上,您可以轻松上传数据集、试验嵌入、微调语义相关性,并访问高级指标,如分析和货币化。