Chuyển đến nội dung chính

第6課:RAG、向量資料庫與 Bedrock Knowledge Bases

檢索增強生成(RAG)架構。 向量資料庫、嵌入、分塊策略。 Amazon Bedrock Knowledge Bases。RAG 與微調的比較。

RAG 架構

RAG 架構——使用 Amazon Bedrock Knowledge Bases 的索引階段與查詢階段

1. 什麼是 RAG?

檢索增強生成(Retrieval-Augmented Generation,RAG)是一種將 FM 與外部知識來源結合的技術,以提供更準確的答案、減少幻覺,並納入模型不知道的資訊。

1.1. 為什麼需要 RAG?

問題RAG 解決方案
知識截止日期檢索最新文件
幻覺基於真實資料生成回應
缺乏領域知識添加公司專屬文件
通用回答引用特定來源
隱私——無法將資料發送到 FM 訓練將資料保存在自己的向量資料庫中

1.2. RAG 架構

RAG 管線:

┌─────────────────────────────────────────────────────────────┐
│  索引(執行一次 / 定期更新)                                  │
│                                                             │
│  文件 → 分塊 → 嵌入模型 → 向量資料庫                          │
│  (PDF, web,    (分割     (Amazon Titan     (OpenSearch,     │
│   S3 等)       文字)      Embeddings)       Aurora pgvector) │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│  檢索與生成(每次查詢)                                       │
│                                                             │
│  使用者查詢 → 嵌入查詢 → 搜尋向量資料庫 → Top-K 文件          │
│                                                             │
│  增強提示 = 系統提示 + 檢索到的文件 + 查詢                     │
│                                                             │
│  增強提示 → 基礎模型 → 附帶來源的回答                         │
└─────────────────────────────────────────────────────────────┘

2. 分塊策略

在建立嵌入之前,文件必須被分割成更小的片段(分塊),切成適當大小的區段。

策略描述最適用於
固定大小每 N 個字元/token 分割簡單、統一的文件
基於句子在句子邊界分割敘述性文字
基於段落在段落分隔處分割結構良好的文件
語義分塊基於主題變化分割複雜文件
階層式父子分塊關係具有章節的長文件

分塊大小的權衡:

小分塊(100-200 tokens):
  ✓ 更精確的檢索
  ✗ 可能丟失上下文
  ✗ 需要搜尋更多分塊

大分塊(500-1000 tokens):
  ✓ 保留更多上下文
  ✗ 可能包含無關資訊
  ✗ 分塊較少,粒度較低

重疊(例如分塊之間 20%):
  ✓ 防止邊界處的資訊丟失
  ✗ 增加儲存和運算成本

考試提示:「如何提高 RAG 檢索準確性?」→ 調整分塊大小、添加重疊、使用語義分塊、改善嵌入模型。

3. RAG 的嵌入

3.1. AWS 嵌入模型

模型模態維度用途
Amazon Titan Text Embeddings V2文字256/512/1024語義搜尋、RAG
Amazon Titan Multimodal Embeddings文字 + 圖像256/384/1024跨模態搜尋
Cohere Embed文字1024多語言搜尋

3.2. AWS 上的向量資料庫

服務類型主要特點
Amazon OpenSearch Serverless託管式向量搜尋集合類型,無伺服器
Amazon Aurora PostgreSQL關聯式 + 向量pgvector 擴充
Amazon Neptune圖 + 向量知識圖譜搭配向量搜尋
Amazon DocumentDB文件 + 向量MongoDB 相容,支援向量搜尋
Amazon MemoryDB記憶體 + 向量Redis 相容,超低延遲
Pinecone(第三方)專用向量資料庫廣受歡迎,與 Bedrock 整合

4. Amazon Bedrock Knowledge Bases

Bedrock Knowledge Bases 是完全託管的 RAG 解決方案。AWS 處理分塊、嵌入、索引和檢索——你只需要指向你的資料來源。

4.1. 運作方式

設定:
┌───────────┐     ┌───────────────┐     ┌─────────────────┐
│ S3 Bucket │────→│ Bedrock       │────→│ 向量儲存區       │
│ (文件)     │     │ Knowledge Base│     │ (OpenSearch/     │
│           │     │ (自動分塊,    │     │  Aurora/Pinecone) │
│           │     │  自動嵌入)    │     │                  │
└───────────┘     └───────────────┘     └─────────────────┘

