Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語
Sign In
Free Sign Up
  • English
  • Español
  • 简体中文
  • Deutsch
  • 日本語

掌握MyScale中的混合检索:全面指南

混合检索是一种强大的技术,它整合了多种搜索算法,提高了搜索结果的准确性和相关性。混合检索结合了全文搜索和向量搜索的优势,为用户提供更有效和全面的搜索体验。

MyScaleDB 在 1.6.2 版本中,引入了混合检索 (opens new window)功能。本文将探讨它的实现原理,以及它在搜索领域带来的创新。

# 向量搜索与全文搜索的融合

在向量数据库中的混合检索系统中,通常使用两种不同类型的搜索方法:向量搜索 (opens new window)全文搜索 (opens new window)

  • 向量搜索: 基于语义相似性找到结果,通常利用机器学习模型来理解单词和短语的含义及上下文。这种方法擅长捕捉文档之间的微妙关联和概念相关性。
  • 全文搜索: 直接匹配文本中的关键词或短语。当查询的确切措辞至关重要时,这种方法更传统且高效。

这两种搜索方式各有优缺点。全文搜索在基本关键词检索和文本匹配方面表现出色,适用于关键术语非常重要的查询。而向量搜索在跨文档的语义匹配和深层含义理解方面更出色,但在处理短文本查询时效率可能较低。

混合检索结合了这两种搜索能力,实现了"两全其美"。它利用语义分析捕捉更广泛的上下文相关性,同时又保持了精确的关键词匹配,从而提供更全面和有效的搜索体验。

# 融合算法的实现

每种搜索方法(向量和全文)都会产生一组结果,每个结果都附带一个相关性分数。这些分数反映了特定方法所使用的搜索查询与特定结果的匹配程度。

融合算法有效地合并这些结果。它会调整和归一化向量和全文搜索的分数,使它们可比较,并实现无缝的组合。这个过程确保向用户呈现的最终结果集合了两种搜索方法的优势,提供既具有语义相关性又具有文本准确性的结果。

在MyScaleDB中,混合检索利用了文本搜索的BM25分数(称为“lex”表示词法)和向量搜索的距离度量(称为“sem”表示语义)。为了实现这种整合,MyScaleDB目前支持两种融合算法:相对分数融合(RSF)和倒数排序融合(RRF)。

# 相对分数融合(RSF)

相对分数融合(RSF)是混合检索系统中一种有效地组合向量和全文搜索结果的方法。该过程包括两个关键步骤:分数归一化和加权求和计算。

分数归一化:

  • 归一化: RSF首先对向量和全文搜索的分数进行归一化。将原始分数转换到 0-1 范围内的统一尺度上。
  • 最高和最低分数: 每种搜索类型(向量和文本)中的最高分数被缩放为1,表示该搜索中最相关的结果。相反,最低分数被缩放为0,表示最不相关的结果。
  • 比例调整: 所有其他分数在最高和最低分数之间的相对位置基础上,在0-1范围内按比例调整。

加权求和:

  • 权重分配: 在归一化之后,每个分数都乘以特定权重,反映了对该特定搜索类型(向量或全文)的重要性。
  • 最终分数计算: 每个结果的最终分数是通过对这些加权、归一化的分数求和得出的,从而实现了综合平衡的排名,整合了两种搜索方法的优势。

所使用的归一化公式为:

RSF的目的是创建一个统一的排名,将向量搜索的语义相关性和全文搜索的文本准确性整合在一起。通过归一化分数并加上适当的权重,RSF确保最终的结果是平衡的,结合了两种搜索方法的优势,为用户提供更全面和准确的结果。

# 倒数排序融合(RRF)

倒数排序融合(RRF)是混合检索系统中的另一种方法,用于合并来自不同搜索方法(如向量和全文搜索)的结果。与RSF不同,RRF不需要分数归一化,而是根据每个结果在各自结果集中的位置进行排名。在以下公式,其中k是调整低排名结果重要性的任意常数。

RRF 的主要优点是简单高效。通过绕过分数归一化的需求,RRF直接关注排名位置,使得合并来自不同搜索方法的结果更加容易,特别适用于搜索方法的评分尺度不可直接比较的情况。

Boost Your AI App Efficiency now
Sign up for free to benefit from 150+ QPS with 5,000,000 vectors
Free Trial
Explore our product

# 如何在MyScaleDB中执行混合检索

让我们通过一个示例来演示如何在MyScale中执行混合检索。下面显示的SQL查询基于预先导入到MyScale集群中的维基百科数据集。

首先,在'text'列上创建一个全文搜索(FTS索引 (opens new window)),并在'vector'列上使用 cosine distance 创建一个MSTG向量索引。

