你有冇試過問 ChatGPT 一條公司內部嘅問題,佢答得好自信但完全錯晒?呢個就係所謂嘅「幻覺」(Hallucination)— AI 模型會好似真咁「創作」出唔存在嘅事實。RAG(Retrieval-Augmented Generation,檢索增強生成)就係解決呢個問題嘅核心技術。

呢篇指南會帶你全面了解 RAG 嘅原理、架構、工具選擇,同埋點樣喺你自己部 Mac 上面建立一個完全本地、零私隱風險嘅 RAG 系統。

什麼是 RAG?點解佢咁重要?

RAG 嘅全名係 Retrieval-Augmented Generation(檢索增強生成)。簡單嚟講,就係喺 AI 生成回應之前,先去你指定嘅知識庫度搵相關資料,然後將搵到嘅內容連同你嘅問題一齊交畀 LLM 處理。

傳統 LLM 嘅問題係:

RAG 逐個擊破呢啲問題:佢將 LLM 嘅推理能力同你自己嘅資料結合,令 AI 嘅回應有事實根據、可以追溯來源、而且永遠係最新嘅。

一句話理解 RAG:如果 LLM 係一個好聰明但乜都唔記得嘅顧問,RAG 就係畀佢一個隨時可以查閱嘅圖書館。佢唔使記住所有嘢,只要識得喺啱嘅時候搵到啱嘅資料就得。

RAG 點樣運作?三步流程

RAG 嘅核心流程可以拆解為三個步驟:檢索(Retrieve)→ 增強(Augment)→ 生成(Generate)

第一步:檢索(Retrieve)

當用戶提出問題,系統會先將問題轉換為向量(embedding),然後喺向量資料庫入面搵出最相關嘅文件片段。呢個過程叫做「語義搜索」— 佢唔係靠關鍵字匹配,而係理解問題嘅含義去搵答案。

第二步:增強(Augment)

搵到相關文件片段之後,系統會將呢啲片段同用戶嘅原始問題組合成一個增強過嘅 prompt。例如:「根據以下資料 [文件片段],請回答以下問題 [用戶問題]」。

第三步:生成(Generate)

增強過嘅 prompt 交畀 LLM 處理。因為 LLM 而家有咗具體嘅參考資料,佢就可以生成有事實根據嘅回應,而唔使靠自己「估」。

向量資料庫:RAG 嘅記憶核心

向量資料庫(Vector Database)係 RAG 系統嘅核心組件。佢嘅作用係將文件轉換為數學向量,然後高效率咁做語義搜索。以下係幾個主流選擇:

向量資料庫類型特點適合場景授權
ChromaDB嵌入式輕量、Python 原生、零配置個人項目、快速原型Apache 2.0
Qdrant獨立服務高效能、Rust 編寫、REST API生產環境、中大型系統Apache 2.0
FAISSMeta 開發、極快搜索速度大量資料、效能優先MIT
Weaviate獨立服務GraphQL API、內建向量化企業級應用BSD-3
Milvus分散式可擴展、支援十億級向量超大規模部署Apache 2.0

入門建議:如果你剛開始接觸 RAG,用 ChromaDB 就夠。佢可以直接嵌入你嘅 Python 應用,唔使額外運行資料庫服務。等到資料量或需求增加,先再考慮 Qdrant 或 FAISS。

Embedding 模型:文字變向量嘅關鍵

Embedding 模型嘅作用係將文字轉換為高維度嘅數字向量。呢啲向量捕捉咗文字嘅語義含義 — 意思相近嘅文字會有相似嘅向量。

舉個例子:「蘋果手機」同「iPhone」嘅向量會好接近,但「蘋果手機」同「蘋果水果」嘅向量就會比較遠。呢個就係語義搜索嘅基礎。

常用 Embedding 模型

模型維度特點本地運行
nomic-embed-text768輕量高效,Ollama 直接支援可以
mxbai-embed-large1024效能優秀,多語言支援好可以
all-MiniLM-L6384極輕量,適合資源有限嘅裝置可以
BGE-M31024多語言能力極強,中文表現好可以

喺 Ollama 度拉取 embedding 模型好簡單:

# 下載 embedding 模型
ollama pull nomic-embed-text

# 測試 embedding
curl http://localhost:11434/api/embeddings -d '{
  "model": "nomic-embed-text",
  "prompt": "什麼是 RAG?"
}'

RAG 實際應用場景

1. 公司知識庫

將公司嘅 SOP、政策文件、產品手冊全部餵入 RAG 系統。員工可以用自然語言查詢:「新員工入職需要填邊啲表格?」「退貨政策嘅期限係幾耐?」系統會從實際文件度搵到答案,唔會自己「作」。

2. 法律文件分析

律師事務所可以將幾千份合約、判例、法規文件入去 RAG 系統。律師問:「關於租約提前終止嘅相關條款有邊啲?」系統會從所有文件度搵出相關段落,仲會標明出處。

