核心观点:RAG 系统的”最后一公里”决定成败。向量检索负责”广撒网”(Recall),而重排序(Rerank)负责”精挑选”(Precision)。
1. 引言:大海捞针的漏斗
上一章我们建立了向量索引。但你很快会发现一个问题:
用户搜:”谁是马斯克?”
向量检索可能召回:”马斯克的火箭”、”马斯克的汽车”、”马斯克的前女友”。
虽然都相关,但第一条可能并不是用户最想要的精确定义。
为了解决这个问题,我们需要一个漏斗系统:先用低成本的方法捞出一大堆,再用高成本的方法精细排序。
2. 核心概念:混合检索 (Hybrid Search)
2.1 为什么只有向量是不够的?
向量检索(Dense Retrieval)擅长语义理解,但对精确匹配(Keywords)很弱。
比如搜索产品型号 “Iphone 15 Pro Max 512G”,向量可能会找来 “Samsung Galaxy S24”(因为它们语义上都是旗舰手机)。但用户就是要搜那个特定型号!
混合检索 = 向量检索 (语义) + 关键词检索 (精准)
💡 比喻:警察抓嫌疑人。
- 向量检索:画影图形。找”长得像这个人”的,可能抓回来一堆像的。
- 关键词检索 (BM25):查身份证号。精准匹配,但如果罪犯换了名字就查不到了。
- 混合检索:既看长相,又查身份证,双管齐下。
3. 技术解析:重排序 (Rerank)
3.1 Bi-Encoder vs Cross-Encoder
- Bi-Encoder (双塔模型):Embedding 使用的架构。查询和文档分别计算向量,然后算余弦相似度。速度快,但精度一般,因为查询和文档没有”深度交互”。
- Cross-Encoder (交叉编码器):Rerank 使用的架构。把查询和文档拼在一起扔进模型:”请给这对文本的相关性打分”。
- 精度极高,但速度慢。
3.2 流程设计
- Recall (召回):使用向量 + BM25,从 100万 文档中快速找出 Top 100。
- Rerank (精排):使用 Cross-Encoder,对这 100 个文档进行精细打分,选出 Top 5。
- Generation (生成):把 Top 5 喂给 LLM。

4. 工业实战:模型与策略
4.1 Rerank 模型推荐
| 模型 | 厂商 | 优势 | 劣势 |
|---|---|---|---|
| bge-reranker-v2-m3 | BAAI | 多语言支持好,性能强悍,支持长上下文。 | 模型较大,推理延时较高 |
| bge-reranker-base | BAAI | 速度与精度的平衡点。 | 精度略逊于 large 版本 |
| Cohere Rerank v3 | Cohere (商业API) | 可能是目前地表最强 Rerank,且支持微调。 | 闭源,要花钱,数据隐私问题 |
4.2 GraphRAG:最新的黑科技
传统的 RAG 是把文档切碎了。如果不把文档切碎,而是提取出实体 (Entity) 和 关系 (Relationship) 建成知识图谱呢?
GraphRAG (微软提出) 解决了”全库归纳”的问题。
比如问:”这几份财报中,哪些公司涉及到新能源业务?”
传统 RAG 只能搜到片段,GraphRAG 可以顺着图谱找到所有关联公司。
工程师建议:
起步阶段不要碰 GraphRAG,太复杂且费 Token。先做好 混合检索 + Rerank,这能解决 90% 的问题。
5. 总结与预告
- 本章总结:
- 不要单腿走路:混合检索(Vector + Keyword)是标配。
- Rerank 是提升 RAG 准确率最立竿见影的手段(通常能提 10-20%)。
- 漏斗思维:召回要广,排序要准。
- 下章预告:
资料都准备好了,怎么让大模型输出高质量的答案?仅仅是”把资料塞进去”是不够的。下一章《提示词工程进阶:上下文与结构化》,我们将学习如何用自然语言给模型”编程”。

