06RAG嵌入模型选择

alex
0
2025-12-05

一、嵌入模型榜单

1、MTEB:由hugface推出的嵌入模型评测榜单,公认性高。需要科学上网

二、选择标准

对于如何选择嵌入模型,一般来说标准都是不统一的,没有绝对的参考,需要考虑目标文本的语言类型,精度、性能、成本、语言适配文档大小等等情况。下列描述仅是常见场景下的推荐,如遇特殊场景则需要结合多方面因素,慎重选择。

1. 语言与领域适配性

这是首要考量,模型必须能“看懂”你的数据。

  • 语言匹配: 你的数据是中文、英文还是多语言混合?

    • 中文场景:可以选择原生支持中文的模型,如 BAAI/bge-large-zhM3E 或智源的 text2vec 系列。用专门的中文模型通常优于用翻译或通用模型。

    • 多语言场景:如果数据包含多种语言(如英语+西班牙语),可以考虑多语言模型,如 intfloat/multilingual-e5-largeCohere的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端的实时搜索,需要模型推理足够快。可以选择量化后的模型(如int8binary编码),或者直接选择维度较低的模型。

总结:决策流程图

可以参考这个思路来做选择:

  1. 第一步:看语言 -> 中文选 bge-zh/M3E;多语种选 multilingual-e5

  2. 第二步:看数据隐私 -> 不能出内网选开源本地模型;能上云选 OpenAI/Cohere 快速验证。

  3. 第三步:看领域通用性 -> 通用数据直接榜单选高分;垂直领域建议微调。

  4. 第四步:看预算 -> 成本敏感且硬件有限,选小模型或 text-embedding-3-small;追求极致效果,考虑大模型或高维模型。

三、推荐模型

推荐场景

模型名称

公司/机构

语言支持

向量维度

最大输入长度

特点与适用场景

部署方式

通用高性能

text-embedding-3-small

OpenAI

多语言

1536

8191 tokens

性价比极高,延迟低,支持Matryoshka维度裁剪

API

通用高性能

text-embedding-3-large

OpenAI

多语言

3072

8191 tokens

目前SOTA级别的效果,适合复杂语义理解,成本较高

API

开源首选

BAAI/bge-large-zh-v1.5

智源研究院

中文

1024

512 tokens

中文场景首选,MTEB榜单中文赛道领先,检索能力突出

本地/开源

开源首选

BAAI/bge-m3

智源研究院

多语言

1024 (可降维)

8192 tokens

支持长文本,功能强(稠密+稀疏+多阶段检索),适合多语言混合数据

本地/开源

中文/开源

GTE-large-zh

阿里通义

中文

1024

512 tokens

达摩院出品,在中长文本检索上表现稳定,社区认可度高

本地/开源

中文/开源

M3E-base

Moka

中文

768

512 tokens

轻量级,适合垂直领域微调,对中文语义理解友好

本地/开源

长文本/代码

jina-embeddings-v2-base-zh

Jina AI

中文

768

8192 tokens

支持8k长文本,适合处理合同、论文、长对话

本地/开源

长文本/代码

Voyage-2

Voyage AI

英文/代码

1024

8000 tokens

针对RAG场景优化,对长文档检索和代码数据效果好

API

轻量快速

all-MiniLM-L6-v2

Sentence-Transformers

英文

384

256 tokens

极简、极快,适合资源受限环境或实时检索

本地/开源


快速选型指南(基于上述表格)

  1. 如果你追求最高精度,且数据可上云:

    • OpenAI text-embedding-3-large

  2. 如果你是中文项目,需要本地部署:

    • 首选 BAAI/bge-large-zh-v1.5(精度优先)。

    • 如果硬件资源有限,可选 M3E-base(轻量优先)。

  3. 如果你需要处理大量长文档(如财报、论文):

    • 本地部署选 jina-embeddings-v2-base-zh(中文)或 BAAI/bge-m3(多语言)。

    • API调用选 CohereVoyage

  4. 如果你的数据是多语言混合(如中英文掺杂):

    • 本地部署选 intfloat/multilingual-e5-largeBAAI/bge-m3

  5. 如果你是做代码搜索:

    • 可以关注 Voyage-code 系列或 OpenAI 的嵌入模型

  6. 如果实在不知道如何选可以无脑:BGE-M3


动物装饰