Skip to main content

多路召回

Y-aong...About 4 minRAG多路召回

多路召回

多路召回+重排序”是RAG检索层的核心优化策略,本质是“多渠道获取检索结果,再通过模型筛选最优结果”,解决单一召回通道的局限性;多路召回指通过多个不同的召回通道(向量、关键词、知识图谱),分别获取与用户查询相关的结果;重排序指将多个通道的结果合并,通过模型对结果进行打分排序,筛选出最贴合用户需求的TopN结果,作为大模型的输入。

一、为什么需要多路召回

单一召回通道存在明显缺陷:

  • 向量召回擅长语义匹配,但对专业术语、关键词的精准匹配不足;
  • 关键词召回擅长精准匹配专业术语,但无法捕捉语义相似性;
  • 知识图谱召回擅长实体关联检索,但对非结构化文本的适配性弱。

若仅用单一通道,会导致检索召回率低、结果不精准;重排序能整合多通道优势,过滤无关结果,提升检索精度,为大模型生成提供高质量上下文。

二、召回通道设计

  1. 向量召回通道(核心通道):
    实现逻辑:基于微调后的Embedding模型(如BGE),将用户查询转换为向量,在向量数据库(Milvus/Faiss)中检索相似文本片段,获取Top20结果;适配场景:非结构化文本、语义相似性查询(如“如何优化RAG检索精度”);

  2. 关键词召回通道(补充通道):

    • 稀疏向量(Sparse Vector / Keyword)召回:使用如 BM25 等传统信息检索算法,通过关键词匹配和词频来计算文档相关性。
    • 实现逻辑:基于Elasticsearch,对文档进行关键词索引,提取用户查询中的核心关键词(如专业术语、核心名词),进行精准匹配,获取Top10结果;
  3. 知识图谱召回通道(增强通道):

  • 基于Neo4j知识图谱,提取用户查询中的核心实体,检索与该实体相关的知识三元组(实体-关系-实体)再关联对应的文档片段,获取Top10结果;

  • 适配场景:实体关联查询、多知识点关联查询(如“半导体芯片与测试方法的关联”);

三、结果融合逻辑

  1. 去重处理:对三个通道的结果进行去重(基于文档ID+文本片段哈希),避免重复结果进入重排序环节;
  2. 初步筛选:过滤无效结果(如文本长度<50字、与查询意图不符的结果);
  3. 权重分配:为三个通道的结果分配不同权重(向量召回0.6、关键词召回0.25、知识图谱召回0.15),权重可根据实际检索效果迭代调整。

四、重排序模型的选择

模型对比与选型:

  • CrossEncoder:基于Transformer架构,通过输入“查询+文本片段”的对,计算相似度得分,精度高、适配性强,但推理速度较慢,适合中小规模结果重排序(Top50以内);
  • Reranker(如Cohere Reranker、BAAI-Reranker):轻量级重排序模型,推理速度快,精度略低于CrossEncoder,适合大规模结果重排序(Top100以内);
  • 选型策略:项目中采用“CrossEncoder为主、Reranker为辅”,小批量结果(Top50)用CrossEncoder保证精度,大批量结果(Top100)用Reranker保证速度。

用领域专属数据(如半导体文档)微调CrossEncoder模型,优化专业术语的相似度计算;

重排序特征:除了“查询-文本相似度”,额外引入“通道权重、文本相关性、实体关联度”三个特征,综合打分排序;

注意点:

  1. 召回通道的权重需根据实际检索效果迭代调整,避免某一通道权重过高导致结果偏差;
  2. 重排序模型需做领域微调,否则无法适配专业场景的语义需求;
  3. 控制各通道的召回数量,避免结果过多导致重排序延迟增加;
  4. 知识图谱召回需保证知识图谱的准确性和完整性,否则会引入错误结果。
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8