# 講者與聽眾定位 * 講者自我介紹:Kush,自由接案,做設計、軟體、遊戲、Web、Mobile、AI * 先用舉手調查聽眾背景:開發者、資料相關、產品/商務、藝術家 * 預告內容會同時涵蓋技術面與歷史脈絡,強調 embeddings 不是新概念但很核心 # Embeddings 的直觀定義:高維空間的「地址」 ![messageImage_1765726280974](https://hackmd.io/_uploads/rJ5UOI3z-e.jpg) * Embeddings 可視為高維空間中的座標/地址 * 以 2D(x,y)與 3D(x,y,z)類比,延伸到 4D、甚至上千維 * 維度越多可表達越細的差異,像是把「描述」拆成更多可定位的細節 # Embeddings 的數學表達:向量(numbers list) * Embeddings 通常是一長串數字(向量 / vector embeddings) * 2 個數字可視為 2D 座標,3 個數字是 3D,其餘維度以此類推 * 同一組數字也可用「方向向量」角度理解:像箭頭指向空間中的位置 * 使用向量是因為電腦/GPU 擅長做矩陣與向量運算 # 範例模型與資料:Embedding Gemma * 使用 embedding gemma(提到約一兩個月前出現的 3 億參數 embedding 模型) * 輸入是一段文字(有長度上限,例如 200 tokens/words 類型的限制) * 輸出是一個高維向量(示範提到可能是 384 維) # 為何能「看見」嵌入:PCA 降維可視化 * embeddings 本質是高維(例如 384 維),人類無法直接視覺化 * 用 PCA(Principal Component Analysis)把高維壓到 2D 以便觀察 * 2D 圖不等於真實高維結構,但通常仍足夠提供直覺與趨勢 # 以電影描述建立嵌入點:只給描述、不給標籤 ![messageImage_1765726371457](https://hackmd.io/_uploads/ByHhdLhMZl.jpg) * 每個點代表一部電影的 embedding * 建 embedding 時只輸入電影「描述」,不提供片名或類型標籤 * 透過滑鼠 hover 可以看到每個點對應的電影內容 # 聚類現象:相似內容會靠近 * 觀察到不同類型電影會在 2D 空間形成區域性聚集 * 一側像動作片群(例如 Lethal Weapon、Fast Five、Die Hard 類型) * 另一側像科幻片群(例如 Arrival、2001、Interstellar 類型) * 中間區域會出現混合特徵的作品,邊界不明顯反而合理 # 顏色標註的意義:模型沒看過標籤也會自發分群 ![messageImage_1765726410334](https://hackmd.io/_uploads/r1n0dI2Gbg.jpg) * 顏色是講者事先知道資料集類別後手動上色(dark comedy / action / sci-fi) * 模型沒有被餵 genre,也沒被餵片名,仍能僅靠描述形成相近群集 * 聚集的原因被解釋為描述詞彙與語意線索(例如 space/time、future/technology、incompetence/accidents 等) # 用可視化做資料分析:邊界與軸向直覺 * 透過點雲分布可推測資料的「連續光譜」與邊界模糊處 * 例子提到可能存在類似「動作 ↔ 科幻」的方向性差異 * 也可能存在「黑色幽默 ↔ 科幻」之類的另一條差異軸 * 有助於理解資料集的結構、離群點、過度重疊的類別 # Embedding 模型的運作特性:已訓練、可重複、可離線索引 * embedding model 是訓練完成的權重檔(frozen),下載後可離線跑 * 同一段文字每次輸入都會得到同一個向量(deterministic) * 可用同一模型離線把大量資料轉向量做索引 * 查詢時用同一模型把 query 轉向量,放回同一空間做比對與檢索 --- # 這張視覺化在說什麼 ![messageImage_1765726468957](https://hackmd.io/_uploads/BkQGYI3M-l.jpg) * 這是一組文字 embedding 的 2D 投影圖,看起來有明顯的「上下」與「左右」分佈軸 * 圖上像有三個「盆地/聚落」彼此拉開距離,代表語意上差異大的一群被分得很遠 * 模型訓練概念是把相似的拉近、把不相似的推遠,所以聚落分離很直觀 # 三個聚落對應的語意群 ![messageImage_1765726495612](https://hackmd.io/_uploads/ryRmYL3f-x.jpg) * 左側聚落:園藝相關(gardening books、compost thermometer、plant guide、mulch 等) * 中間偏左聚落:木工/工坊工具(jigsaw、belt sander、wood oil、miter saw 等) * 右側聚落:廚房工具(food processor、oven、slow cooker 等) * 事後加上的顏色只是標籤輔助,核心是 embedding 自己把類別拉開 # 中間區域與「模糊/可跨域」物件 * 中間的點常是跨類別都合理的物件,例如 gloves、apron * 即使你把 gloves 標成園藝,它也可能同時適用廚房或木工 * 這裡可以用來找「可能標錯」或「本質多用途」的項目 # 用 cosine similarity 做相似度 ![messageImage_1765726600514](https://hackmd.io/_uploads/Sk59tL2fZg.jpg) * embedding 可想成高維空間的向量 * cosine similarity 用來衡量兩個向量方向是否接近,越接近代表語意越相似 * 查詢時把 query 也轉成 embedding,再跟資料庫裡所有向量算相似度取前 k 名 # 為什麼視覺上的最近不一定是真的最近 * 圖是 PCA 降維後的 2D 投影,只是高維關係的近似 * 在高維裡最近的鄰居,投影到 2D 可能被「壓扁」或位置看起來分散 * 聚落邊緣/角落通常比較保留高維結構,所以 2D 看起來的鄰近更可信 * 中間區域因為投影資訊損失更大,2D 直覺更容易誤判 # 查詢落點會隨字詞逐步「導航」 * query 每加一個詞就增加語意約束,embedding 的落點會在空間中移動 ![messageImage_1765726689520](https://hackmd.io/_uploads/Hy-g9U3zWe.jpg) * 例如「precise slicing」可能更靠近木工語境 ![messageImage_1765726662795](https://hackmd.io/_uploads/H1vAYUnfZl.jpg) * 改成「vegetables」會把落點推向廚房語境 * 這展示了語意搜尋如何根據描述把 query 放到對應的語意區域 # 以商品/索引資料做語意檢索的例子 * 把所有商品描述先做 embedding 並建立向量索引 * 使用者輸入「tool for slicing and dicing vegetables」 * 即使沒有完全同字面描述的商品,也能找出語意相近的項目 * 可能回傳 kitchen shears、vegetable slicer、shredder 等相近工具 # kNN 取回與後續再排序 * 常見流程是先用向量相似度取大量候選(kNN) * 再用其他訊號做 rerank(例如規則、熱門度、價格、關鍵字匹配、學習式排序) * 最後裁切成較小集合再展示給使用者 # 使用者回饋做相關性調整 * 使用者可標記哪些結果「相關/不相關」 * 系統可利用回饋把 query 向量往更相關的方向推、遠離不相關方向 * 這類互動式相關性回饋能讓下一輪檢索結果更貼近使用者意圖 --- # ![image](https://hackmd.io/_uploads/B1sic82zWx.png) # 你想補充的主軸 * 你想用「embedding / 向量空間」把 IR(資訊檢索)、RAG、以及 Transformer/LLM 的運作串成同一條線 * 核心論點是:本質概念沒變,改變的是「向量怎麼被產生」與「規模化到可用」 # 1960s:向量空間模型的直覺 * 把一篇文件表示成一個很長的數字清單(向量) * 維度通常對應詞彙表中的每個詞 * 文件向量的值用「詞在文件中出現的次數」構成 * 查詢(query)也用同樣方式變成向量 * 透過 cosine similarity 比較 query 向量與文件向量,得到相似度並排序 # 從詞頻到 TF-IDF:修正天真計數的偏差 * 單純詞頻會被文件長度影響,長文件容易因為總詞量大而出現較高計數 * TF-IDF 引入「詞在全體文件中有多常見」的概念,降低常見字的影響、凸顯更具區辨性的詞 * 這類方法把「相關性」用較穩健的統計權重表示,而不是只看 raw count # 演進到 BM25:傳統檢索仍然實用 * BM25 可視為 TF-IDF 的一個成熟化版本 * 仍基於詞項匹配與權重,但用更好的正規化與飽和曲線處理詞頻 * 即使在沒有語意向量(semantic search)的情境下,BM25 依然非常能打 # 80s/90s:更接近「語意」但仍偏代數/統計 * 你提到像 LSI 這類方法,把詞項共現關係用矩陣分解等方式壓縮到較低維空間 * 方向上是往「不只看字面匹配,而是捕捉潛在語意結構」前進 * 但仍跟後來的深度學習式 embedding 有落差 # 進入深度學習:向量不再靠手工計數 * 早期向量是「人定義的特徵」:數詞頻、做加權 * 後期向量是「模型學出來的表徵」:丟文字進去、吐出 embedding * 差別在於從顯式規則轉成隱式學習,但仍保留「在向量空間中做相似度/關聯」的框架 # embedding 與檢索:你想點出的連結 * RAG 的檢索本質就是把 query 與文件都映射到同一個向量空間,再做近鄰搜尋 * 早期是用 sparse vector(大多為 0 的詞袋向量) * 現代常用 dense vector(維度較小但每一維都有資訊的語意向量) # Transformer/LLM 為什麼離不開 embedding * 模型會先把輸入文字切成 token * 每個 token 會被映射成 embedding 向量,作為後續計算的基本表示 * 多層計算後會得到更新過的向量表徵,再投影回詞彙空間成為下一個 token 的機率分佈 # 生成機制:逐 token 的取樣與反覆回饋 * 解碼器式模型會「每次產生一個 token」 * 產生後把新 token 接回輸入,再跑下一步產生下一個 token * 你強調這是一種迭代式的機率取樣流程,而不是人類式的推理流程 # cosine vs dot product 與「最近鄰」直覺 * 你用「找最近鄰」來形容挑下一個 token 的概念 * 檢索常談 cosine similarity * LLM 內部大量用 dot product 進行相似度型的計算(例如注意力與投影後的分數) # temperature:你對「創造力」的解釋 * temperature 低時更傾向選最高機率的 token,輸出更一致 * temperature 高時會增加取樣多樣性,讓每次結果更不一樣 * 你把「看起來更有創意」定位成「採樣策略造成的分歧」,不是模型突然多了靈感 # 你對 agents 與「會思考」敘事的立場 * 你對把 LLM 描述成能自我驗證、能解決世界問題的說法抱持懷疑 * 你把模型定位為依機率生成 token 的系統 * 你也提到停止生成、對齊等行為很大程度依賴後處理或訓練後調整,而非模型內建的「思考終點」 --- # Terminology * 向量嵌入(Vector Embedding):將文字、圖片或其他資料轉換為數值向量以便計算與比較 * 高維空間(High-dimensional Space):由數百或數千個維度組成的數學空間,用來表示複雜特徵 * 向量(Vector):由一組有序數值組成的數學結構,用於表示資料點 * 維度(Dimension):向量中每一個數值所對應的獨立特徵軸 * 語意相似度(Semantic Similarity):衡量兩段資料在意義層面上接近程度的指標 * 餘弦相似度(Cosine Similarity):利用向量夾角計算相似度的常見方法 * 歐氏距離(Euclidean Distance):衡量兩個向量在空間中直線距離的方式 * 特徵表示(Feature Representation):將原始資料轉換為可計算特徵的過程 * 特徵空間(Feature Space):所有特徵向量所存在的抽象空間 * 嵌入模型(Embedding Model):專門用來生成向量嵌入的機器學習模型 * 預訓練模型(Pre-trained Model):已在大量資料上訓練完成、可直接使用的模型 * 凍結權重(Frozen Weights):在推論階段不再更新參數的模型權重 * 決定性輸出(Deterministic Output):相同輸入必定產生相同輸出的特性 * 主成分分析(Principal Component Analysis, PCA):用於降維與資料可視化的統計方法 * 降維(Dimensionality Reduction):將高維資料壓縮為低維表示的技術 * 資料可視化(Data Visualization):將數據轉換為圖形以利人類理解 * 聚類(Clustering):根據相似度將資料自動分組的技術 * 語意聚類(Semantic Clustering):依據語意相似性形成的資料群集 * 向量索引(Vector Indexing):為大量向量建立可快速搜尋的結構 * 向量資料庫(Vector Database):專門儲存與查詢向量資料的資料庫系統 * 近鄰搜尋(Nearest Neighbor Search):尋找與目標向量最接近資料點的方法 * 近似最近鄰(Approximate Nearest Neighbor, ANN):以效率為優先的近鄰搜尋演算法 * 語意搜尋(Semantic Search):根據意義而非關鍵字進行搜尋的技術 * 資訊檢索(Information Retrieval):從大量資料中找出相關資訊的領域 * 表示學習(Representation Learning):自動學習資料有效表示形式的機器學習方法 * 分佈式表示(Distributed Representation):以多維向量共同表示概念的方式 * 語言模型(Language Model):用於理解與生成自然語言的模型 * 詞向量(Word Embedding):將單字映射到向量空間的早期嵌入技術 * 句向量(Sentence Embedding):表示整個句子語意的向量形式 * 文件向量(Document Embedding):表示長文本或文件語意的向量 * 語境感知(Context Awareness):模型理解詞語在不同上下文中含義的能力 * 特徵抽取(Feature Extraction):從原始資料中擷取有用資訊的過程 * 向量正規化(Vector Normalization):將向量縮放至固定範圍以利比較 * 空間距離度量(Distance Metric):用來衡量向量間差異的數學函數 * 語意空間(Semantic Space):向量嵌入所構成、反映意義關係的抽象空間 * 模型推論(Model Inference):使用已訓練模型產生預測或輸出的過程 * GPU 加速(GPU Acceleration):利用圖形處理器提升向量計算效能 * 矩陣運算(Matrix Operations):對矩陣與向量進行的大規模數學計算 * 表徵能力(Representation Capacity):模型捕捉複雜語意特徵的能力 * 相似性搜尋(Similarity Search):依據向量距離尋找相似資料的技術 * 資料索引化(Data Indexing):將資料組織成可快速查詢結構的過程 * 向量化(Vectorization):將非數值資料轉換為向量形式的處理步驟 * 語意邊界(Semantic Boundary):不同語意群集之間的過渡區域 * 模型維度大小(Embedding Dimension Size):嵌入向量中維度的數量設定 * 語意表示穩定性(Semantic Stability):相同概念在向量空間中位置一致的特性 * 詞嵌入(Embedding):將文字轉換為高維向量以保留語意關係,便於比較與檢索 * 向量空間(Vector Space):以向量表示資料的數學空間,距離或角度可對應語意相似度 * 高維空間(High-dimensional Space):維度數量很高的特徵空間,用於承載更細緻的語意結構 * 語意地圖(Semantic Map):以空間位置呈現語意關係的表示方式,近者語意相近、遠者相異 * 相似度學習(Similarity Learning):透過訓練讓相似樣本靠近、不同樣本遠離的學習策略 * 對比學習(Contrastive Learning):使用正負樣本對進行訓練,強化語意可分性與聚合性 * 聚類(Clustering):在無監督或弱監督下將資料依相似性分群的技術 * 類別標籤(Label):用於指示資料所屬類別的標註資訊,常用於監督式學習 * 離群值偵測(Outlier Detection):找出與主要分佈不一致的資料點,用於偵錯或異常分析 * 錯標偵測(Mislabel Detection):利用模型或統計方法找出可能被標錯類別的資料 * 主成分分析(PCA, Principal Component Analysis):線性降維方法,保留最大變異方向以便視覺化或壓縮 * 降維(Dimensionality Reduction):將高維資料映射到較低維度以利可視化、去噪或加速計算 * 投影(Projection):把高維點映射到低維子空間的操作,可能導致距離關係失真 * 資訊損失(Information Loss):降維或壓縮時遺失部分結構訊息,影響鄰近關係判讀 * 嵌入維度(Embedding Dimension):嵌入向量的維數,影響表徵容量與計算成本 * 向量正規化(Vector Normalization):將向量縮放至固定範數(常為 1),便於使用角度衡量相似性 * 餘弦相似度(Cosine Similarity):用向量夾角衡量相似度,方向越一致相似度越高 * 內積(Dot Product):兩向量相乘求和的運算,常用於相似度與注意力計算 * 距離度量(Distance Metric):衡量兩點差異的函數,如歐氏距離、餘弦距離 * 歐氏距離(Euclidean Distance):以直線距離衡量差異的常用度量,適合具幾何意義的空間 * 近鄰搜尋(Nearest Neighbor Search):在向量集合中找出與查詢向量最接近的資料點 * K 近鄰(KNN, K-Nearest Neighbors):找出前 K 個最近鄰,可用於分類、推薦或檢索 * K 最近鄰查詢(k-NN Query):向量資料庫常用查詢,回傳距離最小的 K 筆結果 * 向量檢索(Vector Search):以向量相似度為核心的搜尋方式,支援語意層級比對 * 語意搜尋(Semantic Search):以語意相似而非關鍵字完全匹配的搜尋技術 * 查詢嵌入(Query Embedding):將使用者查詢轉成向量以便與索引向量計算相似度 * 索引(Index):為加速搜尋而建立的資料結構或預處理結果 * 向量索引(Vector Index):針對向量相似搜尋建立的索引結構,加速近鄰查詢 * 近似最近鄰(ANN, Approximate Nearest Neighbor):以可接受誤差換取高效率的近鄰搜尋方法 * 召回(Recall):檢索流程中先取回較多候選的階段,重點在不漏掉相關項 * 候選集(Candidate Set):召回階段取回的候選結果集合,供後續排序精煉 * 重排序(Reranking):對候選集使用更精準但較昂貴的模型或特徵重新排序 * 多階段檢索(Multi-stage Retrieval):先召回再重排序的流程設計,兼顧速度與精度 * 相關性(Relevance):結果與查詢需求的匹配程度,常作為排序與評估核心 * 排序模型(Ranking Model):根據特徵或語意訊號決定結果順序的模型 * 特徵工程(Feature Engineering):設計可提升模型或排序表現的輸入特徵 * 互動式回饋(Relevance Feedback):使用者標記相關/不相關後,系統調整查詢或排序 * Rocchio 演算法(Rocchio Algorithm):以相關與不相關文件向量調整查詢向量的經典回饋方法 * 查詢擴展(Query Expansion):加入同義詞或相關詞以改善召回與語意覆蓋 * 潛在語意空間(Latent Semantic Space):模型學得的隱含語意表徵空間,可用來導覽與檢索 * 語意漂移(Semantic Drift):查詢經多次擴展或回饋後偏離原意,導致結果品質下降 * 類間分離(Inter-class Separation):不同類別在嵌入空間中的可分性,距離越遠越易區分 * 類內緊密(Intra-class Compactness):同類樣本在嵌入空間中聚集程度,越緊密越一致 * 視覺化失真(Visualization Distortion):高維資料投影至 2D/3D 時產生的結構扭曲現象 * 局部鄰域(Local Neighborhood):某點周圍的近鄰區域,用於理解局部結構與推薦 * 角度距離(Angular Distance):以向量夾角作為距離概念,常與餘弦相似度對應 * 相似度閾值(Similarity Threshold):判定是否相似的門檻值,用於過濾或分類決策 * 向量量化(Vector Quantization):將連續向量近似為離散碼以節省儲存並加速搜尋 * 向量空間模型(Vector Space Model, VSM):將文件/查詢表示成向量,用相似度衡量相關性 * 詞袋模型(Bag-of-Words, BoW):忽略詞序,只保留詞出現與否或次數的文本表示法 * 詞彙表(Vocabulary):模型或系統可辨識的詞/子詞集合,決定向量維度或 token 集合 * 稀疏向量(Sparse Vector):大多數維度為 0 的向量表示,常見於詞袋/TF-IDF * 向量維度(Vector Dimension):向量的長度/特徵數,對應詞彙表大小或嵌入維度 * 特徵工程(Feature Engineering):人工設計可用特徵(如詞頻、n-gram)以供模型使用 * 詞頻(Term Frequency, TF):某詞在文件中出現的次數或比例,衡量文件內重要性 * 逆文件頻率(Inverse Document Frequency, IDF):詞在整體語料中越常見,權重越低的調整項 * TF-IDF(TF–IDF):結合 TF 與 IDF 的權重方案,用於資訊檢索與關鍵詞抽取 * 文件長度正規化(Document Length Normalization):調整長文件詞頻偏高造成的檢索偏差 * 餘弦相似度(Cosine Similarity):以向量夾角衡量相似度的指標,常用於檢索與聚類 * 點積(Dot Product):向量內積,常在嵌入空間中作為相似度或打分基礎 * 排序函數(Ranking Function):將文件依與查詢的相關性打分並排序的計算方法 * 機率相關模型(Probabilistic Relevance Model):以機率觀點建模「文件與查詢相關」的框架 * BM25(BM25):經典檢索排名公式,基於 TF 與文件長度正規化的改良 * 相關回饋(Relevance Feedback):利用使用者標記相關/不相關文件來改進檢索結果 * 查詢擴展(Query Expansion):加入同義詞/相關詞以提升召回率的檢索技巧 * 同義詞消歧(Word Sense Disambiguation, WSD):判定詞在上下文中的正確語義以避免誤配 * 潛在語義分析(Latent Semantic Analysis, LSA):以矩陣分解找出隱含語義結構的技術 * 潛在語義索引(Latent Semantic Indexing, LSI):將 LSA 用於資訊檢索以改善語義匹配 * 奇異值分解(Singular Value Decomposition, SVD):常用於 LSA/LSI 的矩陣分解方法 * 分散式表示(Distributed Representation):以低維稠密向量表徵語義的表示方式 * 詞嵌入(Word Embedding):將詞映射到連續向量空間,使語義相近者距離更近 * 句向量(Sentence Embedding):將整句映射為向量以便做語義比對與檢索 * 文件嵌入(Document Embedding):將整篇文件表示為向量以進行語義檢索與分類 * 稠密向量(Dense Vector):大多數維度非 0 的向量表示,常見於深度學習嵌入 * 語義相似度(Semantic Similarity):衡量語義接近程度而非字面重合的相似性 * 分布假說(Distributional Hypothesis):詞義可由其上下文分布推得的語言學假設 * 連續詞袋模型(CBOW):用上下文預測中心詞的詞嵌入訓練方法(word2vec 之一) * Skip-gram(Skip-gram):用中心詞預測上下文的訓練方法,擅長學稀有詞表示 * 負採樣(Negative Sampling):用少量負例近似 softmax,降低訓練成本的技巧 * 階層式 Softmax(Hierarchical Softmax):以樹狀結構加速大詞彙 softmax 的方法 * GloVe(Global Vectors, GloVe):融合全域共現統計的詞嵌入方法 * 共現矩陣(Co-occurrence Matrix):統計詞與詞在窗口內共同出現次數的矩陣 * 近鄰搜尋(Nearest Neighbor Search):在向量空間中找最相近向量的檢索程序 * 近似近鄰(Approximate Nearest Neighbor, ANN):以近似方式加速大規模近鄰搜尋 * 向量資料庫(Vector Database):專門儲存嵌入並支援相似度搜尋的資料庫系統 * 語義檢索(Semantic Search):以嵌入相似度找相關內容,而非純關鍵字匹配 * 混合檢索(Hybrid Retrieval):結合 BM25 與向量檢索以兼顧精確與語義召回 * 檢索增強生成(Retrieval-Augmented Generation, RAG):先檢索再生成以降低幻覺並提升可引用性 * 上下文視窗(Context Window):模型一次可處理的 token 範圍,影響可用資訊量 * 分詞(Tokenization):將文字切成 token(字、子詞、符號)以供模型處理 * Token(Token):模型運算的基本符號單位,可能是字、子詞或標點 * 子詞分詞(Subword Tokenization):用子詞單位減少 OOV,提升詞彙覆蓋率的方法 * BPE(Byte Pair Encoding, BPE):常見子詞分詞算法,迭代合併高頻符號對 * Transformer(Transformer):以注意力為核心的序列建模架構,支撐現代大型語言模型 * 自注意力(Self-Attention):序列內部元素彼此計算關聯權重以整合資訊的機制 * 多頭注意力(Multi-Head Attention):以多組注意力頭並行捕捉不同關係型態的設計 * 查詢鍵值(Query-Key-Value, QKV):注意力計算中的三組投影向量,用於打分與加權求和 * 位置編碼(Positional Encoding):為序列注入順序資訊以彌補注意力的置換不變性 * 解碼器式模型(Decoder-only):僅用解碼器堆疊做自回歸生成的架構(如 GPT 類) * 編碼器式模型(Encoder-only):輸出表示用於理解任務的架構(如 BERT 類) * 編碼器解碼器(Encoder–Decoder):先編碼再解碼生成的序列到序列架構(如 T5 類)