Elasticsearch:什么是混合搜索?
混合搜索定义
Hybrid search(混合搜索)是一种强大的信息检索策略,它将两种或多种搜索技术结合到一个搜索算法中。
通常,混合搜索结合了 keyword search(关键词搜索)和 semantic search(语义搜索),并利用先进的机器学习技术。Semantic search 根据文本的含义来检索结果,而 full-text search(全文搜索)则关注精确的词语匹配。混合搜索对于对话式查询以及那种 “那个叫什么来着?” 的模糊查询非常重要,在这种情况下用户无法或不愿输入精确的关键词。
Keyword search 和 semantic search 各有优势。Keyword search 使用排序算法和特定术语来判断文档与查询的相关性,semantic search 则会结合上下文来理解查询内容。
通过结合 semantic search 和传统搜索的优势,混合搜索提升了搜索的精准度。在兼顾语义理解和精确匹配的同时,混合搜索能够提供更佳的用户搜索体验。
混合搜索的组成部分
混合搜索是关键字搜索、词汇搜索或 BM25(一个用于确定相关性的排序算法)与语义搜索的组合。语义搜索关注的是你希望通过搜索实现什么目标,而向量搜索关注的是如何实现这些结果,主要是通过使用向量表示来检索数据。
语义搜索
语义搜索专注于理解含义和上下文。这种搜索方式不再像 BM25 那样仅仅匹配关键词,而是试图理解查询词背后的意图。语义搜索弥合了人类查询和实际含义之间的差距,能够处理语言中的多样性和模糊性。它利用自然语言处理( natural language processing - NLP )、机器学习、知识图谱和向量来提供更符合用户意图的搜索结果,并融入上下文。
为了确定上下文,语义搜索可能会使用已知的用户数据、位置或历史搜索记录来判断相关结果。例如在美国搜索 “ football ”,与在世界其他地区搜索相同词语所得到的结果会有所不同。语义搜索可以根据用户的地理位置来识别其意图。
向量搜索
向量搜索是一种技术性的搜索方法,它使用数值表示或向量来表示文本、图像或音频等内容,并根据相似性来检索数据。这些向量捕捉了这些内容的潜在含义或特征。向量搜索通过衡量向量表示之间的相似性来检索数据。
结合方法
语义搜索和向量搜索有很多共同点,事实上,语义搜索是由向量搜索驱动的。
当发起查询时,搜索引擎会将查询转换为向量嵌入。一个算法,如 kNN 算法(k-nearest neighbor 算法),会将现有文档的向量与查询向量进行匹配。然后,该算法根据概念相关性生成结果。
当语义搜索和向量搜索协同工作时,平台可以处理复杂查询,包括多语言搜索和需要非结构化数据的搜索。
混合搜索如何工作
混合搜索融合了关键词搜索和向量搜索,以提供全面的搜索结果。向量嵌入将句子或照片等数据转换为数字,这些数字捕捉其含义和关系。数据会被分词、建立索引,并由数值嵌入表示。向量搜索可以捕捉非结构化数据中的含义,克服关键词搜索的局限 —— 即使用户记不清准确描述或精确关键词,也能基于含义进行搜索。混合搜索可以解析密集和稀疏向量,以返回最相关的结果。
密集向量
密集向量处理语义理解和上下文查询。它们在现代机器学习中广泛使用,尤其是在生成嵌入等任务中。
稀疏向量
稀疏向量处理传统的基于关键词的索引,信息分布较稀疏。此类向量常用于大数据集。
查询处理
混合搜索中的查询处理利用稀疏向量进行精确关键词匹配和优先排序,利用密集向量进行语义理解,捕捉上下文含义和意图。通过结合这两种向量,混合搜索提供了兼具特异性和相关性的全面搜索结果。为了生成结果,混合搜索使用 RRF( reciprocal rank fusion )将多个结果集(每个都具有不同的相关性指标)合并为一个结果集。
混合搜索的优势
混合搜索利用不同搜索方法的结合优势,相较于传统搜索,为用户带来更多好处。其主要优势是以更少的努力提供更准确的搜索结果。
在各行各业,内部和外部的搜索算法都可以使用混合搜索来呈现相关结果。例如,电商平台可以区分 “带口袋的红色连衣裙” 和 “第一次晚餐约会穿的红色连衣裙,有放钥匙和钱的空间” 这两种搜索意图。
另一个例子是在企业内部福利文件中搜索 “dogs” 时,可能会返回 “办公室宠物政策” 相关结果。虽然查询中没有出现这个具体词,但这可能是用户想要的答案。
总体而言,混合搜索因其对语言的灵活性而提升用户搜索体验。它通过平衡语义理解和精确查询词,提高搜索的精准度。因此,可以高效处理对话式和复杂查询,避免搜索死角和用户挫败感。
混合搜索与 RAG
检索增强生成(Retrieval augmented generation - RAG)是一种利用私有或专有数据源,为你的 LLM 原有知识库补充上下文的搜索技术。RAG 对查询非常有价值,因为它允许生成式 AI 系统利用外部信息源来生成更相关的回答。
结合混合搜索与 RAG —— 并引入额外的数据源 —— 能通过增加上下文,提高搜索体验的相关性。额外的信息源可以是组织或客户为回答查询所需的任何内容,从互联网的新信息到专有或机密的业务文档。
相比单独运行的语言模型,RAG 有几个优势:成本更低,计算和存储需求更少,并确保模型可以访问最新信息。
Elastic 的混合搜索
Elastic 通过开箱即用支持语义搜索,使得实现混合搜索变得简单。使用 Elastic,混合搜索可以在同一平台和同一 API 上进行,具备更快的速度和规模,同时从一开始就提供更好的相关性。
借助 Elastic 的 playground,开发者可以在低代码界面中,用自己的私有数据探索所选 LLM 的基础能力。
Elastic 通过新引入的查询检索器(query retrievers) —— 标准查询、kNN 和 RRF,帮助开发者简化查询构建。利用这些查询,Elastic 能理解所选数据并自动生成统一查询。
混合搜索资源
-
亲自动手体验 Elasticsearch AI Playground
-
如何结合全文检索和 kNN 结果
-
aNN 与 kNN:理解它们在向量搜索中的区别和作用
-
使用 Elasticsearch 和 Go 进行穴居动物猎捕的混合搜索
-
如何执行语义文本混合搜索
-
什么是 RAG?
-
什么是语义搜索?