RAG 企业级进阶实战架构
混合检索与召回调优
向量检索的局限性
我们已经知道,向量检索(Vector Search)擅长理解查询的“语义”或“含义”。如果你搜索“能飞的宠物”,它能聪明地返回“鹦鹉”或“金刚鹦鹉”的结果,即使你的查询中并未包含这些词。这在需要理解上下文和概念的场景中非常强大。
然而,单纯的向量检索也有其弱点。当用户查询包含特定的、必须精确匹配的关键词时,比如产品型号(“iPhone 15 Pro”)、专有名词(“广达香肉酱”)或代码错误信息(TypeError: 'NoneType' object is not iterable),向量检索就可能力不从心了。它可能会返回语义上相关但并非精确匹配的结果,例如返回“iPhone 15”或功能相似的安卓手机,这显然不是用户想要的。
向量检索关注“意思”,而关键词检索关注“字眼”。当“字眼”本身至关重要时,我们就需要一种更直接的匹配方法。
混合检索:两全其美
为了解决这个问题,我们引入了混合检索(Hybrid Search)。这种方法并非用一种技术取代另一种,而是将两者的优点结合起来。它同时运行两种搜索:
- 关键词检索(Keyword Search):通常使用像 BM25 这样的经典算法。它擅长查找包含确切词语或短语的文档。你可以把它看作是传统的搜索引擎,对特定术语的匹配非常精确。
- 向量检索(Vector Search):利用嵌入(embeddings)来捕捉查询的语义含义,找到概念上相似的内容。
通过并行执行这两种检索,我们能同时捕捉到查询的字面意图和深层含义。
融合与排序
得到两份独立的排名列表后,下一个关键步骤是如何将它们智能地合并成一个统一、更相关的结果列表。这个过程称为“结果融合”(Results Fusion)。有两种常用方法:倒数排名融合和加权评分。
倒数排名融合(Reciprocal Rank Fusion, RRF)
RRF 是一种简单而高效的无参数融合算法。它的核心思想是:一个文档在多个检索结果列表中的排名越靠前,其最终得分就越高。与具体的相似度分数不同,RRF 只关心文档的“位次”(rank)。这种方法可以有效地平衡不同来源的检索结果,而无需进行复杂的归一化处理。
加权评分
另一种方法是为每个检索系统的得分分配一个权重。例如,你可以给向量检索的得分分配一个权重 ,给 BM25 的得分分配权重 。然后将加权后的分数相加,得到最终的混合分数。
这种方法的优势在于它的可控性。通过调整 的值,你可以精确控制语义匹配和关键词匹配在最终排名中的相对重要性。
选择哪种融合策略取决于具体的应用场景。RRF 无需调参,普适性强。而加权法则提供了更精细的控制,但需要根据实际数据进行调优以找到最佳的 值。例如,在电商搜索场景中,用户经常搜索精确的型号,此时可以将 调低,赋予关键词匹配更高的权重。而在知识库问答中,理解用户的意图更为重要,这时可以将 调高。
领域适配与召回优化
为了进一步提升混合检索的效果,特别是向量检索部分的质量,我们可以对嵌入模型(Embedding Model)进行微调(Fine-tuning)。
通用的嵌入模型是在海量的互联网文本上训练的,它们对通用语言的理解能力很强。但对于特定领域,如法律、医疗或金融,这些模型可能无法很好地捕捉专业术语的细微差别。例如,“流动性”在金融领域和在物理学中的含义就截然不同。
通过在你自己的专业数据集上对嵌入模型进行微调,可以使其更好地理解你所在领域的专业词汇和上下文关系。这会直接提升向量检索的召回质量,从而为混合检索系统提供更相关的候选文档,最终生成更精准的答案。
混合检索结合了 BM25 关键词搜索的精确匹配能力和密集嵌入的语义理解能力,从而在各种查询类型上都能提供卓越的性能。
最终,一个强大的 RAG 系统的核心在于其检索组件的质量。混合检索通过结合不同检索策略的优势,并针对特定领域进行优化,为大型语言模型提供了更准确、更丰富的上下文信息,是构建企业级智能应用的关键一步。
在以下哪种搜索场景中,单纯的向量检索(Vector Search)最可能表现不佳?
混合检索(Hybrid Search)通过结合关键词检索和向量检索的优点来提升搜索质量。