本筆記由 Gemini 協助撰寫,人工驗證。
本章節做兩件事:名詞解釋、RAG 的由來和實作過程。其中 ChatGPT 和 API,因為只是單純的介紹,筆記中就不提了。
首先簡單介紹 LLM(大型語言模型),說明訓練三階段(預訓練、微調、強化學習)。
LLM 的最大問題是「權杖限制」(Token Limit,可視為上下文視窗 Context Window 內容)超過限制時,較早的對話內容就會被「遺忘」。
RAG 就是為了解決這個問題的技術,講師將 RAG 歸納為「函式呼叫 (Function Calling)」的一種特定應用,即 LLM 透過 API 呼叫外部工具的能力。
有人說:Agent 正在「取代」RAG。這樣說可能更合適:Agent 正在「包含」並「整合」RAG,讓 RAG 成為 Agent 系統中的一個核心工具。
接著簡介 RAG 的核心機制:
-
嵌入 (Embeddings): 使用「嵌入模型」將文件轉化為語意向量。
-
向量資料庫 (Vector Database): 語意「相似性搜尋」來找到相關區塊 (Chunks)。
-
Top-K: 解釋 RAG 如何取回 K 個最相關的結果。
最後說明 “Test Time Compute”(類比於「思維鏈」chain of thought)的「慢思考」概念,用於處理數學和邏輯問題,並總結了 RAG 與其差異。
一、 LLM (大型語言模型)
1. LLM 的簡化比喻
-
參數檔案 (Parameter File): 講師比喻為一個 “Zip 檔”。這是模型的核心,儲存了所有學習到的知識(權重)。
- 釐清: 這並非「壓縮」,而是一種「學習」和「歸納」。因為無法解壓縮還原原始訓練資料。
-
執行檔案 (Run File): 講師比喻為一個簡單的執行檔 (如 C 或 Python 腳本),用來運行參數檔。
- 釐清: 實際上這是一個複雜的「推理框架」(Inference Framework),如 PyTorch。
2. LLM 的訓練三階段
-
預訓練 (Pre-training):
-
在海量 (TB 等級) 的網際網路文本上進行,學習語言的結構和統計規律。
-
講師稱此階段的產出為「夢境」或「幻覺」。
-
-
微調 (Fine-tuning / SFT):
-
在較小規模 (數十萬筆) 的高品質「問答對」資料上進行監督式學習。
-
目的是教會模型如何遵循指令並以人類期望的格式回答。
-
-
強化學習 (Reinforcement Learning / RLHF):
- 透過人類對答案的偏好(如按讚/倒讚)來訓練模型,使其回答更符合人類偏好。
3. 權杖 (Tokens) 與上下文視窗 (Context Window)
-
權杖 (Tokens):
-
文字在輸入模型前,會被切分成最小的語意單元 (不一定是一個詞),並轉換為數字 ID。
-
模型是基於權杖 (數字) 進行運算,而非文字。
-
-
權杖限制 (Token Limit):
-
即「上下文視窗」 (Context Window)。模型一次能「記得」的對話長度上限。
-
一旦對話超過此限制,最早的資訊將會被遺忘。
-
RAG 技術的核心目的之一,就是為了解決這個限制。
-
二、 RAG (檢索增強生成) 導論
1. RAG 的定義
- RAG (Retrieval-Augmented Generation):檢索增強生成。
2. RAG 與函式呼叫 (Function Calling)
-
函式呼叫 (Function Calling):
-
講師將其定義為 LLM 呼叫「外部工具」的總稱。
-
Andrej Karpathy 的比喻:LLM 是「作業系統 (OS)」,上下文視窗是「RAM」,而函式呼叫是 OS 去存取「周邊設備」(如硬碟、網路、計算機)。
-
-
RAG 的定位:
-
RAG 是函式呼叫的一種特定應用。
-
LLM 透過執行一個「函式呼叫」,存取外部的「向量資料庫」,以獲取所需知識。
-
三、 RAG 的核心機制:Embeddings 與向量資料庫
1. 嵌入模型 (Embedding Model)
-
作用: 將文字(通常是「區塊」)轉換為代表其「語意」的數學向量(即「座標」)。
-
釐清: 嵌入 (Embeddings) 不是 權杖 (Tokens)。權杖是文字的 ID (整數),而嵌入是語意的座標 (浮點數列表)。
2. 向量資料庫 (Vector Database)
-
作用: 專門用來儲存和搜尋這些「語意向量」。
-
講師的「派對」比喻:
-
向量叢集 (Clustering): 語意相近的內容 (如水果、動物) 會在向量空間中自然「聚集」在一起。就像派對上「吧台的醉漢」、「角落的 AI 宅」和「舞池的女孩」會分區。
-
相似性搜尋 (Similarity Search): 當使用者提問時,問題本身也會被「向量化」(例如:「爸爸找愛跳舞的女兒」)。系統會計算這個「查詢向量」與哪個「叢集」最接近(爸爸知道女兒愛跳舞,所以直奔舞池),然後在該叢集中找出最相似的結果。
-
-
**釐清:向量空間是「高維 (High-Dimensional)」的 (例如 768 維或 1536 維),而非講師為了比喻所說的「三維」。高維度才能儲存複雜的語意關係。
四、 RAG 的完整工作流程
1. 階段一:索引 (Indexing) - 儲存資料
-
區塊化 (Chunking): 將原始文件 (如 PDF) 切割成許多較小的「區塊 (Chunks)」。
-
嵌入 (Embedding): 將每一個區塊丟入「嵌入模型」,產生一個高維向量。
-
儲存 (Storing): 將這些向量及其對應的原文區塊,存入「向量資料庫」。
2. 階段二:檢索與生成 (Retrieval & Generation) - 回答問題
-
查詢 (Query): 使用者提問。
-
檢索 (Retrieval): 系統將使用者的「問題」也進行「嵌入」,然後在向量資料庫中執行「相似性搜尋」。
-
回傳 (Augment): 資料庫回傳 K 個最相關的區塊,即 “Top-K” 結果。
-
生成 (Generation): LLM 取得這 K 個區塊作為「上下文」,並根據這些資訊綜合生成最終的答案。
3. RAG 的關鍵調校參數
-
Chunk Size (區塊大小): 每個區塊要切多大 (例如 500 或 5000 權杖)。
-
Top-K (回傳數量): 要從資料庫取回最相關的 K 筆資料 (例如 K=2, 4, 8)。
五、 “Test Time Compute” (測試時間計算)
-
講師的定義: 這是 LLM 訓練(預訓練、微調、強化學習)之後的「第四步」,是一種讓模型在「推理/測試時」進行「慢思考」的機制。
-
類比:
-
思維鏈 (Chain of Thought, CoT):模型在回答前,會先生成一步一步的推理過程。
-
《快思慢想》:這對應於「系統二 (System 2)」的慢思考。
-
-
講師的觀點: 他稱之為「純粹的強化學習」(Pure Reinforcement Learning),與 RLHF (Reinforcement Learning from Human Feedback,來自人類回饋的強化學習) 不同。
-
適用場景:
-
需要精確邏輯推理的任務,例如數學、科學、編碼。
-
這些領域通常有唯一的正確答案。
-
-
不適用場景:
- 創意寫作等沒有標準答案的任務。
-
缺點:
-
速度慢: 需要額外的計算時間。
-
成本高: 產生的「思考權杖」也會一併計費。
-
相容性: 講師提到並非所有具備此功能的模型(如 DeepSeek)都支援函式呼叫。
-