你在公司文件裡搜尋:
「筆電沒電怎麼辦?」
但文件真正寫的是:
「Notebook battery is depleted. Please connect the charger.」
如果系統只會找一模一樣的字,可能一篇都找不到。
因為「筆電沒電」和「battery is depleted」字面完全不同,意思卻很接近。
那電腦到底怎麼比較「意思」?
一個很重要的方法,就是嵌入(Embedding)。
先想像一張「意思地圖」
假設世界上有一張超大的地圖,但上面放的不是台北、東京、巴黎,而是句子和概念。
「柴犬」可能在「狗」附近。
「黃金獵犬」也在那一區。
「貓」可能稍微遠一點,但還是在「動物」這一大片區域。
「所得稅申報」就會離得很遠。
這張地圖不是人手畫的,而是模型根據大量資料學出來的一種數值表示。
Embedding 做的事情,可以先理解成:
把文字、圖片或其他內容,轉成一串能拿來比較的數字。
這串數字叫 Vector
Embedding 的輸出通常是一個向量(Vector)。
名字聽起來很數學,但入門時先把它想成「一組座標」就可以。
例如,為了方便理解,我們假裝只有三個數字:
「柴犬」 → [0.82, 0.14, 0.63]
「黃金獵犬」 → [0.79, 0.18, 0.61]
「所得稅」 → [0.05, 0.91, 0.12]
真實的 Embedding 通常不只三個數字,可能有數百甚至更多個數值。
每一個位置可以稱為一個維度(Dimension)。
但要注意:你通常不能直接說「第 17 維就是狗、第 23 維就是金融」。這些數字是模型共同學出的表示,不是人類事先幫每一格貼好標籤。
為什麼變成數字就有用?
因為電腦非常擅長比較數字之間的距離或方向。
如果兩段內容的向量很接近,我們就可以把它當成一個訊號:
它們的語意可能也很接近。
這種比較常被用在語意相似度(Semantic Similarity)。
例如:
「如何重設密碼?」
和
「我忘記登入密碼,要怎麼重新設定?」
字面不完全相同,但 Embedding 後通常應該比「如何申請公司停車位?」更接近。
這和前面學過的 Token 不一樣
如果忘了,可以回看 Lesson 004:Token 是什麼?。一句話 recap:Token 是模型處理文字時使用的小單位,文字會先被拆成一小塊一小塊來處理。
Embedding 則是在做另一件事:
把一段內容轉成可比較的數值表示。
所以不要把「Token」和「Embedding」當成同義詞。
一段文字可能先被拆成 Token,再經過模型處理,最後得到可以代表整段內容的 Embedding。
Embedding 不是把一句話壓縮成一個關鍵字
例如:
「我想找一間可以帶狗、安靜、離捷運近的咖啡店。」
如果只抽一個關鍵字「咖啡店」,很多條件都不見了。
Embedding 的目的不是簡單抓一個字,而是讓整段內容的特徵被編碼進一串數字裡。
當然,它也不是完美保存所有細節。
兩段文字很接近,不代表每一個事實都一樣。
例如:
「今天東京下雨。」
和
「今天大阪下雨。」
語意結構非常像,但城市不同。
所以 Embedding 很適合拿來找「相關內容」,卻不能單靠相似度就判定兩句話完全等價。
最常見的用途之一:語意搜尋
傳統關鍵字搜尋比較像:
「有沒有出現我輸入的這些字?」
語意搜尋則更像:
「有沒有內容的意思跟我現在問的東西很接近?」
例如使用者搜尋:
「公司電腦被鎖住了」
文件裡可能寫:
「帳號連續登入失敗後,裝置會進入鎖定狀態。」
兩邊沒有完全一樣的句子,但 Embedding 可以幫系統把它們放到相近的位置,再找出相關文件。
圖片也可以有 Embedding
Embedding 不只屬於文字。
圖片、聲音、影片、商品、使用者偏好,都可以被模型轉成向量表示。
例如電商可以把商品圖片轉成 Embedding,讓你上傳一張米白色帆布包,再去找「看起來相似」的商品。
多模態系統甚至可能把不同資訊放進可比較的表示空間。
如果忘了什麼是多模態,可以回看 Lesson 012:多模態 AI 是什麼?。一句話 recap:多模態 AI 能在同一個任務裡處理文字、圖片、聲音、影片等不同形式的資訊。
那到底怎麼判斷兩個向量近不近?
有很多數學方法。
你之後可能會看到餘弦相似度(Cosine Similarity)、歐幾里得距離(Euclidean Distance)或點積(Dot Product)。
這一篇先不用背公式。
只要先抓住直覺:
把內容變成向量後,系統就能用數學方式比較它們的距離或方向,找出最接近的候選。
不同 Embedding 模型可能適合不同的比較方法,所以實作時不能隨便混用模型、向量和距離設定。
Embedding 不等於生成答案
這點很重要。
Embedding 模型通常不是拿來直接回答:
「台北明天天氣如何?」
它的主要工作是把內容轉成向量。
真正負責產生回答的,可能是前面談過的語言模型。
你可以把它們想成兩種不同職位:
- Embedding 模型:負責把資料放進意思地圖。
- 語言模型:負責理解需求並產生內容。
之後你會看到這兩種能力常常一起工作。
下一步:有一百萬筆向量,放哪裡?
現在問題來了。
假設公司有 50 萬份文件,每一段都做成 Embedding。
你不可能每次搜尋都把所有向量一個一個慢慢比到底。
我們需要一種更適合保存、索引和搜尋向量的系統。
這就會接到下一篇:向量資料庫(Vector Database)。
今天只要記住一句話
Embedding 就是把內容轉成一串數字,讓電腦可以在一個數值空間裡比較『哪些東西意思比較接近』。
留言
有想法、疑問或想補充的地方,都可以留在這裡。
還沒有留言,來當 1F 吧。