Embedding 模型把文字變成向量,是 RAG 檢索品質的關鍵。OpenAI、Gemini、本地模型該怎麼選?用四個維度幫您決定。
什麼是 Embedding?
把一段文字轉成「向量」(一組數字,例如 768 個浮點數)。語義相近的文字,向量距離近。RAG 用向量距離找最相關的切片。
主流模型對比
| 模型 | 維度 | 中文 | 價格 | 備註 |
|---|---|---|---|---|
| OpenAI text-embedding-3-large | 3072 | ★★★★★ | $0.13/M | 業界標竿 |
| OpenAI text-embedding-3-small | 1536 | ★★★★ | $0.02/M | 性價比高 |
| Gemini text-embedding-004 | 768 | ★★★★ | 免費(限額) | 整合 Google 生態 |
| Cohere embed-v3 | 1024 | ★★★★ | $0.10/M | 多語強 |
| BGE-M3 | 1024 | ★★★★ | 免費(自架) | 開源、可微調 |
| jina-embeddings-v3 | 1024 | ★★★ | $0.05/M | 長文支援 |
四個選擇維度
1. 中文表現
實測中文,OpenAI > Cohere ≥ BGE ≥ Gemini ≥ jina。但差距很小(5–10%)。
2. 價格
每 100 萬字大概 8–15 萬 tokens(中文)。換算:
- 1MB 文件 ≈ NT$5(OpenAI 3-small)
- 1MB 文件 ≈ NT$30(OpenAI 3-large)
- 1MB 文件 ≈ NT$0(Gemini 免費額度內)
3. 速度
本地模型(BGE):100ms/批
雲端 API:300–800ms/批(含網路)
4. 隱私
- 本地(BGE、自架):資料完全不出公司
- 雲端 API:依各家政策(OpenAI、Gemini 均承諾不用於訓練)
實務推薦
| 情境 | 推薦 |
|---|---|
| 中小企業 RAG 起步 | Gemini text-embedding-004(免費) |
| 中文 SEO / 內容 | OpenAI text-embedding-3-large |
| 多語跨國 | Cohere embed-v3 |
| 資料極度敏感 | BGE-M3 自架 |
| 長文(> 8K tokens 單段) | jina-embeddings-v3 |
維度選擇
維度越高 = 表達能力越強,但儲存與計算成本越高。中小企業建議:
- < 10 萬筆切片:768–1024 維足夠
- 10 萬–100 萬:1536 維
- 100 萬+:3072 維 + 維度壓縮(如 Matryoshka)
Matryoshka Embedding(俄羅斯娃娃)
2024 年的新技術——一個向量同時支援多種維度。例:3072 維的向量,截取前 512 維仍然可用(效能略降)。
好處:快速檢索用低維度、精確比對用高維度,省成本又不失準度。
OpenAI text-embedding-3 系列、Gemini 005 都支援。
實作建議
- 第一版用 Gemini text-embedding-004 起跳(免費)
- 準確度不夠時升級 OpenAI 3-large
- 規模到 100 萬筆考慮自架 BGE-M3
- 定期 Re-embedding(模型升級時要重做)
常見錯誤
- 用一個模型 embed 查詢、另一個 embed 文件(必須同一個)
- 沒對齊 normalize(cosine similarity 需要 unit norm)
- 切片太長(OpenAI 上限 8,192 tokens、Gemini 2,048)
- 沒做語言一致性檢查(混合語言效果差)