news 2026/4/16 12:21:39

Embedding 模型 与 Rerank 模型 区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Embedding 模型 与 Rerank 模型 区别

Embedding 与 Rerank 区别

在 RAG(检索增强生成)流程中,EmbeddingRerank是两种不同阶段的检索技术:前者负责「把文本变成向量并做初筛」,后者负责「在候选结果上再做一次精排」。下面从定义、输入输出和具体例子说明二者的区别。


一、核心定义

概念作用典型使用阶段
Embedding把文本映射成固定维度的向量,用于相似度计算初筛建库 + 第一轮检索(召回)
Rerank在「查询 + 若干候选文档」上重新打分、排序,做精排第一轮检索之后(精排)

简单说:Embedding 负责「找出一批可能相关的」;Rerank 负责「在这一批里挑出最相关的」


二、输入与输出对比

2.1 总览表

维度EmbeddingRerank
输入纯文本(单条或多条)查询字符串+候选文档列表(通常来自初筛)
输出向量(一条文本 → 一个向量)同一批文档的重新排序(或带分数的列表)
是否依赖查询否,只依赖文本本身是,必须同时有 query 和 documents
匹配范式表示型文本匹配:先表示、再比相似度交互型文本匹配:先交互、再打分
模型类型多为 Bi-Encoder(双塔):文本 → 向量多为 Cross-Encoder(联合/单塔):query+doc → 分数

2.2 Embedding:输入输出

  • 输入

    • 一条或多条文本(字符串或字符串列表)。
    • 例如:"机器学习是人工智能的一个分支"["文本1", "文本2", "文本3"]
    • 不包含用户当前的查询(query),只对「要建库的文档」或「待比对的文本」做编码。
  • 输出

    • 向量:每条文本对应一个固定维度的浮点数向量。
    • 例如:[0.12, -0.34, 0.56, ...](维度如 384、768、1024 等,取决于模型)。
    • 多条文本时,输出为「向量列表」,与输入文本一一对应。

2.3 Rerank:输入输出

  • 输入

    • 查询(query):用户当前的问题或检索语句,一条字符串。
    • 候选文档列表(documents):通常是第一轮检索(如用 Embedding + 向量库)得到的 top-k 条文档(如 10~50 条)。
    • 即:必须同时有「问什么」和「候选有哪些」
  • 输出

    • 同一批文档的重新排序(有时带相关性分数)。
    • 格式多为:[(doc, score), (doc, score), ...]或直接返回排序后的文档列表。
    • 一般不产生新向量,只产生排序/分数

2.4 补充:表示型 vs 交互型文本匹配,以及 Cross-Encoder / Bi-Encoder

文本匹配的范式上看:Embedding(Bi-Encoder)对应表示型文本匹配,Rerank(Cross-Encoder)对应交互型文本匹配

表示型文本匹配(Representation-based)
  • 定义:先为每条文本学习一个独立的向量表示(即「表示」),再通过向量之间的相似度(如点积、余弦)来衡量两段文本的匹配程度。查询和文档在建模时不直接接触,匹配发生在「表示空间」里——即「先表示,再比相似度」。
  • 特点:文本的表示与「跟谁比」无关,同一段 doc 的向量固定,可以预先算好、存进向量库,因此适合大规模检索。
  • 对应:Embedding / Bi-Encoder(双塔)即属于表示型文本匹配

交互型文本匹配(Interaction-based)
  • 定义:在判断两条文本是否匹配时,让它们在模型内部直接交互(例如拼接成一段输入、或通过 attention 让 query 与 doc 的 token 互相可见),基于交互后的表示再输出一个匹配分数。匹配发生在「交互过程」中——即「先交互,再打分」。
  • 特点:模型能利用 query 与 doc 的细粒度对齐(如哪些词对应哪些词),判断更准,但无法预先为 doc 算一个通用向量,每条 (query, doc) 都需单独过模型。
  • 对应:Rerank / Cross-Encoder(联合/单塔)即属于交互型文本匹配

范式定义简述对应技术
表示型先为文本学独立向量,再用向量相似度衡量匹配Embedding、Bi-Encoder(双塔)
交互型让两条文本在模型内直接交互,再输出匹配分数Rerank、Cross-Encoder(联合/单塔)

下面从模型结构角度再区分 Bi-Encoder 与 Cross-Encoder。

