1. Rerank在RAG中的核心价值
当我们在RAG(检索增强生成)系统中输入一个问题时,第一阶段检索通常会返回数十甚至上百个相关文档片段。但并非所有结果都与问题真正相关——有些可能只是包含相同关键词却语义无关,有些则可能相关性较低。这就是Rerank(重排序)技术要解决的核心问题:对初步检索结果进行精细化排序,让最相关的文档优先传递给生成模型。
我曾在实际项目中遇到过这样的案例:用户查询"如何用Python处理PDF中的表格数据",第一阶段检索返回的结果中,排名靠前的反而是介绍PDF基础操作的文档,真正讲解表格提取的内容却排在第五页之后。引入Rerank后,相关文档的排序准确率提升了47%,最终答案质量显著提高。
关键认知:Rerank不是简单的二次过滤,而是通过更复杂的语义理解模型,对文档与问题的匹配度进行精细化评分。这就像从"找到所有提到关键词的文档"升级到"理解哪些文档真正回答了问题"。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Rerank技术实现全解析
2.1 基础实现流程
典型的Rerank流程包含以下关键步骤:
- 检索结果准备:获取第一阶段的检索结果(通常来自BM25/向量检索),保留top 100-200个候选文档
- 输入对构造:将用户问题与每个候选文档组合成[Q,D]对
- 模型推理:使用Rerank模型计算每个[Q,D]对的相关性分数
- 结果重排:按新分数降序排列文档,选取top 3-5个传递给生成模型
在实际部署时,我们需要注意几个关键参数:
- 候选文档数量:通常100-200个(太少影响召回,太多增加计算成本)
- 输出文档数量:3-5个(平衡信息丰富度和生成质量)
- 分数阈值:可设置最低分过滤低质量结果(如<0.3的直接丢弃)
2.2 模型选型关键指标
选择Rerank模型时需要重点评估:
- 推理速度:单个[Q,D]对的预测耗时(直接影响用户体验)
- 内存占用:模型加载所需内存(关系到大并发下的服务稳定性)
- 准确度指标:
- NDCG@k:衡量top k结果的排序质量
- MAP:平均准确率
- MRR:第一个相关结果的位置倒数
根据我的实测数据,在相同硬件环境下:
- 基于BERT的模型NDCG@5可达0.82,但推理需要5
