第 04 章:RAG 进阶:重排序与混合检索

第 04 章:RAG 进阶:重排序与混合检索

核心观点:RAG 系统的”最后一公里”决定成败。向量检索负责”广撒网”(Recall),而重排序(Rerank)负责”精挑选”(Precision)。

1. 引言:大海捞针的漏斗

上一章我们建立了向量索引。但你很快会发现一个问题:
用户搜:”谁是马斯克?”
向量检索可能召回:”马斯克的火箭”、”马斯克的汽车”、”马斯克的前女友”。
虽然都相关,但第一条可能并不是用户最想要的精确定义
为了解决这个问题,我们需要一个漏斗系统:先用低成本的方法捞出一大堆,再用高成本的方法精细排序。

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 流程设计

  1. Recall (召回):使用向量 + BM25,从 100万 文档中快速找出 Top 100。
  2. Rerank (精排):使用 Cross-Encoder,对这 100 个文档进行精细打分,选出 Top 5。
  3. 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%)。
    • 漏斗思维:召回要广,排序要准。
  • 下章预告
    资料都准备好了,怎么让大模型输出高质量的答案?仅仅是”把资料塞进去”是不够的。下一章《提示词工程进阶:上下文与结构化》,我们将学习如何用自然语言给模型”编程”。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×