3. 客戶支援

將產品文件同過往嘅支援紀錄建立成知識庫。客服人員或者 AI chatbot 可以即時搵到準確嘅解決方案,唔使逐份文件翻查。

4. 學術研究

研究員可以將大量論文、報告餵入 RAG 系統,用自然語言做文獻回顧:「有邊啲研究探討咗 transformer 架構喺醫療影像嘅應用?」

5. 個人知識管理

將你嘅筆記、書籍摘錄、文章收藏建立成個人 AI 助手。隨時問:「上個月我睇嘅嗰篇關於時間管理嘅文章講咗啲咩重點?」

本地 RAG 工具推薦

PrivateGPT — 最簡單嘅本地 RAG

PrivateGPT 係一個完全本地運行嘅 RAG 應用,支援上傳各種文件格式,開箱即用:

# 安裝 PrivateGPT
git clone https://github.com/zylon-ai/private-gpt
cd private-gpt

# 使用 Ollama 作為 LLM 後端
poetry install --extras "ui llms-ollama embeddings-ollama vector-stores-qdrant"
PGPT_PROFILES=ollama make run

PrivateGPT 提供 Web 界面,你可以直接拖放 PDF、Word、TXT 等文件,然後開始對話。所有處理完全喺本地進行。

AnythingLLM — 功能最全面

AnythingLLM 係一個多合一嘅 RAG 平台,有漂亮嘅桌面應用程式:

對於唔想搞太多配置嘅用家,AnythingLLM 係最推薦嘅選擇。

LangChain — 開發者嘅瑞士軍刀

如果你係開發者,想建立自訂嘅 RAG 流程,LangChain 提供完整嘅工具鏈:

from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA

# 設定本地 LLM 同 Embedding
llm = Ollama(model="llama3")
embeddings = OllamaEmbeddings(model="nomic-embed-text")

# 文件分割
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
docs = splitter.split_documents(your_documents)

# 建立向量資料庫
vectorstore = Chroma.from_documents(docs, embeddings)

# 建立 RAG 鏈
qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever()
)

# 開始查詢
result = qa.invoke("公司嘅年假政策係點?")
print(result)

RAG 工具比較

工具難度界面自訂程度適合對象
PrivateGPT中等Web UI技術用家、注重私隱
AnythingLLM簡單桌面 App中高所有用家
LangChain較高程式碼極高開發者
LlamaIndex中高程式碼開發者
Open WebUI簡單Web UIOllama 用家

本地 RAG 嘅私隱優勢:香港 PDPO 合規

對香港企業嚟講,本地 RAG 有一個雲端方案無法比擬嘅優勢:資料私隱合規

香港《個人資料(私隱)條例》(PDPO)對個人資料嘅處理有嚴格規定。如果你用雲端 AI 服務(例如 ChatGPT API)處理公司文件,你需要考慮:

本地 RAG 完美解決呢啲問題:

合規提示:對於律師事務所、醫療機構、金融公司等處理高度敏感資料嘅行業,本地 RAG 幾乎係唯一可以滿足監管要求嘅 AI 方案。喺 Apple Silicon Mac 上運行本地 RAG,你可以享受 AI 嘅效率提升,同時完全符合 PDPO 嘅要求。

開始建立你嘅本地 RAG 系統

以下係喺 Mac 上從零開始建立本地 RAG 嘅步驟:

第一步:安裝 Ollama

# 安裝 Ollama
brew install ollama

# 啟動 Ollama 服務
ollama serve

第二步:下載所需模型

# 下載 LLM(用嚟生成回應)
ollama pull llama3

# 下載 Embedding 模型(用嚟文件向量化)
ollama pull nomic-embed-text

第三步:選擇 RAG 前端

最簡單嘅入門方法係安裝 AnythingLLM 桌面版。下載安裝後:

  1. 選擇 Ollama 作為 LLM 提供者
  2. 選擇 Ollama 作為 Embedding 提供者
  3. 建立一個新嘅工作區(Workspace)
  4. 上傳你嘅文件(PDF、Word、TXT 等)
  5. 等文件處理完成,開始對話

第四步:優化表現

常見問題

RAG 同 Fine-tuning 有咩分別?

Fine-tuning 係將新知識「燒入」模型本身,需要大量計算資源同時間。RAG 係喺推理時動態檢索資料,唔使改動模型。對於大多數場景,RAG 更加實際 — 資料更新快、成本低、唔使重新訓練模型。

需要幾多記憶體?

RAG 系統需要同時運行 LLM + Embedding 模型 + 向量資料庫。建議最少 16GB 記憶體。如果用 8B LLM + nomic-embed-text,大約需要 10–12GB。

支援邊啲文件格式?

主流 RAG 工具一般支援 PDF、Word(.docx)、TXT、Markdown、HTML、CSV、Excel 等。部分工具仲支援圖片 OCR 同音訊轉文字。