什么是 Rerank?
Rerank(重排序)是信息检索和 RAG 流程中的一个进阶阶段。在传统的向量检索(如余弦相似度)或关键词检索(如 BM25)快速召回大量候选文档后,Rerank 引入一个计算成本更高但理解能力更强的交叉编码器(Cross-Encoder)模型。该模型同时接收用户的查询(Query)和候选文档(Document),计算它们之间深度的语义相关性得分,并据此重新排列文档顺序,从而将最相关的片段推至最前列,供 LLM 生成最终答案。
快速了解
| 全称 | Reranking in RAG (Retrieval-Augmented Generation) |
|---|---|
| 创建时间 | 随着 2023-2024 年 RAG 技术的工程化落地,Rerank 作为解决检索痛点的核心手段被广泛采用。 |
工作原理
随着 RAG 技术的普及,开发者很快发现仅依靠向量数据库进行初步检索(初排/召回)存在局限性。向量检索通常使用双编码器(Bi-Encoder)将查询和文档分别映射到高维空间并比较距离,这种方法速度极快,适合从海量库中筛选出 Top-K,但容易忽略词序、细微语境以及复杂的逻辑关系。这导致大模型经常收到“字面上相似但逻辑无关”的垃圾上下文,引发幻觉。Rerank 模型的引入彻底改变了这一局面。它将初排选出的少数文档(如前 50 篇)与用户的查询拼接在一起输入到一个强大的评分模型(如 BGE-Reranker, Cohere Rerank)中。因为模型同时看到了问题和答案候选,它能捕捉到深度语义交互,计算出极其精确的匹配度。虽然这个过程较慢,但由于只处理少量候选者,因此在系统延迟和检索精度之间取得了完美的平衡。如今,'向量检索 + Rerank' 几乎成为了生产级 RAG 架构的标配。
主要特点
- 两阶段检索架构:通常作为初排(向量检索或 BM25)之后的第二阶段
- 交叉编码器 (Cross-Encoder):同时输入 Query 和 Document 交互计算,而非预先计算独立向量
- 计算成本较高:比普通向量检索慢,因此只能处理初排过滤后的少数候选文档
- 即插即用:大多数重排器(如 Cohere API 或本地部署的 BGE 模型)可以轻松集成到现有的 LangChain 或 LlamaIndex 流程中
- 显著提升 RAG 质量:极大提高 Top-1 到 Top-5 文档的相关性,直接减少 LLM 的幻觉生成
常见用途
- 企业级 RAG 问答系统:在海量公司文档中,确保提供给大模型的是最精准的几段规定或说明
- 电商商品搜索:在初步筛选出符合品类的商品后,根据用户搜索意图的细微差别进行精确排序
- 智能客服与工单匹配:准确理解用户复杂的报错描述,从历史知识库中重排最匹配的解决方案
- 法律与医疗文献检索:在对术语精度要求极高的领域,过滤掉表面相似但法条或病理无关的段落
- 多路召回融合:当结合了关键词检索(BM25)和向量检索的结果时,使用 Rerank 作为统一的最终裁判来排序
示例
Loading code...常见问题
为什么不直接用 Rerank 模型去搜索整个数据库?
因为计算复杂度太高。Rerank(交叉编码器)需要在查询时同时处理问题和文档的组合,无法像向量(双编码器)那样预先计算好索引并进行极速的近似最近邻搜索(ANN)。如果用它去扫描几百万篇文档,响应时间可能需要几分钟甚至几小时,所以它只能作为二次筛选的轻量级裁判。
有哪些开源的 Rerank 模型推荐?
目前业界非常流行开源模型,尤其是北京智源人工智能研究院开源的 BGE-Reranker 系列(如 bge-reranker-large),在多语言和中文上表现优异。此外,Jina AI 和 Nomic 也有非常出色的开源重排模型,可以通过 Hugging Face 或 Ollama 在本地部署。
使用了 Rerank,RAG 还需要做向量优化吗?
需要。Rerank 就像是一个精明的面试官,但前提是人力资源(初排/向量检索)能把有潜力的候选人先招进来。如果初排连包含答案的文档都没能捞进前 50 名,Rerank 也无能为力(俗称“巧妇难为无米之炊”)。所以优化 Chunking 策略和 Embedding 模型依然非常重要。