Bi-Encoder(双塔)
  • 含义:有「两个塔」——一个编码 query,一个编码 document(结构可以相同、参数可共享也可不共享)。两条文本分别送入模型,各自得到一个向量,再通过向量相似度(如点积、余弦)得到相关性分数。
  • 输入:query 一条、doc 一条(或先对大量 doc 离线编码好,线上只编码 query)。
  • 输出:每条文本一个向量;相关性 = 两个向量的相似度,经过一个「同时看到 query 和 doc」的层。
  • 特点
    • 文档向量可以预先算好、存进向量库,检索时只算 query 向量再做相似度,所以适合海量召回(百万级文档也能毫秒级初筛)。
    • 但 query 和 doc 在模型内部没有直接交互,只能靠「各自向量在语义空间里是否接近」来近似相关性,对复杂问法或细微差异不如 Cross-Encoder 准。
  • 范式:即上文所说的表示型文本匹配——先表示、再比相似度。
Cross-Encoder(联合编码 / 单塔)
  • 含义只有一个模型,把 query 和 document拼成一段输入(例如[CLS] query [SEP] doc [SEP]),一起送进同一套 Transformer,在内部让 query 和 doc 做充分交互(self-attention 会同时看到两边),最后在 [CLS] 或最后一层上接一个分类头,直接输出一个相关性分数(或 0/1 标签)。
  • 输入:必须是「query + 单条 doc」的联合文本(一条样本里同时包含两者)。
  • 输出一个标量分数(或二分类概率),表示这条 doc 与这条 query 的相关程度;输出向量,也不做向量相似度。
  • 特点
    • 模型能利用「query 里的词」和「doc 里的词」的交叉注意力,所以对「是否真正回答问题」判断更准,适合做精排(Rerank)
    • 每条 (query, doc) 都要单独过一次模型,无法像 Bi-Encoder 那样把 doc 向量预先存好再批量相似度;因此一般只对少量候选(如 20~50 条)做 Cross-Encoder 打分,即「先双塔召回,再联合精排」。
  • 范式:即上文所说的交互型文本匹配——先交互、再打分。
为何叫「双塔」和「联合」?
叫法对应模型直观理解
双塔Bi-Encoderquery 一个「塔」、doc 一个「塔」,两路分别编码再汇合(相似度),像两栋并立的塔。
联合 / 单塔Cross-Encoderquery 和 doc 在同一个模型里一起编码、一起做 attention,是「联合输入、一个塔出分数」。

所以:Embedding 检索多用 Bi-Encoder(双塔);Rerank 多用 Cross-Encoder(联合/单塔)。前者重速度与规模,后者重精度与 query–doc 交互。


三、具体例子说明

3.1 场景设定

假设有一个 RAG 系统,文档库中有以下 5 个片段(实际场景中可能是几百上千条):

  • Doc1"Python 是一种编程语言,适合数据科学和机器学习。"
  • Doc2"今天北京天气晴朗,气温 25 度。"
  • Doc3"机器学习常用 Python 和 TensorFlow 进行开发。"
  • Doc4"北京是中国的首都,有很多名胜古迹。"
  • Doc5"深度学习是机器学习的一个子领域。"

用户查询(query)为:「用什么语言做机器学习开发?」


3.2 Embedding 的例子

作用:把每条文档转成向量,再通过 query 的向量在向量库里做相似度检索,得到「初筛」的候选列表。

输入(仅文本,无 query 参与编码)

  • 建库时对 5 条文档分别做 Embedding,输入是:
    ["Python 是一种编程语言...", "今天北京天气...", "机器学习常用 Python...", ...]
  • 用户提问时,对query做一次 Embedding,输入是:
    "用什么语言做机器学习开发?"

输出

  • 每条文档一个向量,例如(示意,实际维度更长):
    Doc1 → [0.1, -0.2, 0.5, 0.3, ...] # 384 维 Doc2 → [-0.3, 0.1, -0.1, 0.0, ...] Doc3 → [0.2, -0.1, 0.6, 0.2, ...] ...
  • Query 的向量:[0.15, -0.18, 0.52, 0.28, ...]

检索过程:用 query 向量与所有文档向量算相似度(如余弦相似度),按分数排序,假设得到初筛 top-3:

  1. Doc3(相似度 0.92)
  2. Doc1(相似度 0.88)
  3. Doc5(相似度 0.72)

这里Embedding 的输入 = 文本;输出 = 向量排序是向量库/检索器做的,不是 Embedding 模型直接输出的。


3.3 Rerank 的例子

作用:把「用户问题」和「初筛得到的候选文档」一起送进 Rerank 模型,得到更准确的相关性分数并重新排序。

