1 / 10
AI 核心技術
RAG
Retrieval-Augmented Generation
檢索增強生成
📗✂️🔢🗄️🔍🤖💬
RAG 讓 AI 不只依賴訓練資料,而是先從外部知識庫「檢索」相關資訊,再生成更準確、有依據的答案。
傳統方法
傳統直接檢索
以「關鍵字精確比對」搜尋書本內容
📖 書本內容(第 42 頁)
溫帶氣候適合多種農作物生長。
蘋果喜歡涼爽乾燥的環境,需要充足日照。
香蕉則需要熱帶氣候,高溫潮濕的環境。
梨子和桃子也適合溫帶氣候種植。
土壤排水性對蘋果生長非常重要。
比對
🔍 搜尋查詢
"蘋果 生長"
✅ 精確命中:
蘋果喜歡涼爽乾燥的環境...」
「土壤排水性對蘋果生長...」
❌ 若搜尋「水果栽培」→ 0 筆結果
⚠️ 傳統檢索只做字面比對,找不到同義詞,也無法整合散落各頁的知識
痛點分析
傳統直接檢索的三大限制
以一本農業知識書籍為範例說明
🔤
① 無法理解語意
搜尋「蘋果種植方法」,找不到書中寫著「蘋果的栽培技術」的段落——字不同,就是找不到。
📑
② 無法整合多頁資訊
「蘋果最佳採收條件」分散在第 23 頁(氣候)、第 58 頁(土壤)、第 112 頁(病蟲害)。傳統檢索只能回傳單一段落,無法整合。
🖼️
③ 完全忽略圖片內容
書中有蘋果病蟲害診斷圖、土壤剖面圖等,關鍵字搜尋無法理解圖片,這些知識完全被忽略。
RAG 核心概念
什麼是 RAG?
「先檢索、再生成」—— 把外部知識塞進 AI 的 Prompt
👤
使用者提問
🔢
向量化
Embedding
🔍
語意搜尋
Vector Search
🤖
LLM 生成
GPT / Claude
💡
完整答案
從此資料庫找出相關段落
🗄️
向量資料庫
書本所有內容的向量索引
💡 核心重點:LLM 不知道書的內容。RAG 先從知識庫「撈出」最相關段落,
再把這些段落塞進 Prompt,讓 LLM 根據真實資料生成答案,避免憑空捏造。
深入解析 1/3
向量化(Embedding)
維度數字代表什麼?如何選擇?向量實際長什麼樣子?
🔢 「768」這個數字代表什麼?
每個維度 = 文字在某個語意特徵上的強度值
768 維 = 同時從 768 個角度衡量語意(每個值約 -1 ~ +1)
📌 簡化示意:「蘋果」的 3 維向量
食物/植物
0.92
農業/栽培
0.86
機械/工業
0.04
✦ 維度越多 → 語意描述越精細
✦ 每個維度的「含義」由模型訓練後自動學習,非人工定義
🎯 如何選擇 Embedding 模型?
🇹🇼
中文為主
BGE-M3(1024維)
🌍
多語言 / 英文
OpenAI / Gemini
🖥️
本地部署(免費)
BGE / Sentence-BERT
🎯
最高精度(雲端 API)
text-embedding-3-large
📐 維度數字的取捨
維度 ↑ 高
精度更高
儲存空間大
搜尋較慢
維度 ↓ 低
精度略低
儲存輕量
速度更快
📊 向量樣態視覺化 — 語意相近的詞,各維度數值「模式」也相近
語意維度(簡化示意) 🍎 蘋果 🍐 梨子 🚗 汽車 🍎 食物/植物 0.92 0.89 0.05 🌱 農業/栽培 0.86 0.83 0.02 🌿 生命/有機 0.88 0.91 0.09 ⚙️ 機械/工業 0.04 0.03 0.91 🚗 交通/載具 0.03 0.02 0.93 💡 現代科技 0.07 0.06 0.68 ←—— 模式相近(語意相似)——→ 模式截然不同
*簡化為 6 維示意;實際有 768~1536 維。*各維度的語意含義是模型自動學習的,並非人工指定。
深入解析 2/3
向量資料庫(Vector Database)
專門儲存與快速搜尋向量的資料庫,是 RAG 的核心記憶體
🗄️ 每筆資料長這樣(一個 Chunk = 一筆記錄)
ID
向量(768 維度)
原始文字(Chunk)
頁碼
1
[0.23, -0.87, 0.41...]
蘋果喜歡涼爽乾燥的環境,需要充足日照...
p.23
2
[0.41, 0.12, -0.56...]
採收時需注意土壤濕度,以及溫差變化...
p.58
3
[-0.87, 0.34, 0.22...]
【圖片描述】病蟲害圖:葉片出現褐色斑點...
p.89
⚡ 為何不用一般 SQL 資料庫?
SQL 資料庫
WHERE text LIKE '%蘋果%'
→ 精確字串掃描
→ 找不到「栽培」
→ 無語意理解
向量資料庫
search(embed("蘋果種植"))
→ 計算向量距離
→ 找到「栽培」✅
→ 語意近即命中
🔑 索引技術 HNSW:建立多層「捷徑圖」,讓查詢不需比對全部向量,能在毫秒內從百萬筆中找出最相近的 Top-K 結果。
🛠 主流向量資料庫
Pinecone
全託管雲端服務
SaaS
Chroma
開源,本地快速建置
開源
FAISS(Meta)
高效能,適合大規模
開源
Weaviate
支援混合搜尋
開源
pgvector
PostgreSQL 擴充套件
開源
深入解析 3/3
語意相似度搜尋
用「向量夾角」衡量語意距離,找出最相關的知識片段
📐 餘弦相似度(Cosine Similarity)
「蘋果種植」 「蘋果栽培」 θ≈12° cos(12°) ≈ 0.98 → 非常相似 ✅ 「汽車引擎」 θ≈78° cos(78°) ≈ 0.21 → 不相似 ❌ 夾角小 → 相似 夾角大 → 不同
📖 公式解讀
cos(θ) = (A · B) / (‖A‖ × ‖B‖)
A · B = 兩向量的內積(逐維相乘後相加)
結果範圍:+1(完全相同)-1(完全相反)
🔍 查詢範例:搜尋「蘋果種植」
使用者:「蘋果種植」→ 轉向量 → 搜尋
從資料庫取回並排序(Top-K):
「蘋果喜歡涼爽乾燥的環境...」(p.23)#1
0.93
「蘋果栽培技術:選地與施肥...」(p.41)#2
0.88
「採收時機與土壤管理方式...」(p.58)#3
0.79
「汽車引擎的日常保養方式...」淘汰
0.08
💡 「蘋果栽培」被找到了,雖然使用者寫的是「蘋果種植」——因為兩者在向量空間非常相鄰,餘弦相似度高達 0.88!
階段 1/2・離線處理
書本 RAG — 建立索引
將整本書的文字與圖片,預先轉換為可搜尋的向量(只需做一次)
📗
原始書本
文字段落
圖片/圖表
✂️
分塊 (Chunking)
📝 Chunk 1:蘋果喜歡涼爽的...
📝 Chunk 2:採收時間應在...
🖼️ 圖1描述:病蟲害圖,顯示葉片...
🔢
向量化
每個 Chunk → 數字向量
🗄️
向量資料庫
Chroma
Pinecone
FAISS
🖼️ 如何處理書中圖片?
原始圖片
Vision 模型
GPT-4V / Gemini
生成文字描述
「圖示葉片褐色斑點...」
一起向量化
存入 DB ✅
階段 2/2・即時查詢
書本 RAG — 查詢流程
使用者每次提問時,系統即時執行以下步驟
👤
使用者提問
"蘋果在什麼氣候條件下生長最好?採收時需注意什麼?"
1
問題向量化→ 問題轉成 Embedding 向量 [0.23, -0.87, 0.41, ...]
2
語意相似度搜尋→ 計算餘弦相似度,找最近的 Top-K chunks(無須關鍵字)
3
撈出相關段落(Context)
📝 p.23:蘋果喜涼爽乾燥...
📝 p.58:採收時土壤濕度...
🖼️ 圖:成熟蘋果外觀判斷...
4
組合 Prompt 送給 LLM→「根據以下資料回答問題:[段落...] 問題:蘋果在什麼...」
5
✅ 生成完整答案→ LLM 整合三個來源,輸出有依據、流暢的自然語言答案
總結比較
傳統直接檢索 vs RAG
以書本知識問答系統為例
比較項目❌ 傳統直接檢索✅ RAG 系統
搜尋方式關鍵字精確比對語意向量相似度搜尋
同義詞處理❌ 「栽培」≠「種植」✅ 向量空間相鄰即可找到
多頁整合❌ 只回傳單一段落✅ 可整合多個章節內容
圖片處理❌ 完全忽略✅ 圖片描述也可搜尋
答案品質原文片段,未整合完整流暢的自然語言答案
建置難度⭐ 簡單⭐⭐⭐ 需 Embedding + 向量DB + LLM
🎯 RAG 最適合:書本、企業文件、技術手冊等需要「理解」且知識持續更新的場景
← 回資源庫