一、嵌入模型榜单
1、MTEB:由hugface推出的嵌入模型评测榜单,公认性高。需要科学上网
二、选择标准
对于如何选择嵌入模型,一般来说标准都是不统一的,没有绝对的参考,需要考虑目标文本的语言类型,精度、性能、成本、语言适配、文档大小等等情况。下列描述仅是常见场景下的推荐,如遇特殊场景则需要结合多方面因素,慎重选择。
1. 语言与领域适配性
这是首要考量,模型必须能“看懂”你的数据。
语言匹配: 你的数据是中文、英文还是多语言混合?
中文场景:可以选择原生支持中文的模型,如 BAAI/bge-large-zh、M3E 或智源的 text2vec 系列。用专门的中文模型通常优于用翻译或通用模型。
多语言场景:如果数据包含多种语言(如英语+西班牙语),可以考虑多语言模型,如 intfloat/multilingual-e5-large 或 Cohere的embed-multilingual。
垂直领域: 数据是法律条文、医疗报告、金融研报还是代码?
通用领域:通用的 OpenAI Embeddings 或 BGE 通常表现不错。
特定领域:如果预算充足,可以在该领域的语料上微调(Fine-tune)一个开源模型,效果通常会明显好于通用模型。
2. 检索性能(Accuracy)
这是衡量模型质量最核心的指标。通常使用公开数据集(如MTEB、C-MTEB)的评测分数作为参考。
MTEB/C-MTEB 榜单:这是一个很好的参考点。可以查看模型在语义相似度、文本检索、文本分类等任务上的平均得分。
实际测试(金标准):榜单分数高不代表在你的业务场景中一定最好。建议构建一个小型的“标杆测试集”,用真实数据跑一下召回率,看Top-K的准确率谁更高。
3. 嵌入维度与存储成本
嵌入维度直接决定了向量数据库的存储成本和检索速度。
高维(>1024维):如OpenAI
text-embedding-3-large的3072维。优点是信息表征能力强;缺点是占用存储空间大,内存消耗高,检索延迟可能稍高。低维(<512维):如某些轻量级模型。优点是速度快、存储便宜;缺点是可能损失部分精度。
动态维度/Matryoshka:这是OpenAI等采用的策略。模型训练时支持降维截断。可以先用高维嵌入存储,检索时用低维向量加速计算,灵活性较高。
4. 输入长度限制(Token限制)
决定了模型一次能处理多长的文本。
短文本(512 tokens以内):适合处理搜索关键词、短查询、句子。
长文本(8k tokens以上):如果需要处理长文档(如合同、论文),建议选择支持长上下文的模型,如Voyage-2(支持8k)或Jina AI(支持8k)。
策略提示:如果模型只支持短文本,但数据是长文档,通常需要先进行切片(Chunking),再分别嵌入。
5. 部署与推理成本
API调用(SaaS):
优点:零运维,开箱即用,通常效果稳定。
缺点:数据需要出站,存在隐私合规风险;长期使用成本较高。
代表:OpenAI
text-embedding-3-small(性价比高)、Cohere Embed、智源API。
开源本地部署:
优点:数据安全,长线成本较低,可针对业务微调。
缺点:需要GPU资源,运维成本高。
代表:
BGE(BAAI)、E5(微软)、GTE(阿里)。
6. 特定需求
稀疏检索 vs 稠密检索:如果业务场景对关键词匹配(比如人名、编号)要求极高,单纯靠稠密嵌入可能会漏掉。此时可以考虑搭配Splade这样的模型,或者结合传统的BM25算法进行混合检索。
延迟要求:如果是面向C端的实时搜索,需要模型推理足够快。可以选择量化后的模型(如
int8或binary编码),或者直接选择维度较低的模型。
总结:决策流程图
可以参考这个思路来做选择:
第一步:看语言 -> 中文选
bge-zh/M3E;多语种选multilingual-e5。第二步:看数据隐私 -> 不能出内网选开源本地模型;能上云选
OpenAI/Cohere快速验证。第三步:看领域通用性 -> 通用数据直接榜单选高分;垂直领域建议微调。
第四步:看预算 -> 成本敏感且硬件有限,选小模型或
text-embedding-3-small;追求极致效果,考虑大模型或高维模型。
三、推荐模型
快速选型指南(基于上述表格)
如果你追求最高精度,且数据可上云:
选 OpenAI text-embedding-3-large。
如果你是中文项目,需要本地部署:
首选 BAAI/bge-large-zh-v1.5(精度优先)。
如果硬件资源有限,可选 M3E-base(轻量优先)。
如果你需要处理大量长文档(如财报、论文):
本地部署选 jina-embeddings-v2-base-zh(中文)或 BAAI/bge-m3(多语言)。
API调用选 Cohere 或 Voyage。
如果你的数据是多语言混合(如中英文掺杂):
本地部署选 intfloat/multilingual-e5-large 或 BAAI/bge-m3。
如果你是做代码搜索:
可以关注 Voyage-code 系列或 OpenAI 的嵌入模型
如果实在不知道如何选可以无脑:BGE-M3