嵌入模型怎麼選:維度、語言與成本的三角
嵌入模型換一次就要重建整個索引,所以第一次要選對。這篇整理實際的挑選順序。
嵌入模型的選擇成本很高:換模型等於重算全部向量、重建索引,資料量大時是以小時計的作業。
先確認語言支援
很多榜單第一名的模型是英文導向,處理繁體中文時表現會明顯下滑。務必用你自己的資料做小規模測試,不要看綜合榜單。
維度不是越高越好
- 維度越高,儲存與比對成本越高,索引記憶體佔用線性上升。
- 多數檢索任務在 768 至 1024 維就接近飽和。
- 部分模型支援維度截斷,可以先用高維建索引,之後再降維測試。
用命中率做決策
# 準備 50 組 (問題, 正確片段id)
def hit_rate(model, cases, k=5):
hit = 0
for q, gold in cases:
got = [c.id for c in search(model, q, top_k=k)]
hit += (gold in got)
return hit / len(cases)拿兩三個候選模型跑同一組題目,數字會直接告訴你答案。這比讀十篇評測文章快得多,也準得多。
建索引時把「模型名稱與版本」寫進 metadata。日後排查「為什麼舊資料查不到」時,這個欄位能省下大量時間。