電腦其實不懂文字,它只懂數字!
搜尋「蘋果」只能找到包含「蘋果」這個詞的文件
找不到「iPhone」「水果」等相關內容
搜尋「蘋果」能找到語意相關的內容
能找到「水果」「Apple」「iPhone」等
向量嵌入就是把文字轉換成「一串數字」,讓電腦能夠計算。
想像所有文字都被放進一個「多維空間」裡...
這些詞彼此距離很近
這些詞彼此距離很近
向量距離越近 = 語意越相似
向量距離越遠 = 語意越不同
支援 50+ 種語言,包含中文、英文、日文等
能理解句子的意思,不只是字面比對
約 400MB,平衡了效能與精確度
處理一個句子只需幾十毫秒
我們使用 餘弦相似度(Cosine Similarity) 來計算向量之間的相似程度。
計算兩個向量的「夾角」:
相似度 0.95 = 非常相關
相似度 0.70 = 有些相關
相似度 0.30 = 可能相關
相似度 < 0.30 = 不太相關
「Flask 是什麼?」→ [0.12, -0.34, ...]
與知識庫中每筆資料的向量計算相似度
依相似度排序,篩選超過門檻的結果
取前 3 筆最相關的內容給 AI 參考
# 1. 載入模型
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
# 2. 將問題轉換成向量
question = "什麼是 Flask?"
question_vector = model.encode(question)
# 3. 計算與知識庫的相似度
from sklearn.metrics.pairwise import cosine_similarity
similarities = cosine_similarity([question_vector], knowledge_vectors)
# 4. 找出最相似的內容
top_indices = similarities[0].argsort()[-3:][::-1] # 取前3筆
| 搜尋「如何學 Python」 | 關鍵字搜尋 | 向量搜尋 |
|---|---|---|
| 「Python 入門教學」 | ✅ 有 Python | ✅ 語意相似 |
| 「程式設計新手指南」 | ❌ 沒有 Python | ✅ 語意相似 |
| 「學習寫程式的方法」 | ❌ 沒有 Python | ✅ 語意相似 |
| 「Python 蛇類介紹」 | ✅ 有 Python | ❌ 語意不同 |
「如何建立網頁應用程式?」
「Flask 網站部署教學」
「前端與後端的差異」
把文字轉成數字向量,讓電腦能計算語意
計算向量夾角,判斷語意相似程度
理解意思而非字面,找到真正相關的內容
向量搜尋是 RAG 技術的靈魂所在
Part 4:系統架構與程式碼解析!