- 语言匹配
| 场景 | 推荐方向 |
|---|---|
| 纯中文 | BGE-zh、M3E、text2vec-chinese |
| 中英混合 | BGE-M3、multilingual-e5、GTE |
| 纯英文 | E5-large、GTE、OpenAI embedding |
核心原则: 训练语料必须覆盖你的目标语言,否则召回率会断崖式下降。
2. 维度与性能权衡
- 高维(1024+): 语义表达更丰富,但存储大、检索慢
- 低维(384-768): 速度快、省资源,大部分场景够用
- 实际项目中 768 维是性价比最高的平衡点
3. 最大长度(max_tokens)
文档 chunk 大小 ≤ 模型 max_tokens
| 模型 | 最大长度 |
|---|---|
| BGE 系列 | 512 |
| BGE-M3 | 8192 |
| GTE-large | 8192 |
| text2vec | 512 |
chunk 超过模型最大长度 → 截断 → 信息丢失 → 召回失败
4. 检索质量评估
不要凭感觉选,用你自己的数据跑评测:
- Hit Rate: top-k 结果中命中正确答案的比例
- MRR(Mean Reciprocal Rank): 正确答案排在第几位
- 语义相似度分布: 相关/不相关文档的分数是否能拉开差距
5. 对称 vs 非对称
| 类型 | 含义 | 适用场景 |
|---|---|---|
| 对称(Symmetric) | query 和 document 形式相似 | 相似文档检索、去重 |
| 非对称(Asymmetric) | query 短、document 长 | RAG 问答(大多数场景) |
RAG 通常是短问题查长文档,优先选非对称模型(如 E5 系列需加 query: / passage: 前缀)。
6. 部署成本
本地部署:考虑模型大小 + GPU 显存 + 推理延迟
API 调用:考虑价格 + 速率限制 + 数据隐私
| 模型规模 | 显存需求 | 推理速度 |
|---|---|---|
| small(~33M) | CPU 可跑 | 极快 |
| base(~100M) | 2G 显存 | 快 |
| large(~300M) | 4G 显存 | 中等 |
7. 实际选型建议
中文 RAG 项目(性价比优先)
├── 首选:BAAI/bge-large-zh-v1.5 (768维,512长度,中文强)
├── 长文档:BAAI/bge-m3 (1024维,8192长度,多语言)
└── 轻量级:shibing624/text2vec-base-chinese(768维,快)
多语言 / 英文项目
├── 首选:intfloat/multilingual-e5-large
└── 高精度:BAAI/bge-m3
8. 常见踩坑
- Embedding 模型和 Reranker 不要混淆 --- Embedding 做粗筛(向量检索),Reranker 做精排(交叉编码),两者配合效果最好
- 换 Embedding 模型 = 整个向量库重建 --- 选型要在项目初期确定
- 不要只看 MTEB 榜单 --- 榜单数据分布和你的业务数据可能差异很大,一定要在自己的数据上评测