输入(必须同时有 query 和 documents)

  • query"用什么语言做机器学习开发?"
  • documents:初筛得到的 3 条(或更多),例如:
    [ "机器学习常用 Python 和 TensorFlow 进行开发。", # Doc3 "Python 是一种编程语言,适合数据科学和机器学习。", # Doc1 "深度学习是机器学习的一个子领域。" # Doc5 ]

输出

  • 同一批文档的重新排序 + 分数(分数由 Rerank 模型给出,通常 0~1 或类似区间):
    [ (Doc3, 0.95), # 最相关:直接提到「Python」「机器学习」「开发」 (Doc1, 0.82), # 次相关:提到 Python 和机器学习 (Doc5, 0.45) # 较弱:只提机器学习,没提「语言」或「开发」 ]

可以看到:Rerank 的输入 = query + 文档列表;输出 = 排序后的 (文档, 分数) 列表,没有新向量。


四、输入输出小结(对应到你的项目)

结合你项目里的 RAG 流程(langchain_rag_demo_framework.py):

步骤使用技术输入输出
文档入库Embedding切好的文本块列表chunks每个 chunk 的向量 → 存入 Chroma
用户提问 → 初筛Embedding用户问题queryquery 的向量 → 与库中向量比相似度 → 得到 top-k(如 k=3)文档
(若加精排)Rerankquery+ 上一步的 3 条文档3 条文档的重新排序(+ 分数)→ 再取 top-n 送入大模型

所以:

  • Embedding:输入是「文本」;输出是「向量」。不区分「查询」和「文档」的语义,只是分别编码。
  • Rerank:输入是「查询 + 候选文档列表」;输出是「同一批文档的排序(及分数)」。

五、为何要区分?何时用 Rerank?

  • Embedding模型(Bi-Encoder,双塔)对 query 和 doc分别编码,计算相似度快,适合在海量文档里快速召回(例如从 10 万条里筛出 20 条)。
  • Rerank模型(Cross-Encoder,联合/单塔)对query 和 doc 一起建模,更准但更慢,适合在少量候选上精排(例如 20 条里再排成 3~5 条)。
  • 若想进一步理解「双塔」与「联合」的含义,可回看上文2.4 补充:Cross-Encoder 与 Bi-Encoder 详解

因此常见做法是:先用 Embedding 做召回,再用 Rerank 做精排,兼顾速度和准确率。你当前 demo 只用了 Embedding + 相似度阈值,若检索结果不够准,可以在 retriever 之后加一层 Rerank,再把 Rerank 后的 top-n 作为context传给大模型。


六、一句话对照

EmbeddingRerank
输入文本(可多条)查询 + 候选文档列表
输出向量(与文本一一对应)文档的重新排序(+ 分数)
匹配范式表示型文本匹配(先表示,再比相似度)交互型文本匹配(先交互,再打分)
例子"机器学习"[0.1, -0.2, ...]query"用什么做 ML?"+ [DocA, DocB, DocC] → [(DocB, 0.95), (DocA, 0.8), (DocC, 0.4)]

这样就能清楚区分二者在「输入」「输出」「匹配范式」和「在 RAG 中的角色」上的不同。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:06:27

直流绝缘监测装置在汽车充电桩中的应用

行业标准升级:从“可选”到“必配”2023年新版《电动汽车充电设备技术标准》中,直流绝缘监测已被列为直流充电桩的强制性安全功能。北京、上海、深圳等多地也已将绝缘监测性能纳入充电设施运营补贴的考核指标。“这不再是可有可无的附加功能,…

作者头像 李华
网站建设 2026/4/14 3:39:41

water tower

water tower 水塔

作者头像 李华
网站建设 2026/4/16 10:38:54

2026年度服装企业ERP软件TOP3推荐,让管理更高效

2026年度POL名服装行业ERP软件推荐,让高效管理触手可及 在服装行业,管理效率直接影响到生产和销售。为此,2026年度推荐的三款ERP软件,将帮助企业实现更高效的管理。这些软件符合现代企业需求,集成了智能化管理和实时数…

作者头像 李华
网站建设 2026/4/16 10:42:17

轻松搞定trader-x合约量化策略的实现与优化

我做量化交易已经有一段时间了,经历过不少起起伏伏的过程,像很多人一样,也曾在各种平台上尝试过不同的策略和工具。XTrader是我这几年使用最多的一个平台,它的稳定性和功能还是让我挺满意的,尤其是在执行trader-x合约量…

作者头像 李华
网站建设 2026/4/15 13:43:01

非线性参数的精英学习灰狼优化算法(Matlab)

非线性参数的精英学习灰狼优化算法-- Matlab 改进策略: 1、精英反向学习初始化种群 2、调整收敛因子a 3、改造位置更新公式 仅包含代码,不含讲解 在优化算法的领域中,灰狼优化算法(GWO)以其独特的模拟狼群狩猎行为而受…

作者头像 李华