在RAG(检索增强生成)系统中,检索质量直接决定了最终生成内容的准确性和相关性,但单一检索方法的局限性日益凸显。混合检索技术作为一种创新的解决方案,通过结合不同检索方法的优势,显著提升了检索效果,为RAG系统注入了新的活力。
本文将深入探讨混合检索技术在RAG系统中的应用,包括语义检索与关键词检索的优缺点、BM25与向量检索的结合方式、混合检索的权重调整策略、稀疏-密集混合检索架构,以及混合检索在不同场景下的适用性。
语义检索,也称为密集检索或向量检索,是基于深度学习模型将文本转换为高维向量,然后通过计算向量间的相似度来找到语义相关的内容。
优点:
缺点:
关键词检索,也称为稀疏检索,主要基于TF-IDF、BM25等算法,通过匹配查询和文档中的关键词来确定相关性。
优点:
缺点:
语义检索和关键词检索在本质上是互补的:
这种互补性正是混合检索技术的基础,通过结合两者的优势,可以显著提高检索的全面性和准确性。
BM25(Best Matching 25)是一种经典的关键词检索算法,而向量检索则是语义检索的主要实现方式。将这两种技术结合起来,可以创建更强大的混合检索系统。
BM25是一种基于概率的检索模型,是TF-IDF的改进版本,用于评估文档与查询的相关性。其核心公式为:
score(D, Q) = ∑(IDF(qi) · (f(qi, D) · (k1 + 1)) / (f(qi, D) + k1 · (1 - b + b · |D| / avgdl)))
其中:
BM25的优势在于它能够平衡词频、文档长度和逆文档频率,对于关键词匹配非常有效。
向量检索基于文本嵌入模型(如BERT、Sentence-BERT等),将文本转换为高维向量,然后通过计算向量间的相似度(如余弦相似度)来确定相关性。其基本流程为:
BM25与向量检索的结合主要有以下几种方式:
最直接的结合方式是分别执行BM25和向量检索,然后融合两者的结果:
这种方法的优点是实现简单,可以灵活调整两种检索方法的权重;缺点是需要维护两套索引,且融合策略可能影响最终效果。
级联检索是一种多阶段检索方法:
这种方法的优点是计算效率高,适合大规模数据集;缺点是初步筛选可能会过滤掉一些语义相关但关键词不匹配的文档。
将文档同时表示为稀疏向量(BM25)和密集向量(嵌入),然后在检索时同时考虑两种表示:
这种方法的优点是能够在单次检索中同时考虑关键词匹配和语义相关性;缺点是需要设计合适的混合相似度度量。
近期的一些向量数据库(如Milvus 2.5)引入了基于稀疏向量的BM25实现(Sparse-BM25),将BM25转化为向量操作:
这种方法的优点是统一了检索范式,可以利用向量数据库的优化;缺点是实现相对复杂,需要特定的向量数据库支持。
在混合检索系统中,如何平衡不同检索方法的贡献是关键问题。权重调整策略直接影响检索结果的质量和相关性。
最常见的权重调整策略是线性组合,即通过加权平均来融合不同检索方法的分数:
final_score = α * dense_score + (1 - α) * sparse_score
其中:
当α=1时,系统完全依赖向量检索;当α=0时,系统完全依赖BM25检索。通过调整α值,可以控制两种检索方法的相对重要性。
静态的权重参数可能无法适应不同类型的查询。动态权重调整根据查询特性自动调整权重:
动态权重调整可以通过机器学习模型实现,该模型根据查询特征预测最优的权重参数。
除了简单的线性组合,还有一些更复杂的排序融合算法:
RRF(Reciprocal Rank Fusion)是一种流行的排序融合算法,其公式为:
RRF_score(d) = ∑(1 / (k + rank_i(d)))
其中:
RRF不需要原始相似度分数,只需要排名信息,因此适用于不同检索系统的结果融合。
Borda计数是一种基于排名的投票系统:
Borda_score(d) = ∑(N - rank_i(d))
其中N是候选文档的总数。排名越高的文档获得的分数越高。
CombMNZ结合了分数和出现次数:
CombMNZ(d) = count(d) * ∑(norm_score_i(d))
其中:
学习排序是一种使用机器学习来优化排序的方法: