Embedding 模型选型与对比
Embedding 模型是什么
Embedding 模型将文本转换为固定维度的向量(例如 768 维或 1024 维),使得语义相似的文本在向量空间中的距离更近。它是 RAG 系统的核心组件。
主流模型对比
| 模型 | 维度 | 最大长度 | 语言 | 特点 |
|---|---|---|---|---|
| text-embedding-3-small | 512/1536 | 8191 | 多语言 | OpenAI 出品,质量高,付费 API |
| text-embedding-3-large | 256/1024/3072 | 8191 | 多语言 | OpenAI 旗舰,精度最高 |
| BAAI/bge-large-zh-v1.5 | 1024 | 512 | 中英 | 中文场景首选,免费开源 |
| BAAI/bge-small-zh-v1.5 | 768 | 512 | 中英 | 轻量版,推理快 |
| intfloat/multilingual-e5-large | 1024 | 512 | 多语言 | 高质量多语言模型 |
| moka-ai/m3e-base | 768 | 512 | 中英 | 国产开源,中文友好 |
| GanymedeNil/text2vec-large-chinese | 1024 | 512 | 中文 | 中文专用 |
选型原则
- 中文为主 → BGE 系列或 M3E:开源免费,中文效果好
- 多语言场景 → multilingual-e5 或 text-embedding-3:多语言覆盖最广
- 对延迟敏感 → bge-small / m3e-small:推理快,适合实时检索
- 对精度要求极高 → text-embedding-3-large:精度最高,但需调用 API
- 本地部署 → BGE 系列:模型小、推理快、可离线
维度选择
维度是精度和效率的权衡:
- 256-512 维:存储小、检索快,适合大规模数据
- 768-1024 维:主流选择,精度和效率的平衡点
- 1536-3072 维:精度最高,但存储和检索代价大
OpenAI text-embedding-3 支持通过 dimensions 参数截断维度,无需重新编码即可控制存储成本。
嵌入策略
- 文档嵌入:整段文档的向量表示,适合检索
- 句子嵌入:逐句嵌入,适合精细匹配
- 池化策略:Mean Pooling(平均池化,通用)vs CLS Token(分类用)
- 归一化:L2 归一化后,余弦相似度 = 点积,检索更快
降级方案
当外部模型不可用时,可以用哈希嵌入(Hash Embedding)做兜底:通过确定性哈希算法将文本映射到固定维度的向量。精度远不如深度学习模型,但保证零依赖、零延迟。