在自然語言處理 (NLP) 與 AI 應用中,文字轉向量 (Text Embedding) 是非常核心的一步。它可以將一段文字轉換成數字化的向量表示,方便電腦進行 相似度計算、語意檢索 (RAG)、推薦系統 等任務。
這篇文章會帶你了解:
- 為什麼要做文字轉向量
- 常用的向量模型有哪些
- 如何用 OpenAI API 生成向量
- 如何用 開源模型 (Sentence Transformers, BGE) 本地生成向量
- 模型選擇建議
1. 為什麼要將文字轉向量?
電腦本質上只能理解數字,像「我愛知識圖譜」這句話,模型需要將它轉換成一組數字向量,例如:
[0.12, -0.08, 0.33, ...]
這樣一來:
- 不同句子之間就能比較「語意距離」
- 可以拿來做 相似度檢索(例如搜尋引擎、問答系統)
- 可以用在 推薦系統(找出語意相近的內容)
2. 常用的向量模型
目前主流有兩大類:
✅ OpenAI (雲端 API)
- text-embedding-3-small → 1536 維,速度快、便宜,效果比舊版好
- text-embedding-3-large → 3072 維,更高精度,適合需要極致語意理解的場景
✅ 開源模型 (本地部署)
- Sentence Transformers (SBERT):
all-MiniLM-L6-v2
(小巧快速,英文檢索常用) - BGE (BAAI General Embedding):
BAAI/bge-base-zh
(中文檢索表現優秀) - E5 系列:
intfloat/multilingual-e5-base
(多語言支援)
3. OpenAI 文字轉向量範例
先安裝套件:
pip install openai
Python 實作:
from openai import OpenAI
client = OpenAI(api_key="your_api_key_here")
text = "我愛知識圖譜與自然語言處理"
# 使用最新 embedding 模型
response = client.embeddings.create(
model="text-embedding-3-large", # 或 "text-embedding-3-small"
input=text
)
vector = response.data[0].embedding
print(len(vector)) # 向量維度
print(vector[:10]) # 前10個數值
輸出結果:

輸出結果:
text-embedding-3-small
→ 向量長度 = 1536text-embedding-3-large
→ 向量長度 = 3072
4. 開源模型 (本地轉向量)
如果你想在本地跑,不依賴雲端,可以用 HuggingFace 的 sentence-transformers。
安裝:
pip install sentence-transformers
Python 範例:
from sentence_transformers import SentenceTransformer
# 輕量英文模型
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2')
# 中文檢索建議用 BGE
# model = SentenceTransformer('BAAI/bge-base-zh')
text = "我愛知識圖譜與自然語言處理"
vector = model.encode(text)
print(len(vector)) # 向量維度
print(vector[:10]) # 前10個數值
常見維度:
all-MiniLM-L6-v2
→ 384 維bge-base-zh
→ 768 維bge-large-zh
→ 1024 維
5. 模型選擇建議
- 快速檢索 / 成本敏感 →
text-embedding-3-small
(1536 維) - 高精度需求 →
text-embedding-3-large
(3072 維) - 中文專案 / 本地部署 →
BAAI/bge-base-zh
- 多語言場景 →
multilingual-e5-base
🔚 總結
文字轉向量是 RAG (檢索增強生成)、語意搜尋 的基石。
- 如果你要快速上手,直接用 OpenAI
text-embedding-3-small
。 - 如果你要本地化,推薦 BGE 中文模型 或 SBERT。
- 如果你要高精度,選
text-embedding-3-large
。
推薦hahow線上學習python: https://igrape.net/30afN
近期留言