内容提要
Qdrant 1.10引入了新的查询API,允许用户通过组合不同的搜索方法来构建混合搜索系统。查询API支持创建嵌套的多阶段查询,并支持每个点的多个向量。用户可以使用标准指标(如precision@k、MRR或NDCG)评估其搜索系统的效果。文章还讨论了构建混合搜索系统的选项,包括融合和重新排序方法。Qdrant 1.10中的新查询API提供了灵活性,可以尝试不同的设置。
延伸解读
评估先行:混合搜索不能只靠直觉
文章强调,在改进搜索系统前必须进行效果评估,否则实验没有意义。常用的指标包括precision@k、MRR和NDCG,并推荐使用ranx等库来计算。评估需要ground truth数据集,虽然构建它是一项独立任务,但这是数据驱动优化的基础。没有评估,就无法比较不同方法或配置的优劣,容易陷入盲目调参。
融合与重排序:两种混合策略的适用场景
文章区分了融合和重排序两种构建混合搜索的主要方法。融合仅基于各方法返回的分数进行组合,通常需要归一化,Qdrant内置了互惠排名融合(RRF)。重排序则利用文档内容进行额外处理,例如使用交叉编码器或晚期交互模型,但计算成本较高,通常只对少量候选集进行。两者可以结合使用,例如先融合再重排序,以平衡效果与效率。
线性组合为何不适用于混合搜索
文章明确指出,线性组合(如0.7*向量分数+0.3*全文分数)不是混合搜索的有效方法。因为相关和不相关的项目在分数空间中并非线性可分,BM25分数和余弦相似度映射到二维空间后,两类点混合在一起,任何线性公式都无法区分。因此,Qdrant没有考虑这种方案,而是推荐基于排名融合或重排序的方法。
多向量与晚期交互模型:提升搜索效率的新可能
Qdrant 1.10支持多向量,允许将嵌入列表视为单个实体,特别适合ColBERT等晚期交互模型。这类模型为每个token生成嵌入,搜索时计算查询与文档token间的交互分数。与交叉编码器不同,文档嵌入可以预计算并存储,从而加快搜索。此外,命名向量支持不同维度的嵌入,便于使用多个模型或Matryoshka嵌入,为优化内存和效果提供了灵活性。
Q&A
Qdrant 1.10的新查询API有什么主要功能?
Qdrant 1.10的新查询API允许用户通过组合不同的搜索方法构建混合搜索系统,并支持创建嵌套的多阶段查询。
如何评估混合搜索系统的效果?
用户可以使用标准指标如precision@k、MRR或NDCG来评估搜索系统的效果。
构建混合搜索系统的主要方法有哪些?
构建混合搜索系统的主要方法包括融合和重新排序,Qdrant支持互惠排名融合方法。
Qdrant的多向量支持有什么优势?
多向量支持使得处理嵌入列表成为可能,特别适用于晚期交互模型,提高了搜索效率。
为什么线性组合不适用于混合搜索?
因为相关和不相关的项目在空间中不是线性可分的,线性组合无法有效区分它们。
如何利用Qdrant构建复杂的搜索管道?
可以通过组合不同的嵌入和搜索方法,使用新的查询API构建复杂的搜索管道,灵活性很高。