跳到主要内容

Embedding 模型选择

问题

市面上有哪些主流的 Embedding 模型?如何根据场景选择合适的模型?

答案

一、主流 Embedding 模型对比

模型提供方维度最大 Token中文支持开源特点
text-embedding-3-smallOpenAI15368191高性价比,支持维度裁剪
text-embedding-3-largeOpenAI30728191最强通用能力
BGE-M3BAAI10248192多语言、多粒度、混合检索
BGE-large-zhBAAI1024512中文专精
Jina-embeddings-v3Jina AI10248192多任务 LoRA,长文本
Voyage-3Voyage AI102432000超长上下文,代码支持好
Cohere embed-v3Cohere1024512支持搜索类型标注
E5-mistral-7bMicrosoft409632768基于 LLM,效果最强
GTE-Qwen2阿里153632768中文 SOTA
选型核心建议
  • 快速上线:OpenAI text-embedding-3-small(API 简单,效果稳定)
  • 中文优先:BGE-M3 或 GTE-Qwen2(中文 benchmark 领先)
  • 数据隐私:本地部署 BGE-M3 或 Jina-v3
  • 超长文本:Voyage-3 或 Jina-v3(支持 8K+ token)

二、MTEB 排行榜

MTEB(Massive Text Embedding Benchmark)是最权威的 Embedding 评测榜单:

关注指标

面试中常问"你用什么模型?为什么?",关键是说出选型依据MTEB 分数

三、OpenAI Embedding 的维度裁剪

OpenAI text-embedding-3 系列支持 dimensions 参数,截取向量前 N 维:

from openai import OpenAI
client = OpenAI()

# 使用 1536 维(默认)
response = client.embeddings.create(
model="text-embedding-3-small",
input="如何选择 Embedding 模型?"
)

# 降维到 256 维(节省存储,仍保留较好效果)
response_256 = client.embeddings.create(
model="text-embedding-3-small",
input="如何选择 Embedding 模型?",
dimensions=256 # Matryoshka Representation Learning
)
降维代价

维度从 1536 降到 256,MTEB 分数大约下降 2-5%。需要在效果和成本间权衡。

四、选型决策流程


常见面试问题

Q1: 开源模型和商业模型怎么选?

答案

  • 商业 API(OpenAI/Cohere):开发快、免运维,适合快速验证和小数据量场景
  • 开源模型(BGE/GTE):数据安全、可微调、无调用成本,适合大数据量和隐私敏感场景
  • 实际项目中建议先用商业 API 验证方案,效果达标后再考虑替换为开源模型降低成本

Q2: 如何评测一个 Embedding 模型是否适合你的业务?

答案

  1. 构建评测集:从真实业务中抽取 50-200 组 query-document 对
  2. 计算 Recall@K:检索 Top-K 中命中正确文档的比例
  3. 对比多个模型:在相同评测集上横向对比
  4. 关注边缘 case:短查询、长文档、专业术语等

Q3: Embedding 模型支持的最大 Token 数不够怎么办?

答案

  • 文档分块:将长文本切分为 512 token 左右的段落(参考 文档处理与分块
  • Late Chunking:先对整个文档编码,再切分(保留上下文信息)
  • 换用长上下文模型:Jina-v3(8K)、Voyage-3(32K)

相关链接