# 策展 · X (Twitter) 🔥🔥

> 作者：Khairallah AL-Awady (@eng_khairallah1) · 平台：X (Twitter) · 日期：2026-05-02

> 原始來源：https://x.com/eng_khairallah1/status/2050145400204783631

## 中文摘要

RAG解決AI Agent無法存取企業專屬資料的核心問題，讓模型精準回應自家文件。

RAG（Retrieval-Augmented Generation，檢索增強生成）是讓通用AI模型存取企業專屬資料的關鍵技術，避免AI僅依賴訓練資料產生幻覺或無知回應。課程從基礎教起，涵蓋完整RAG管線，讓讀者建構能引用自家資料的AI Agent。

**RAG運作原理**

想像詢問Claude：「企業客戶的退款政策是什麼？」無RAG時，Claude不知情，可能說「我不知道」或捏造看似合理的錯誤答案。有RAG時，系統執行四步：
- 將問題轉為數學表示（embedding），捕捉其語義。
- 從文件集合中搜尋最相關片段，如退款政策文件、企業服務條款、客戶支援指南。
- 將相關片段連同問題傳給Claude。
- Claude依據這些片段生成精準答案，並可引用來源。

RAG不微調模型、不改變模型本身，只擴充生成回應時的可用資訊，好比在提問前遞給參考書，讓對方查閱相關章節，而非死記硬背。

**RAG管線五階段**

每個RAG系統皆遵循相同五階段管線，這是建構任何RAG應用的基礎。

**階段1：文件攝取**

資料散布PDF、Word文件、網頁、資料庫、試算表、Slack訊息、郵件歸檔等多格式，需轉為系統可處理格式。
- 收集來源文件，轉為純文字：PDF需文字提取、Word需解析、網頁需剝離HTML、資料庫需查詢匯出。
- 清理文字：移除頁首頁尾、導航元素、格式雜訊。
- 分塊（chunking）：最關鍵決定，因模型有上下文限制，小塊聚焦搜尋更精準。
  - 固定大小分塊：每500 token切割，簡單但易中斷句子或段落，破壞語義。
  - 語義分塊：依自然邊界如段落、標題、主題轉換切割，保留語義但大小不均。
  - 遞迴分塊：先試段落，若太大再分句子，再太大則固定字元數，最通用方法。
  - 重疊分塊：每塊與前塊重疊50至100 token，避免邊界資訊遺失，略增儲存但大幅提升檢索品質。
最適合Agent：每塊300至500 token，重疊50至100 token。太小缺上下文，太大稀釋無關資訊。

**階段2：嵌入**

每個塊轉為向量（embedding），捕捉語義。同主題塊即使用不同詞彙，向量相似。
- 通用應用：用OpenAI的text-embedding-3-small或等效模型，高品質低成本。
- 專業領域（醫學、法律、金融）：用領域專屬嵌入模型，懂專業詞彙與關係。
嵌入每個塊，儲存向量與原文字（向量用於搜尋，文字傳給模型）。

**階段3：儲存**

需向量資料庫儲存塊與向量。
- 學習/小專案：Chroma，开源、本地執行、簡單API。
- 生產環境：Pinecone、Weaviate、Qdrant，託管服務處理擴展、備份、效能。
- PostgreSQL使用者：pgvector擴充，直接加向量搜尋。
每筆記錄含原文字、嵌入向量、元資料（來源文件名稱、頁碼、區段、日期等，用於過濾）。

**階段4：檢索**

使用者提問時，嵌入問題（用相同嵌入模型），搜尋向量資料庫中最相似塊，返回前3至10個最相關塊。
提升檢索品質：
- 混合搜尋：結合向量相似性與傳統關鍵字搜尋，涵蓋語義與精確匹配。
- 元資料過濾：預先過濾，如特定產品僅搜其文件、近期政策過濾日期。少量相關勝多量無關。
- 重新排序：初檢後第二輪，用cross-encoder模型依問題上下文評估相關性。

**階段5：生成**

將檢索塊、問題與系統提示傳給Claude，指示僅依提供的文件回應。系統提示結構：
```
你是helpful assistant，僅依提供的上下文文件回答問題。

規則：
- 僅依上下文資訊回答
- 若上下文不足以完整回答，明確說出
- 每項主張皆引用來源文件
- 絕不捏造上下文外資訊
- 若上下文有衝突，呈現雙方觀點並註明衝突

上下文文件：
{retrieved_chunks}

使用者問題：{question}
```
明確指示避免Claude補充通用知識（可能過時或不符領域）。

**建構首個RAG應用**

從最小可行系統（MVP）起步，周末內完成。
- 收集10至20份領域文件，如產品文件、FAQ、政策文件。
- 用遞迴分塊，每塊400 token，重疊100 token。
- 用嵌入API嵌入塊，存入Chroma。
- 建檢索函數：嵌入查詢，搜Chroma前5相似塊。
- 建生成函數：用上述系統提示建prompt，傳給Claude。
- 建簡單介面：文字輸入與答案顯示區，用Next.js或命令列。
- 用20個已知答案問題測試，對比正確答案，找出失敗點。

此系統不完美，但有效，所有改進皆為增量。

**五種常見RAG失敗與修復**

**失敗1：檢索錯塊**

返回無關塊，答案錯誤或泛化。
修復：優化分塊策略（太大含無關、太小缺上下文），實驗大小，加元資料過濾、混合搜尋捕捉關鍵字查詢。

**失敗2：答案在文件但未檢索**

相關塊未進前幾名。
修復：增檢索塊數（5至10或15），加重新排序，檢查分塊是否拆散資訊（若然，增重疊）。

**失敗3：有上下文仍幻覺**

Claude捏造資訊，假裝來自文件。
修復：強化系統提示，如「僅依上下文回答，若無則說『提供的文件無此資訊』」。加驗證步驟，要求引用具體段落。

**失敗4：重複塊膨脹結果**

相同資訊多份，擠掉其他相關塊。
修復：攝取時去重（雜湊塊，略過重複）；檢索時移除近重複。

**失敗5：資料陳舊**

文件更新但向量資料庫仍舊版。
修復：建更新管線，偵測變更後重攝取重嵌入；用元資料追蹤版本；頻繁變更資料每日刷新，穩定資料每週。

**從MVP到生產級**

週末系統奏效後，升級生產：
- 加認證：使用者帳號，僅存取授權文件，文件級存取控制至關重要。
- 加來源引用：每答案含連結或參照，建構信任讓使用者驗證。
- 加回饋收集：讓使用者評分helpful與否，用於診斷分塊問題、常失敗問題、新文件需求。
- 加監控：追蹤查詢量、檢索品質、答案品質、延遲、錯誤率，驅動持續改進。
- 加文件更新管線：自動偵測變更，重處理修改文件，更新向量資料庫。

**結論**

RAG是通用AI與企業專屬領域的橋樑，無它僅給泛化答案，有它則根植自家資料。管線簡單：攝取文件、分塊、嵌入、存向量資料庫、查詢檢索相關塊、依塊生成答案。

本週末建MVP，測試、修復失敗、逐步加生產功能。企業文件內困住的知識，經RAG轉為即時精準AI問答系統。先建RAG企業將累積知識優勢，每添文件每日複利增長。

## 標籤

RAG, Agent, 教學資源, Claude
