企業把 PDF 丟進 ChatGPT,第二天被客戶發現 AI 講錯了價格、講錯了退貨政策、把 A 客戶的機密洩漏給 B 客戶 — 這就是知識庫的黑暗森林。
2024 年中以後,幾乎每家企業的技術長都收到類似需求:「讓我們的產品手冊/法規/SOP 變成一個能問問題的 AI。」多數團隊第一版實作大致如下:
# 看起來簡單的 RAG 1.0
documents = load_pdfs("docs/")
chunks = split_into_chunks(documents, size=500)
vectors = openai.embed(chunks)
qdrant.upsert(vectors)
def ask(question):
q_vec = openai.embed(question)
top_k = qdrant.search(q_vec, k=5)
context = "\n".join(top_k)
return openai.chat([
{"role": "system", "content": "根據以下內容作答"},
{"role": "user", "content": f"{context}\n\n問題:{question}"}
])
上線第一週看起來很神奇。上線第一個月就會遇到至少五個死角:
這五個死角個別都有解,但要同時解、還要在 SaaS 多租戶環境下解,不是「再調一下 prompt」可以處理的。這是基礎設施問題。
工程師討論幻覺時常說「GPT-4o 還是會亂講」,但仔細拆解,幻覺有四個來源:
| 幻覺來源 | 可歸責 | 解方層級 |
|---|---|---|
| 模型先天限制 | 模型 | 換模型(Claude / Gemini / Deepseek) |
| 檢索到錯片段 | 基礎設施 | 提高召回、混合檢索、Rerank |
| 檢索到相關但過時的片段 | 基礎設施 | 知識版本、時效性標註 |
| 檢索正確但 LLM「補完」了片段沒說的東西 | Prompt 工程 | 嚴格引用要求、NLI 驗證 |
把責任都推給模型是偷懶。超過 60% 的幻覺可以靠基礎設施消除(百原內部 2026 Q1 觀察值):
pie title 幻覺根因分佈(2026 Q1, n=1,200 人工標註樣本)
"檢索錯片段 (可修)" : 42
"片段過時 (可修)" : 18
"Prompt 未要求引用 (可修)" : 12
"模型先天補完 (難修)" : 28
Fig 1-1: 幻覺根因拆解(百原內部樣本)
本書的核心論點之一:把 42% + 18% 的「可修類幻覺」當成基礎設施問題來解,剩下 28% 的模型先天問題,再交給 Ch 12 討論的 NLI + ChainPoll 雙層偵測處理。
許多 RAG demo 用「一次 3,000 token」來計費,但真實企業場景的成本曲線長這樣:
| 規模 | 日問答量 | 月 Token | GPT-4o API 月費(輸入 $2.5 / 輸出 $10 per 1M) |
|---|---|---|---|
| Pilot | 500 | 5M | ~USD 150 |
| 中小企業導入 | 5,000 | 50M | ~USD 1,500 |
| 中型 B2B SaaS | 50,000 | 500M | ~USD 15,000 |
| 大型 CC 中心 | 500,000 | 5B | ~USD 150,000 |
上表輸入 3k / 輸出 500 token/次估算
企業一年 10 萬美元的 LLM API 費用絕對不是小錢。但其中大部分是可以省的:
百原 RAG 平台的 L1 Wiki 正是為了解決第 3、4 點(Ch 3 詳解)。我們的量測:L1 命中率 35–60% 時,月 Token 費用降到原本的 20–40%。
SaaS 的 RAG 跟自用的 RAG 有一個根本差別:資料隔離不是可選功能。以下四個隔離失效案例,都是真實發生在 2024–2025 年間的產業事件(匿名化):
WHERE tenant_id = ? 被 SQL injection 繞過這四個案例對應到本書 Ch 6 所提的三層租戶隔離:
flowchart LR
R[Request] --> A[Layer 1<br/>App 層<br/>X-Tenant-ID]
A --> D[Layer 2<br/>DB 層<br/>PostgreSQL RLS]
D --> Q[Layer 3<br/>Query 層<br/>WHERE tenant_id = ?]
Q --> OK[Safe]
Fig 1-2: 三層租戶隔離的縱深防禦
三層都要存在,缺一層就多一個洞。Ch 6 會詳細論證為何 RLS 不夠、為何 App 層 header 驗證不夠、為何 Query 層條件不夠 — 三者要同時成立。
「知識庫」這個詞在業務端聽起來單純,對工程端其實是個鬼屋。以下是百原 RAG 平台目前支援的文檔類型(Ch 7 詳解):
| 來源類型 | 範例 | 難點 |
|---|---|---|
| 貼文字 | 員工直接貼 FAQ | 格式雜亂、無結構 |
| 上傳檔案 | PDF、Word、PPT、TXT | OCR、表格抽取、換行處理 |
| 從 URL 匯入 | 官網頁、Notion、Confluence | JS 渲染、登入牆、動態載入 |
| 爬蟲擷取 | 定期爬整站 | robots.txt、rate limit、重複偵測 |
| 自動推送 | ERP/CRM webhook | 增量更新、去重、版本管理 |
| API 回傳 | 內部微服務 | 權限、schema 漂移 |
每種來源都需要獨立的攝取管線,卻要輸出統一的 document + chunk + embedding 格式。這不是 RAG 產品,這是知識 ETL 平台。本書 Ch 7 把 6 種管線的實作拆解清楚,重點在統一的 documents、chunks、embeddings 三表 schema,以及如何以 status 欄位處理「處理中/已就緒/錯誤」三種狀態。
這是本書最反直覺的工程決策。百原有三條產品線:
最自然的作法是每條產品線各自造 RAG。但我們選擇共用一套 RAG 基礎設施,理由:
@id 互連(Organization → Service → Person),RAG 是最自然的承載層代價是什麼?多租戶 + 多產品的複雜度。本書 Ch 9、Ch 10 會完整拆解整合模式,讓讀者理解此決策的工程代價與回報。
貫穿全書的工程命題是:
「如何以單一多租戶 RAG 基礎設施,同時支援客服問答、GEO 幻覺修復、PIF 法規建檔三種不同形態的 AI 應用,而在成本、幻覺率、資料隔離三個維度上都達到生產級水準?」
為回答這個問題,本書依五個部分展開:
| 日期 | 版本 | 說明 |
|---|---|---|
| 2026-04-20 | v1.0 | 初稿 |
導覽:📖 目次 · Ch 2: 百原 RAG 系統總覽 →