查詢:
┌───────────┐     ┌───────────────┐     ┌─────────────────┐
│ 使用者     │────→│ Knowledge Base│────→│ FM (Claude,      │
│ 「什麼     │     │ 檢索          │     │  Titan 等)       │
│  是...」   │     │ 相關文件      │     │ 生成回答         │
└───────────┘     └───────────────┘     └─────────────────┘

4.2. 支援的資料來源

  • Amazon S3:PDF、TXT、MD、HTML、DOC、CSV
  • Web Crawler:自動抓取網站
  • Confluence:Atlassian Confluence 頁面
  • SharePoint:Microsoft SharePoint 文件
  • Salesforce:Salesforce 知識文章

4.3. 主要功能

功能優勢
託管分塊自動分割文件(固定、語義、階層式)
自動同步資料變更時定期重新索引
來源標註回答時附帶來源文件
中繼資料過濾按自訂中繼資料欄位過濾分塊
混合搜尋結合語義搜尋 + 關鍵字搜尋
Guardrails 整合對 RAG 回應套用安全過濾器

考試提示:「一家公司想建立一個聊天機器人,從存儲在 S3 中的內部文件回答問題,且自訂程式碼最少」→ Amazon Bedrock Knowledge Bases。

5. RAG 與微調的比較

因素RAG微調
目的存取外部/最新資料教授新技能/領域模式
資料新鮮度始終保持最新固定在訓練時間
需要訓練嗎?不需要模型訓練是的,需要標記資料 + 運算
成本向量資料庫 + 檢索成本訓練運算 + 儲存
幻覺減少(基於資料)仍可能產生幻覺
延遲略高(檢索步驟)與基礎模型相同
最適用於問答、搜尋、知識庫風格、語氣、領域特定模式
資料隱私資料保留在你的向量資料庫中資料用於訓練過程

決策矩陣:

「需要從公司文件回答問題?」         → RAG
「需要即時/最新資訊?」             → RAG
「需要改變模型的寫作風格?」         → 微調
「需要模型遵循特定格式?」           → 先嘗試提示 → 然後微調
「需要領域特定術語?」               → RAG(如果在文件中)或微調(如果是模式)
「最少努力/成本?」                  → RAG > 提示工程 > 微調

6. 評估 RAG 品質

指標衡量內容
忠實度回答是否基於檢索到的文件?(無幻覺)
相關性檢索到的文件是否與查詢相關?
答案正確性最終答案是否事實正確?
上下文精確度檢索到的分塊中有多少百分比實際相關?
上下文召回率是否檢索到所有相關的分塊?

7. 練習題

Q1:一家醫療公司想要一個 AI 助手,從存儲在 Amazon S3 中的最新醫學研究論文回答問題。資訊每週更新。哪種方法最合適?

  • A) 在論文上微調基礎模型
  • B) 使用 RAG 搭配 Amazon Bedrock Knowledge Bases ✓
  • C) 使用 zero-shot 提示搭配大上下文視窗
  • D) 在醫學資料上預訓練自訂模型

解說:RAG 搭配 Bedrock Knowledge Bases 是理想選擇——它自動索引 S3 文件,每次查詢檢索相關資訊,並透過自動同步保持回應為最新,無需重新訓練。

Q2:在 RAG 管線中,分塊文件的主要目的是什麼?

  • A) 降低儲存成本
  • B) 將文件分割成可管理的片段以進行嵌入和檢索 ✓
  • C) 加密敏感資料
  • D) 將文件轉換為不同的檔案格式

解說:分塊將大型文件分割成較小的、語義上有意義的片段,可以單獨進行嵌入和檢索。這使得能夠精確檢索相關資訊,而不是處理整個文件。

Q3:一家公司建立了 RAG 應用程式,但有時會回傳檢索到的文件不支援的答案。他們應該專注於改善哪個指標?

  • A) 上下文召回率
  • B) 答案長度
  • C) 忠實度 ✓
  • D) 回應延遲

解說:忠實度衡量生成的答案是否基於檢索到的文件。低忠實度表示模型生成了超出檢索到的上下文所支援的資訊(RAG 情境中的幻覺)。