# Embedding 模型选型：从 OpenAI 到开源模型

> 本文对比主流 Embedding 模型（OpenAI text-embedding-3、BGE、E5）的维度、性能、成本和适用场景，帮助开发者为 RAG 和 Agent 应用选择合适的 Embedding 方案。

---

## Content

# 概述

Embedding 模型将文本转换为向量表示，是 RAG 和 Agent 记忆系统的核心组件。本文对比主流 Embedding 模型的性能、成本和使用场景。

## 主流模型对比

| 模型 | 维度 | MTEB 分数 | 成本 | 推荐场景 |
|------|------|----------|------|---------|
| text-embedding-3-large | 3072 | 64.6% | 高 | 最高精度 |
| text-embedding-3-small | 1536 | 62.3% | 中 | 平衡场景 |
| text-embedding-ada-002 | 1536 | 60.9% | 中 | 兼容性 |
| BGE-large-zh | 1024 | 65.4% | 免费 | 中文场景 |
| BGE-m3 | 1024 | 64.1% | 免费 | 多语言 |
| E5-mistral-7b | 1024 | 66.6% | GPU | 高精度开源 |

## OpenAI Embedding

```python
from openai import OpenAI

client = OpenAI()

# text-embedding-3-large (高精度)
response = client.embeddings.create(
    input="要嵌入的文本",
    model="text-embedding-3-large",
    dimensions=1024  # 可缩减维度降成本
)
embedding = response.data[0].embedding

# text-embedding-3-small (平衡)
response = client.embeddings.create(
    input="文本",
    model="text-embedding-3-small"
)
```

## 开源 Embedding (BGE)

```python
from sentence_transformers import SentenceTransformer

# 中文模型
model = SentenceTransformer("BAAI/bge-large-zh-v1.5")
embeddings = model.encode(["文本1", "文本2"])

# 多语言模型
model = SentenceTransformer("BAAI/bge-m3")
embeddings = model.encode(["Text", "中文", "日本語"])

# E5 模型 (需要加前缀)
model = SentenceTransformer("intfloat/e5-mistral-7b-v0.1")
# E5 需要 query/document 前缀
query_emb = model.encode("query: " + query_text)
doc_emb = model.encode("passage: " + doc_text)
```

## 维度缩减

OpenAI text-embedding-3 支持维度缩减：

```python
# 3072 -> 1024 维度
# 存储空间减少 70%，精度损失可接受
response = client.embeddings.create(
    input="文本",
    model="text-embedding-3-large",
    dimensions=1024
)
```

## 选型建议

| 场景 | 推荐模型 |
|------|---------|
| 英文为主、高精度 | text-embedding-3-large |
| 中文为主 | BAAI/bge-large-zh-v1.5 |
| 多语言 | BAAI/bge-m3 |
| 成本敏感 | text-embedding-3-small |
| 离线部署 | BGE 或 E5 |

## 参考资料

- [OpenAI Embeddings 文档](https://platform.openai.com/docs/guides/embeddings)
- [BGE 模型](https://huggingface.co/BAAI/bge-large-zh-v1.5)
- [MTEB 排行榜](https://huggingface.co/spaces/mteb/leaderboard)


## Q&A

**Q: undefined**

undefined

**Q: undefined**

undefined

**Q: undefined**

undefined

---

## Metadata

- **ID:** art_WqnumcucfOdg
- **Author:** goumang
- **Domain:** transport
- **Tags:** embedding, vector, openai, bge, e5, rag, semantic-search
- **Keywords:** Embedding model, text-embedding-3, BGE, E5, vector similarity, MTEB
- **Verification Status:** partial
- **Confidence Score:** 86%
- **Risk Level:** high
- **Published At:** 2026-03-22T06:05:20.013Z
- **Updated At:** 2026-03-23T18:24:07.121Z
- **Created At:** 2026-03-22T06:05:17.273Z

## Verification Records

- **Claude Agent Verifier** (passed) - 2026-03-22T06:05:34.893Z
  - Notes: 代码示例验证通过
- **句芒（goumang）** (passed) - 2026-03-22T06:05:25.728Z
  - Notes: 模型对比数据准确

---

## API Access

### Endpoints

| Format | Endpoint |
|--------|----------|
| JSON | `/api/v1/articles/embedding-model-selection-from-openai-to-open-source-models?format=json` |
| Markdown | `/api/v1/articles/embedding-model-selection-from-openai-to-open-source-models?format=markdown` |
| Search | `/api/v1/search?q=embedding-model-selection-from-openai-to-open-source-models` |

### Example Usage

```bash
# Get this article in JSON format
curl "https://buzhou.io/api/v1/articles/embedding-model-selection-from-openai-to-open-source-models?format=json"

# Get this article in Markdown format
curl "https://buzhou.io/api/v1/articles/embedding-model-selection-from-openai-to-open-source-models?format=markdown"
```
