AI 向量嵌入模型深度對比(2026):OpenAI、Cohere、BGE、E5 與 Jina
為什麼 Embedding 模型的選擇比你想像的更重要
2026 年 RAG 成標配,但很多團隊忽視了 embedding 模型選擇。向量嵌入是所有語意檢索的基石。糟糕的 embedding 導致:上下文跑偏(GIGO)、聚類混亂、跨語言同義詞映射到不相關空間。
本文涵蓋六款主流模型,基準到成本到程式碼。
五大評測維度
| 維度 | 關鍵問題 |
|---|---|
| 語意品質 | MTEB 上 Retrieval 和 STS 得分? |
| 維度與儲存 | Matryoshka 降維支援? |
| 多語言 | 跨語言檢索品質? |
| 成本 | 百萬 token 價格?可私布? |
| 延遲 | p95 延遲?批次吞吐? |
六款模型深度剖析
1. OpenAI text-embedding-3-small
1536 維,Matryoshka 至 512 僅 2% 品質降。
- 價格:$0.02/1M tokens
- 多語言:100+ 語言,英語最強
from openai import OpenAI
client = OpenAI()
resp = client.embeddings.create(
model="text-embedding-3-small",
input=["The quick brown fox jumps over the lazy dog."],
dimensions=512
)
print(len(resp.data[0].embedding)) # 512
2. OpenAI text-embedding-3-large
3072 維,MTEB 平均 64.6。
- 價格:$0.13/1M tokens
- 品質:Retrieval ~59.3,STS ~82.7
3. Cohere Embed v3
多語言事實標準,MIRACL 持續領先。
- 維度:1024
- 非對稱:
search_document/search_query - 價格:$0.10/1M tokens
import cohere
co = cohere.Client("your-api-key")
doc_emb = co.embed(texts=["Kubernetes networking."], model="embed-multilingual-v3.0", input_type="search_document").embeddings[0]
query_emb = co.embed(texts=["Kubernetes 容器"], model="embed-multilingual-v3.0", input_type="search_query").embeddings[0]
⚠️ 入庫查詢用不同 input_type,否則品質下降。
4. BGE-M3(BAAI)
唯一支援**密、疏、多向量(ColBERT)**三種方式的開源模型。
- 維度:1024(密)
- 授權:MIT
- 部署:句子Transformer + A10
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("BAAI/bge-m3")
doc_emb = model.encode("TiDB 向量搜尋文件。", normalize_embeddings=True)
query_emb = model.encode("Represent this sentence for searching relevant passages: TiDB 索引選擇", normalize_embeddings=True)
三方式混合使用——密召回+疏篩選+ColBERT重排——召回率和精度雙升。
5. E5 系列
指令調優型嵌入。
| 變體 | 維度 | 特點 |
|---|---|---|
intfloat/e5-large-v2 |
1024 | 英語 |
intfloat/multilingual-e5-large |
1024 | 多語言 |
intfloat/e5-mistral-7b-instruct |
4096 | 最高品質 |
6. Jina Embeddings v3
多向量+長文(8192 tokens)。Apache-2.0。
MTEB 排名(2026 Q2)
| 模型 | Retrieval (avg) | STS (avg) | 語言 |
|---|---|---|---|
| OpenAI text-embedding-3-large | 59.3 | 82.7 | 多語言 |
| Cohere embed-multilingual-v3.0 | 60.1 | 81.5 | 多語言最強 |
| BGE-M3 | 58.7 | 80.2 | 中英極強 |
| text-embedding-3-small | 56.8 | 80.1 | 英語 |
| E5-mistral-7b-instruct | 61.2 | 84.3 | 英語 |
| multilingual-e5-large | 57.2 | 78.9 | 多語言 |
⚠️ 公開 benchmark ≠ 你的場景。自測為準。
成本分析(100 萬片段,2 億 tokens)
| 模型 | 成本 | 私布 |
|---|---|---|
| text-embedding-3-small (512) | $4 | ❌ |
| text-embedding-3-large (512) | $26 | ❌ |
| Cohere embed-v3 | $20 | ❌ |
| BGE-M3 | $0 (GPU) | ✅ |
| multilingual-e5-large | $0 (GPU) | ✅ |
持續更新場景下,開源自建數月回本。
選型框架
| 情況 | 推薦 |
|---|---|
| 英語快速上線 | text-embedding-3-small |
| 多語言 RAG | Cohere embed-v3 |
| 中文為主 | BGE-M3 |
| 資料需私布 | BGE-M3 / e5-large |
| 法務/醫療 | text-embedding-3-large / E5-mistral |
| 長文 | Jina v3 |
| 預算極限 | BGE-M3 + 單 GPU |
自評才靠譜
from sentence_transformers import SentenceTransformer, evaluation
model = SentenceTransformer("BAAI/bge-m3")
evaluator = evaluation.InformationRetrievalEvaluator(
queries=dataset["queries"], corpus=dataset["corpus"], relevant_docs=dataset["relevant_docs"],
)
results = evaluator(model)
print(f"NDCG@10: {results['ndcg@10']:.4f}")
比較:語意檢索(NDCG@10)、分類(線性探針)、聚類(Silhouette)、跨語言(mAP@10)。
FAQ
Q1:Matryoshka Embedding 是什麼?——多維度同時優化的訓練技巧。生成後可直接截斷。例:3072→256 維,省 92% 儲存,僅降 5–8% 品質。
Q2:何時微調?——專業領域(醫療/法律/金融)明顯不如預期時。2–5k 領域 query-doc pair + 幾輪對比學習即可。
Q3:非對稱嵌入是什麼?——查詢(5–15 詞)和文檔(數百詞)資訊密度不同,用不同編碼路徑。Cohere 的代表性實現。
Q4:疏 vs 密檢索?——疏(BM25)擅長精確關鍵詞;密(向量)擅長語意匹配。混合最強。
Q5:成本最佳化技巧?——Matryoshka 短截、快取、批次 API。
總結
三步:決策表篩選 2–3 候選 → 自測 BEIR → AB 比較。