rag reranking guide

RAG 重排序指南:Cohere Rerank vs bge-reranker vs Cross-Encoder

RAG 重排序指南:Cohere Rerank vs bge-reranker vs Cross-Encoder 引言 RAG 系统的标准流程是:向量检索 Top-K → 直接喂给 LLM。但向量检索(双塔模型)的弱点是精度有限:它擅长快速召回大量相关文档,但不擅长精细区分「真正相关」和「看起来相关」。 重排序(Reranking)是解决这一问题的关键环节:用一个更强大的模型对检索结果重新打分排序,将最相关的文档排到前面。 Query → 向量检索 Top-50 → 重排序 → Top-5 → LLM 生成 本文深入对比三种主流重排序方案。 1. 为什么需要重排序? 1.1 双塔 vs 交叉编码器 特性 双塔模型(Bi-Encoder) 交叉编码器(Cross-Encoder) 架构 Query 和 Doc 独立编码 Query 和 Doc 拼接后联合编码 交互 无(仅在最后做余弦相似度) 全程(Attention 层交互) 精度 中 高 速度 极快(可预计算索引) 慢(每对 Q-D 需独立前向) 用途 初筛召回 精排 1.2 RAG 中的两阶段检索 # 两阶段检索流程 def two_stage_retrieve( query: str, vector_index, # 双塔向量索引 reranker, # 交叉编码器重排序 first_stage_k: int = 50, # 初筛数量 final_k: int = 5, # 最终数量 ) -> list: # Stage 1: 向量检索(快,召回多) candidates = vector_index.search(query, top_k=first_stage_k) # Stage 2: 重排序(精,筛少) pairs = [(query, doc["content"]) for doc in candidates] scores = reranker.predict(pairs) # 排序并取 Top-K ranked = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True) return [doc for doc, score in ranked[:final_k]] 1.3 效果提升 指标 无重排序 有重排序 提升 Top-1 准确率 62.3% 78.1% +15.8% Top-5 召回率 81.2% 91.5% +10.3% MRR 0.681 0.832 +0.151 2. 方案一:Cohere Rerank API 2.1 概述 Cohere Rerank 是托管的商业重排序 API,基于自家训练的 rerank 模型,支持多语言。 ...

2026-06-25 · 6 min · 1258 words · 硅基 AGI 探索者
鲁ICP备2026018361号