深度學習 · 自然語言處理

餘弦相似度 Cosine Similarity

比較兩個向量「像不像」,看的不是長度,而是方向——兩支箭指同一邊就相似,垂直就無關,反向就相反。

看方向不看長度cos θ−1 ~ 1RAG 檢索vs 歐氏距離

💡一句話定義

餘弦相似度(Cosine Similarity)= 用兩向量夾角的餘弦值衡量方向相似度,範圍 −1 到 1:1=同向(很相似)、0=正交(無關)、−1=反向(相反)。關鍵是只看方向、不受長度影響
cos(θ) = A · B / ( |A| × |B| )
三個角度記起來:0°→cos=1(完全相似)、90°→cos=0(完全無關)、180°→cos=−1(完全相反)。「國王」和「皇后」的向量方向接近,即使出現次數不同(長度不同),相似度依然很高。

🎮互動:拖角度看相似度

拉動兩支向量的角度長度:注意分數只隨夾角變、跟長度無關。也可以點下方預設範例(國王vs皇后、貓vs汽車、開心vs難過…)快速體驗。

📐 餘弦相似度 互動動畫

拖動向量看角度如何影響相似度

餘弦相似度 Cosine Similarity
-
30° 60°
120 90
💡 點擊預設範例快速體驗
👑👸
國王 vs 皇后
語意相近 ≈ 0.95
🐱🚗
貓 vs 汽車
語意無關 ≈ 0.0
😊😢
開心 vs 難過
語意相反 ≈ -1.0
🍎🍎
蘋果 vs 蘋果
完全相同 = 1.0
🏠🏢
房子 vs 大樓
有點相關 ≈ 0.5

🧭為什麼「只看方向」?

在高維文字/嵌入空間裡,語意相似多體現在「方向」,而向量長度常反映的是不相干的東西(例如文件長短、某個詞出現的次數)。用餘弦就能把「長度」這個雜訊排掉、只比語意方向。RAG 檢索正是靠它:把問題轉成嵌入,跟資料庫每份文件算餘弦,取最相似的幾筆餵給模型。

📏餘弦相似度 vs 歐氏距離

面向餘弦相似度歐氏距離
看什麼兩向量的方向(夾角)兩點的絕對距離
受長度影響不受影響受影響
−1~1,越大越像≥0,越小越近
適用高維文字、嵌入語意比對座標、幾何距離問題
易混:語意搜尋幾乎都用餘弦(重方向);歐氏距離重絕對距離,會被向量長度左右。

⚙️餘弦距離與正規化

餘弦距離 = 1 − 餘弦相似度:越小越像,方便當「距離」用於檢索排序。若向量已正規化(單位長度),餘弦相似度就等於內積,計算更快——這也是向量資料庫常先正規化的原因。注意:零向量沒有方向,無法比較。

自我檢測

Q1. 餘弦相似度的值域與三個關鍵角度?
−1 到 1。0°→1(同向、最相似)、90°→0(正交、無關)、180°→−1(反向、相反)。
Q2. 為什麼比較嵌入常用餘弦而非歐氏距離?
餘弦只看方向、不受長度影響;高維文字語意主要在方向,長度差異(如文件長短、詞頻)不該主導相似度判斷。
Q3. 餘弦相似度和餘弦距離差在哪?
餘弦距離 = 1 − 餘弦相似度。相似度越大越像;距離越小越像,方便當距離用於排序檢索。
Q4. 向量正規化後有什麼好處?
若向量已單位長度,餘弦相似度就等於內積,計算更快。向量資料庫常先正規化以加速最近鄰搜尋。

🎯重點整理

📝 iPAS 考點提醒

餘弦相似度是衡量兩向量語意相近的標準方法,iPAS 檢索與嵌入考點(中級科目一)。重點:看兩向量夾角的餘弦(1 為同向、0 為無關、-1 為反向),只看方向、不受向量長度影響,適合比較文件或嵌入。易混點:餘弦相似度與歐氏距離不同——前者重方向、後者重絕對距離;高維稀疏文字常用餘弦。情境:語意搜尋、RAG 檢索、推薦的相似度排序。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

餘弦相似度是什麼?

衡量兩向量方向相似度,用夾角餘弦值,範圍 −1 到 1:1 表方向相同(很相似)、0 表正交(無關)、−1 相反;常用於文字與嵌入比對。

為什麼用餘弦而非歐氏距離?

餘弦只看方向、不受向量長度影響;在高維文字與嵌入中,語意相似多體現在方向,長度差異(如文件長短)不該主導。

在哪裡會用到?

語意搜尋、推薦、文件比對、RAG 的向量檢索;把文字轉成嵌入後,用餘弦找最相似的內容。

餘弦相似度和餘弦距離差在哪?

相似度越大越像(1 為同向);餘弦距離等於 1 減相似度、越小越像,方便當距離用於檢索排序。

用前要注意什麼?

嵌入品質決定一切;若向量已正規化(單位長度),餘弦相似度就等於內積、計算更快;零向量無法比較。

🧭 相關主題

← 返回 AI 學習與考證地圖