CREATE TABLE wiki_abstract
(
    `id` UInt64,
    `body` String,
    `title` String,
    `url` String,
    `body_vector` Array(Float32),
    VECTOR INDEX body_vec_idx body_vector TYPE MSTG('metric_type=Cosine'),
    INDEX body_idx body TYPE fts('{"body":{"tokenizer":{"type":"stem", "stop_word_filters":["english"]}}}') GRANULARITY 1,
    CONSTRAINT check_length CHECK length(body_vector) = 1024
) ENGINE = MergeTree ORDER BY id;

在这个SQL CREATE TABLE语句中,我们为BM25全文搜索定义了一个FTS索引,并为从文本列转换而来的高维数据上的余弦相似度搜索定义了一个向量索引。

接下来,我们可以执行一个利用文本和向量列的混合检索:

SELECT id, body, HybridSearch('fusion_type=RSF', 'fusion_weight=0.4')(body_vector, body, 
    HuggingFaceEmbedText('Who won the Polar Medal'), 'Who won the Polar Medal') AS score
FROM wiki_abstract
ORDER BY score DESC
LIMIT 5;

这个混合检索查询首先在body_vector列上执行向量搜索distance()函数,找到与查询向量最相似的对象。同时,使用TextSearch()函数在body列上进行全文搜索,根据查询词的频率对结果进行排名。然后,使用所选的融合算法(在本例中为RSF),返回前几个候选结果。

混合检索结果

在这个示例中,我们为全文搜索加了0.4的权重,为向量搜索加了0.6的权重。还可以调整这些权重以进行实验,并找到适合您的数据和搜索需求的最佳平衡。

# 何时使用混合检索

混合检索查询特别适用于旨在利用语义向量搜索的强大功能的搜索系统,同时也依赖于全文搜索中精确关键词匹配的准确性。与标准全文搜索或纯语义向量搜索相比,混合搜索可以提供更准确和相关的结果。

例如,对于查询"Who won the Polar Medal",

  • 向量搜索的前5个结果中包含3个正确答案:

向量搜索结果

  • 全文搜索的前5个结果中包含2个正确答案:

全文搜索结果

  • 如前一节所示,混合检索的前5个结果中包含4个正确答案。

通过结合向量和全文搜索,混合检索显著提高了搜索的准确性,提供了更高的搜索精度和更相关的结果。

Join Our Newsletter

# 结论

混合检索的重要性在于它通过将关键词搜索的直接性与语义搜索的上下文深度相结合,提高了搜索结果的准确性和相关性。这种双重方法确保用户不仅获得精确匹配,还获得上下文相关的结果,即使使用了不同的术语。混合检索在处理多样化的查询方面也表现出色,提供与用户意图一致的全面和适应性结果。其优化性能和适应各种应用的能力使其成为现代信息检索中的关键技术。

如果您对如何在MyScale中使用混合检索有任何问题,欢迎查阅MyScale文档 (opens new window)或加入我们的Discord (opens new window)寻求帮助。

Keep Reading
images
通过向量搜索在高级RAG中革命性地改进数据检索

在这系列关于高级RAG管道的文章中,我们讨论了嵌入模型、索引方法和分块技术等其他组件如何构建高效系统的基础。现在,让我们探讨这个管道中一个非常重要的部分:向量搜索。 数据库的核心能力在于其搜索性能。从网页搜索到物体识别,应用场景数不胜数,因此,搜索的效率、多功能性和准确性至关重要。稍慢或不准确(或有限)的搜索可能是客户是否满意以及是否会再次光临的关键,而商家对此深知。 向量搜索在现代检 ...

images
解锁图像搜索的力量:深入嵌入方法

虽然文本搜索非常常见,但在某些情况下,我们需要使用图片作为搜索查询来搜索图片——比如寻找相似的照片或通过图片识别产品。这种方法被称为[基于图片的搜索](https://myscale.com ...

images
MyScale vs. Zilliz:成本效益之战

向量数据库和向量搜索由于其速度和可扩展性而迅速受到欢迎。与需要大量训练的传统机器学习模型不同,向量搜索可以使用基本的相似度度量(如欧氏距离和余弦相似度)在向量数据库中快速执行。这使得它们在可扩展性和成本效益方面比基于机器学习的模型更具优势。 随着向量数据库的使用不断增长,自然而然地会寻求基于特定需求的最适合的数据库,考虑吞吐量和成本等各种因素。为了帮助用户做出明智的决策,我们推出了一系列文章,详 ...

Start building your Al projects with MyScale today

Free Trial
Contact Us