Skip to content

建立 2026-09-15 更新 2026-09-15

嵌入

嵌入(embedding)把一段文字編成一串數字(向量)。訓練目標是:意思接近的句子,向量也比較近。RAG 靠這個性質,才能用「問題的向量」去找「文件段落的向量」。

為什麼不用關鍵字就好

關鍵字搜尋(例如 BM25)很擅長對到專有名詞、錯誤代碼、法規條號。但使用者常換句話說:問「怎麼退費」對得到「退款政策」,中間沒有同一個詞。嵌入比的是語意距離,不是字面重疊。

實務上兩者常一起用,稱為混合搜尋(hybrid search),見 重排序與混合搜尋

同一套模型才比得了

查詢與文件必須用同一個嵌入模型編成同一維度。換模型就要整庫重算。常見選擇:

  • 雲端 API:OpenAI text-embedding-3-small / -large、Gemini Embedding、Cohere Embed。
  • 開源:sentence-transformers 系列(例如 all-MiniLM-L6-v2 入門、bge / e5 中文或檢索特化)。

維度愈高、模型愈大,通常語意更細,也更貴、更慢。入門用小模型即可驗證管線,再依評估結果升級。

距離怎麼算

向量庫多半用餘弦相似度(cosine similarity)或內積。餘弦看方向是否接近,對向量長度較不敏感,RAG 很常用。你幾乎不必自己實作公式,選定套件後,檢索 API 會回傳分數與文件。

注意:不同模型的分數不能直接互相比。0.82 在 A 模型可能很好,在 B 模型只是普通。要用同一模型、同一套評估集來看相對高低。

和切塊的關係

嵌入的是「塊」,不是整本書。塊太長,向量會把很多主題混在一起,問題只碰到其中一句就可能被稀釋;塊太短,缺少上下文,生成時模型看不懂。切塊策略見 切塊

下一頁:切塊。相關畫面可看 LangChain RAG From Scratch: Indexing