企業 RAG 由 Document Loader、Chunker、Embedding、Vector Database、Retrieval 加 Reranking、LLM Generation 等元件組成;作者建議中小企業採用 PyMuPDF 載入、500 tokens 加 50 overlap 切片、Gemini text-embedding-004、Qdrant 自架、BGE Reranker 取 Top-3、Gemini 2.5 Flash 加引用 Prompt 的架構,月成本約 NT$2,000 到 5,000,可服務每月 10,000 次查詢。
發布 2026-05-29 · 最後更新 2026-09-27 · 作者 賴家榮 Andy Lai
RAG(Retrieval-Augmented Generation)由 5 個元件組成。這篇從文件進來到 LLM 回應,把整個架構完整拆解,每個元件的選型與調校都教給您。
RAG 完整流程
1. 文件 → [Loader] → 文字
2. 文字 → [Chunker] → 切片
3. 切片 → [Embedding] → 向量
4. 向量 → [Vector DB] → 儲存
─────────────────(離線索引完成)─────────────────
5. 用戶問題 → [Embedding] → 問題向量
6. 問題向量 → [Vector DB Search] → Top-K 相似切片
7. Top-K + 問題 → [Reranker] → 重排序
8. 排序後 + 問題 → [LLM] → 自然語言回答
元件 1:Document Loader
把不同格式檔案轉為文字。
- PDF:PyMuPDF(純文字快)/ Unstructured(混合內容好)
- Word:python-docx
- Excel:openpyxl + 自製 schema 描述
- 網頁:BeautifulSoup + Readability
- 圖片:Gemini Vision OCR
元件 2:Chunker(切片)
切得太大召回差、太小失語境。三種策略:
- Fixed Size:每塊固定 token 數,最簡單
- Semantic:用 embedding 找語義邊界
- Hierarchical:多層切(章 → 節 → 段)
實務建議:先用 Fixed 500 tokens + overlap 50 起步。
詳見 文件切割策略完整指南。
元件 3:Embedding
把文字轉為向量。常用:
- OpenAI text-embedding-3-large(1536/3072 維、中文好)
- Gemini text-embedding-004(768 維、便宜)
- Cohere embed-v3(多語強)
- BGE-M3(開源、可自架)
詳見 Embedding 模型選擇指南。
元件 4:Vector Database
| 選擇 | 適合 |
|---|---|
| pgvector | 已有 PostgreSQL、< 100 萬筆 |
| Qdrant | 自架、效能好、最常見 |
| Pinecone | SaaS、不想維運 |
| Weaviate | 混合搜尋強 |
詳見 向量庫完整比較。
元件 5:Retrieval + Reranking
取向量庫 Top-K(通常 10–20),然後用 Reranker 重新排序。
- Reranker 模型:Cohere Rerank / BGE Reranker
- 把最相關的 3–5 個切片送給 LLM
實測:加 Reranker 通常讓最終答案準確度提升 10–30%。
元件 6:LLM Generation
把切片 + 問題餵給 LLM。關鍵設計:
- Prompt 結構清楚(指令 + Context + 問題)
- 要求 LLM 引用來源(避免幻覺)
- 找不到答案時要 LLM 說「不知道」
建議架構(中小企業)
文件 (PDF/Word)
↓
PyMuPDF + Unstructured
↓
Recursive Character Splitter (500 tokens, 50 overlap)
↓
Gemini text-embedding-004
↓
Qdrant (Docker 自架)
↓
Top-10 → BGE Reranker → Top-3
↓
Gemini 2.5 Flash + Citation Prompt
↓
回答 + 來源連結
這套架構月成本 NT$2,000–5,000,可服務 10,000 次/月查詢。
進階:評估與監控
RAG 上線後,每月看 3 個指標:
- Hit Rate:問題能找到相關切片的比例
- Faithfulness:答案是否忠於切片內容
- Relevance:答案是否真的回答了問題
詳見 RAG 評估指標完整指南。
常見錯誤
- 沒做 chunk overlap → 切片邊界資訊丟失
- 沒做 metadata 過濾 → 跨部門資訊混雜
- 沒做 Reranker → 命中率低
- 沒寫 Citation Prompt → LLM 幻覺
- 沒做評估 → 不知道哪裡需要優化
常見問題
RAG 架構由哪些元件組成,流程是什麼?
離線索引階段:文件經 Loader 轉為文字、Chunker 切片、Embedding 轉向量、存入 Vector DB。查詢階段:用戶問題轉向量、在向量庫搜尋 Top-K 相似切片、Reranker 重排序、最後把排序後切片與問題送給 LLM 產生回答。文章逐一說明 Loader、Chunker、Embedding、Vector DB、Retrieval 與 LLM Generation 的選型。
RAG 文件切片(Chunking)該怎麼設定?
切得太大召回差、太小失語境。三種策略:Fixed Size 每塊固定 token 數最簡單、Semantic 用 embedding 找語義邊界、Hierarchical 依章節段多層切。作者的實務建議是先用 Fixed 500 tokens 加 overlap 50 起步;沒做 overlap 是常見錯誤,會讓切片邊界的資訊丟失。
中小企業建 RAG 系統要花多少錢?
作者建議的架構是 PyMuPDF 加 Unstructured 載入、Recursive Character Splitter(500 tokens、50 overlap)、Gemini text-embedding-004、Docker 自架 Qdrant、Top-10 經 BGE Reranker 取 Top-3、Gemini 2.5 Flash 加 Citation Prompt,月成本約 NT$2,000 到 5,000,可服務每月 10,000 次查詢。
RAG 的向量資料庫和 Embedding 模型怎麼選?
向量庫:已有 PostgreSQL 且低於 100 萬筆用 pgvector;自架、效能好且最常見的是 Qdrant;不想維運選 SaaS 的 Pinecone;混合搜尋強選 Weaviate。Embedding:OpenAI text-embedding-3-large 中文好、Gemini text-embedding-004 為 768 維且便宜、Cohere embed-v3 多語強、BGE-M3 開源可自架。
建 RAG 最常見的錯誤有哪些?
五個:沒做 chunk overlap 導致切片邊界資訊丟失;沒做 metadata 過濾造成跨部門資訊混雜;沒加 Reranker 使命中率低,實測加 Reranker 可讓答案準確度提升 10 到 30%;沒寫 Citation Prompt 讓 LLM 產生幻覺;沒做評估就不知道哪裡需要優化。上線後應每月追蹤 Hit Rate、Faithfulness 與 Relevance。