多路召回
...About 4 min
多路召回
“多路召回+重排序”是RAG检索层的核心优化策略,本质是“多渠道获取检索结果,再通过模型筛选最优结果”,解决单一召回通道的局限性;多路召回指通过多个不同的召回通道(向量、关键词、知识图谱),分别获取与用户查询相关的结果;重排序指将多个通道的结果合并,通过模型对结果进行打分排序,筛选出最贴合用户需求的TopN结果,作为大模型的输入。
一、为什么需要多路召回
单一召回通道存在明显缺陷:
- 向量召回擅长语义匹配,但对专业术语、关键词的精准匹配不足;
- 关键词召回擅长精准匹配专业术语,但无法捕捉语义相似性;
- 知识图谱召回擅长实体关联检索,但对非结构化文本的适配性弱。
若仅用单一通道,会导致检索召回率低、结果不精准;重排序能整合多通道优势,过滤无关结果,提升检索精度,为大模型生成提供高质量上下文。
二、召回通道设计
向量召回通道(核心通道):
实现逻辑:基于微调后的Embedding模型(如BGE),将用户查询转换为向量,在向量数据库(Milvus/Faiss)中检索相似文本片段,获取Top20结果;适配场景:非结构化文本、语义相似性查询(如“如何优化RAG检索精度”);关键词召回通道(补充通道):
- 稀疏向量(Sparse Vector / Keyword)召回:使用如 BM25 等传统信息检索算法,通过关键词匹配和词频来计算文档相关性。
- 实现逻辑:基于Elasticsearch,对文档进行关键词索引,提取用户查询中的核心关键词(如专业术语、核心名词),进行精准匹配,获取Top10结果;
知识图谱召回通道(增强通道):
基于Neo4j知识图谱,提取用户查询中的核心实体,检索与该实体相关的知识三元组(实体-关系-实体)再关联对应的文档片段,获取Top10结果;
适配场景:实体关联查询、多知识点关联查询(如“半导体芯片与测试方法的关联”);
三、结果融合逻辑
- 去重处理:对三个通道的结果进行去重(基于文档ID+文本片段哈希),避免重复结果进入重排序环节;
- 初步筛选:过滤无效结果(如文本长度<50字、与查询意图不符的结果);
- 权重分配:为三个通道的结果分配不同权重(向量召回0.6、关键词召回0.25、知识图谱召回0.15),权重可根据实际检索效果迭代调整。
四、重排序模型的选择
模型对比与选型:
- CrossEncoder:基于Transformer架构,通过输入“查询+文本片段”的对,计算相似度得分,精度高、适配性强,但推理速度较慢,适合中小规模结果重排序(Top50以内);
- Reranker(如Cohere Reranker、BAAI-Reranker):轻量级重排序模型,推理速度快,精度略低于CrossEncoder,适合大规模结果重排序(Top100以内);
- 选型策略:项目中采用“CrossEncoder为主、Reranker为辅”,小批量结果(Top50)用CrossEncoder保证精度,大批量结果(Top100)用Reranker保证速度。
用领域专属数据(如半导体文档)微调CrossEncoder模型,优化专业术语的相似度计算;
重排序特征:除了“查询-文本相似度”,额外引入“通道权重、文本相关性、实体关联度”三个特征,综合打分排序;
注意点:
- 召回通道的权重需根据实际检索效果迭代调整,避免某一通道权重过高导致结果偏差;
- 重排序模型需做领域微调,否则无法适配专业场景的语义需求;
- 控制各通道的召回数量,避免结果过多导致重排序延迟增加;
- 知识图谱召回需保证知识图谱的准确性和完整性,否则会引入错误结果。
Powered by Waline v2.15.8