跳转至

Embedding 模型如何选型?什么时候微调 Embedding 或 Reranker?

  • ID:Q021
  • 难度:进阶 / 系统设计
  • 标签:Embedding、Reranker、领域适配、向量空间、评测
  • 时效性:模型榜单和产品版本变化较快,回答日期为 2026-08-01

同义问法

  • 向量模型和生成模型有什么区别?
  • 中文知识库怎么选 Embedding?
  • 维度越高效果一定越好吗?
  • 为什么微调 Embedding,而不是只微调 Reranker?
  • 微调 Embedding 后为什么要重建索引?

来源

  • 用户提供的二手题库:3.43.20
  • MTEB:Embedding 模型应按任务、语言和数据集评测,而不是只看一个总榜。 查看原文

可视化图解

flowchart TD
  Q[业务检索任务] --> D[构建领域评测集]
  D --> B[比较候选 Embedding]
  B --> M[Recall@K MRR 延迟 成本]
  M --> G{通用模型是否达标}
  G -->|是| S[直接使用并监控漂移]
  G -->|否| F[领域数据微调或蒸馏]
  F --> M

核心结论

Embedding 选型本质是选择一个“语义相似度定义”。 模型把文本映射到向量空间,业务真正关心的是:在自己的查询和文档分布下,相关内容是否靠近、不相关内容是否分开。

因此不能根据参数量、向量维度或公开榜单直接决定生产选型。正确流程是:先定义检索任务和约束,再用领域评测集比较召回、延迟、成本和可部署性。

一、Embedding 与 LLM 的职责差异

Embedding 模型输出固定长度向量,目标通常是让语义相关样本在空间中接近。它适合大规模离线编码和在线近邻检索。

生成式 LLM 输出 Token 序列,适合理解指令、推理和生成,但直接用它逐一比较数百万文档成本过高。

典型检索结构:

对应流程使用 Mermaid 图解展示。

二、选型需要看的维度

1. 任务类型

  • 对称相似度:句子去重、聚类;
  • 非对称检索:短 Query 检索长文档;
  • 代码检索:自然语言到代码、代码到代码;
  • 多语言或跨语言检索;
  • 多模态检索;
  • 稠密、稀疏或多向量表示。

同一个模型在“句子相似度”表现好,不代表在“问题找答案段落”上同样好。

2. 数据分布

重点检查:

  • 中文与中英混合比例;
  • 专有名词、错误码、产品型号;
  • Query 与文档长度差异;
  • 文档领域是否偏离模型训练分布;
  • 是否需要指令前缀;
  • 最大输入长度和截断行为。

3. 工程约束

  • 向量维度带来的存储和内存;
  • 编码吞吐与在线 P95 延迟;
  • CPU/GPU 部署成本;
  • 商业 API 的价格、数据合规和稳定性;
  • 模型升级后是否需要重建全量索引。

向量维度更高通常意味着更大存储和距离计算成本,但不保证检索质量更高。

三、评测方法

至少构造三类数据:

  1. 正常查询与相关文档;
  2. Hard Negative:主题相似但不能回答的文档;
  3. 领域难例:缩写、错误码、跨语言、否定条件和时间版本。

指标看:

  • Recall@K / Hit@K;
  • MRR 或 NDCG;
  • 每秒编码量;
  • P95 查询延迟;
  • 索引大小;
  • 下游答案正确率。

不要只比较离线相似度;候选召回最终需要服务生成答案。

四、什么时候微调 Embedding

适合微调的信号:

  • 通用模型无法理解领域术语或内部缩写;
  • 正确文档经常根本没有进入候选集;
  • 有足够的 Query–Positive–Hard Negative 数据;
  • 业务分布相对稳定;
  • 能承担模型版本治理和重建索引成本。

训练目标通常是拉近 Query 与正样本、推远 Hard Negative。真正有价值的数据不是大量简单正例,而是模型容易混淆的负例。

风险:

  • 过拟合局部业务,损害通用查询;
  • 新旧向量空间不兼容;
  • 模型更新后全量文档需重新编码;
  • 线上 A/B 与回滚链路复杂。

五、什么时候微调 Reranker

Reranker 只处理少量候选,可把 Query 和文档联合编码,能够观察词级交互,因此排序更精确。

优先微调 Reranker 的场景:

  • 正确文档通常已进入 Top-N,只是排序靠后;
  • 想快速验证领域收益,不想立即重建索引;
  • 候选集规模较小,能承担在线推理成本;
  • 业务频繁变化,需要独立升级和快速回滚。

Reranker 无法找回从粗召回阶段已经丢失的文档。

六、决策框架

很多问题并不是模型不够强,而是分块错误、权限过滤错误、Query 被错误改写或评测集不完整。

常见错误回答

中文场景直接选排行榜第一的模型。

排行榜的数据分布、任务权重和硬件条件不等于你的业务。

微调 Embedding 一定比微调 Reranker收益更大。

前者影响召回空间但代价与风险更高;后者只能重排候选但更容易试验和回滚,取决于错误发生在哪一层。

面试口述版

我把 Embedding 选型看成选择业务的相似度函数。先按语言、任务、长度、领域术语和部署约束筛候选,再用真实 Query、正样本和 Hard Negative 比较 Recall@K、MRR、延迟与索引成本。若正确文档根本进不了候选集,并确认不是分块和检索策略问题,才考虑微调 Embedding;若文档已召回但排序差,优先优化或微调 Reranker。Embedding 微调会改变向量空间,通常需要重建索引,因此必须做版本化、双写和回滚,而不是只看离线分数。

结合个人项目

CI/CD 场景既有自然语言,也有错误码、类名、Jar 包名和机器标识。单独用稠密向量容易弱化精确 Token,因此应先采用 BM25 + Dense 的混合召回,再分析失败案例是否真的需要领域微调。