目录
前言
在检索增强生成(RAG, Retrieval-Augmented Generation)系统中,信息检索的质量直接决定了最终答案的准确性与可靠性。其中,向量模型与重排序模型扮演着两类互补的角色:一个负责“广撒网”,另一个负责“精挑细选”。本文将深入解析它们的区别、联系,以及在 RAG 流程中的协同工作方式。
一、什么是向量模型
向量模型(Vector Model)
核心作用:用来把文本(问题、文档)转换成向量,用于计算相似度。
代表方法:BERT embedding、Sentence-BERT、m3e、text-embedding-ada 等。
典型流程:
用户 query → 向量化。
文档库里的文档 → 向量化。
用相似度(余弦相似度、内积)计算 query 与文档的相关性。
取出 Top-k(比如 20 条)候选文档。
特点:
高效(向量检索能快速在大规模语料中找到候选)。
召回率高,但不一定精准。
更多是 粗排(初筛)。
👉 举例:
输入 query = “加班工资怎么算”,向量模型可能返回:
文档 A(加班工资法律条款)
文档 B(最低工资规定)
文档 C(带薪年假制度)
其中 B、C 可能相关性弱,但因为是高维语义空间的“近邻”,还是被召回了。
二、什么是重排序模型
重排序模型(Rerank Model)
核心作用:对候选文档进行 更精细的相关性判断与排序。
代表方法:BERT cross-encoder、monoT5、ColBERT(交互式)、各种 reranker。
典型流程:
向量模型取出 top-20 候选。
重排序模型逐个输入 (query, 文档) 对。
模型输出一个相关性分数。
按分数高低重新排序,取前 N 条(比如 top-5)。
特点:
计算量大(因为需要逐对计算)。
精准度高(能更好判断“语义相关” vs “语义相似但无关”)。
属于 精排(精筛)。
👉 举例:
上面 query = “加班工资怎么算” 的候选文档,重排序模型会排出:
文档 A(加班工资法律条款) ✅
文档 B(最低工资规定)
文档 C(带薪年假制度)
这样就保证用户看到的前几条是最相关的。
三、向量模型与重排序模型对比表
方面 | 向量模型(Vector Model) | 重排序模型(Rerank Model) |
---|---|---|
主要作用 | 初筛、召回候选文档 | 精排、精确排序 |
输入 | 文本 → 向量 | (query, 文档) 成对输入 |
计算方式 | 相似度(余弦、点积) | 模型预测相关性分数 |
效率 | 高,能处理海量数据 | 低,通常只在候选集上用 |
精准度 | 中等,可能召回噪声 | 高,能剔除伪相关 |
应用位置 | 检索第一步 | 检索后处理 |
一句话总结:
向量模型 是“广撒网”,帮你找潜在相关文档。
重排序模型 是“精挑细选”,帮你从候选里挑出最相关的。
向量模型:保证“不漏”。
重排序模型:保证“准确”。
四、向量模型与重排序模型在RAG中的应用流程
4.1 简化流程
用户Query
│
▼
Query向量化
│
▼
向量检索(粗排,Top-K)
│
▼
(可选)重排序(精排,Top-N)
│
▼
相关文档拼接成上下文
│
▼
LLM生成最终回答
4.2 RAG总体运行流程
1. 数据准备阶段(离线)
文档预处理:对原始资料进行清洗、切分(chunking)。
向量化存储:用 向量模型(embedding model) 将每个文档块转成向量,并存入向量数据库(如 Faiss、Milvus、Chroma)。
2. 在线问答流程
当用户提出一个问题(Query)时,RAG大致有以下步骤:
(1)Query 向量化
输入:用户问题(自然语言)。
处理:用同一个向量模型(embedding)将 query 转换成向量。
(2)向量检索(粗排)
在向量数据库里计算 query 向量与文档向量的相似度。
取出 top-K(比如 20 条)候选文档。
特点:快速,确保不漏掉相关内容,但可能有噪声。
(3)重排序(精排,可选)
使用 重排序模型(reranker,如 cross-encoder BERT/T5),逐个对 (query, 文档) 进行相关性打分。
重新排序候选文档,通常只保留 top-N(比如 3~5 条)。
特点:更精准,减少噪声。
(4)上下文拼接
把最终选出的文档内容拼接成一个“上下文窗口”。
形成提示词(Prompt):
用户问题:xxx 检索到的相关文档:doc1, doc2, doc3 ... 请基于以上文档回答。
(5)生成回答
把 Prompt 输入到大语言模型(LLM)。
LLM 利用检索到的知识生成答案。
五、应用场景
向量模型与重排序模型的组合已经在多个行业场景中落地:
5.1 法律问答系统
向量模型快速召回相关法规条款;
重排序模型确保最终结果严格对齐用户问题,避免出现相似但不适用的条款。
在法律问答中,用户可能会提出模糊问题,例如:“辞退员工需要补偿吗?”。
向量模型 会召回多类候选:劳动合同法、劳动仲裁案例、劳动补偿条款等。
重排序模型 则会精准识别出与“辞退补偿”直接相关的法律条款(如《劳动合同法》第四十七条),过滤掉不直接相关的内容。
结果:用户得到基于真实法规的回答,而不是模糊的解释。
5.2 医疗知识检索
向量检索能快速找到病症相关文档;
重排序模型帮助精准匹配症状与治疗方法,减少误导性信息。
患者提问:“糖尿病人可以吃什么水果?”。
向量模型 可能返回:糖尿病饮食指南、膳食均衡建议、不同水果的营养成分等。
重排序模型 会优先保留与“糖尿病 + 水果摄入”最直接相关的医学文献,而不是泛泛的营养知识。
结果:系统给出的答案更贴合患者需求,并避免产生误导。
5.3 金融知识库
向量模型召回各类政策、财务报告;
重排序模型确保匹配到的是用户关心的具体细节,而不是模糊的相似文本。
分析师提问:“最新的存款准备金率是多少?”。
向量模型 会检索到央行公告、历史政策解读、经济研究报告。
重排序模型 则会将“最新公告中的存款准备金率数值”排在最前,而不是泛化的背景信息。
结果:用户快速获取到最关键的数值型信息。
这些场景的共性是:既需要 覆盖广度(不漏掉关键信息),也需要 保证深度(答案足够精准),这正是向量模型与重排序模型协同的优势所在。
六、RAG检索阶段核心平衡点
在 RAG 的检索阶段,Embedding + 重排序模型的选择和组合,核心平衡点确实就是 性能(速度、算力消耗) 和 精度(检索结果的相关性、排序质量)。
具体来说:
6.1 性能
Embedding 模型:一般计算量相对小,可以快速批量生成向量,适合大规模检索。
Reranker 模型:需要对候选 (Query, 文档) 两两计算,成本远高于 embedding。
如果追求高性能,就要减少候选数量,或选用轻量级的 reranker。
6.2 精度
Embedding 粗排 → 能找到大体相关的候选,但结果里可能夹杂噪声。
Reranker 精排 → 让真正相关的内容排在前面,提高最终回答质量。
模型越大、训练越充分,精度通常越高。
6.3 平衡点
大模型 Reranker:精度好 → 适合离线处理、结果要求极高的场景。
小模型 Reranker:速度快 → 适合在线问答、用户实时交互的场景。
常见做法:Embedding(快速粗排) + 中等规模 Reranker(兼顾性能与精度)。
七、RAG 中的重排序模型推荐
7.1 中文 & 英文场景模型推荐
在中英文双语场景下,北京智源(BAAI) 出品的重排序模型表现很突出:
bge-reranker 系列(比如
BAAI/bge-reranker-large
,BAAI/bge-reranker-base
):针对中文和英文都有很好的适配能力;
在开放域问答、法律、医疗、金融等检索任务上效果稳定;
提供了不同规模的模型,方便按需权衡 精度 vs 性能。
👉 一般推荐:
在线问答:
bge-reranker-base
(更快,适合低延迟场景)离线知识库构建 / 高精度任务:
bge-reranker-large
(精度更高,适合对结果质量要求严格的应用)
7.2 LlamaIndex 中的重排序组件
在 LlamaIndex 里,可以通过不同的 Reranker 类来加载和使用这些模型:
🔹 SentenceTransformerRerank
依赖
sentence-transformers
库;可加载很多
transformers
/sentence-transformers
格式的模型;常用来快速接入 BAAI/bge-reranker-base 或 BAAI/bge-reranker-large。
使用示例:
from llama_index.postprocessor import SentenceTransformerRerank
reranker = SentenceTransformerRerank(
model="BAAI/bge-reranker-base",
top_n=5
)
🔹 FlagEmbeddingReranker
针对 HuggingFace 上的 FlagEmbedding / BGE 模型优化;
对中文和英文的效果都很好;
是推荐的加载 BAAI/bge-reranker 系列的组件。
使用示例:
from llama_index.postprocessor import FlagEmbeddingReranker
reranker = FlagEmbeddingReranker(
model="BAAI/bge-reranker-large",
top_n=5
)
7.3 小结
推荐模型:中文 & 英文 →
BAAI/bge-reranker-base/large
推荐组件(LlamaIndex):
快速接入 →
SentenceTransformerRerank
专门优化 →
FlagEmbeddingReranker
选择逻辑:
在线、速度优先 →
bge-reranker-base
离线、高精度 →
bge-reranker-large
总结
在RAG中:
向量模型负责 召回候选文档(快速、覆盖广)。
重排序模型负责 精确筛选文档(精确、噪声少)。
LLM结合用户问题 + 文档上下文,生成最终答案。
RAG 的优势在于:
避免 LLM 直接“幻觉”,提升回答可信度;
支持动态知识更新,只需更新数据库而无需重新训练模型;
能在效率与准确性之间灵活取舍。
可以说,RAG 已经成为企业级大模型应用落地的首选方案之一。