核心概念

RAG(Retrieval-Augmented Generation,檢索增強生成)是解決 LLM主流地位與替代路徑 兩大根本限制的核心應用架構:知識截止日期(訓練資料有時效)與幻覺問題(模型憑空捏造事實)。核心邏輯是:不讓模型靠訓練記憶回答,而是推理時即時從外部知識庫檢索相關資訊,注入 prompt 後再生成答案。

完整 Pipeline

RAG 分兩大階段——

離線索引(Indexing),一次性建立知識庫:

  1. 文件分塊(Chunking):將長文件切成可檢索的段落。常見策略:
    • 固定大小:預設 512 tokens,重疊 50–100 tokens(約 10–20%),防止邊界語義斷裂
    • 語義分塊:偵測語義邊界切割,適合技術與學術文件
  2. 向量嵌入(Embedding):用 embedding 模型(如 all-MiniLM-L6-v2)將每個 chunk 轉成高維向量,相似語義在向量空間中距離接近
  3. 向量儲存(Vector DB):將向量連同原始文本存入資料庫,供後續檢索

線上查詢(Retrieval + Generation): 4. 將使用者問題嵌入相同向量空間 5. 用 cosine similarity 找出最相近的 chunks 6. 將檢索到的文本作為 context 注入 prompt,LLM 基於此生成答案

三代演進

世代 特徵 限制
Naive RAG 直接切塊→嵌入→檢索→生成 精度低,context 噪音多
Advanced RAG 加入 query rewriting、reranking 流程複雜度提升
Modular RAG 各組件可替換的模組化設計 需要更多工程協調

三種檢索策略

  • 稀疏檢索(BM25):關鍵字匹配,速度快,擅長精確詞彙(專有名詞、版本號)
  • 稠密檢索(Dense):向量相似度,擅長語義理解與同義詞
  • 混合檢索(Hybrid):用 Reciprocal Rank Fusion(RRF)融合兩者分數,生產環境首選

關鍵要點

  • Chunking 是精度關鍵:chunk 太大→噪音多;太小→缺乏上下文。起點建議 512 tokens + 50 tokens 重疊,依效果迭代調整
  • 嵌入模型必須一致:索引和查詢時必須用同一個 embedding 模型;混用會導致向量空間不對齊,檢索結果錯亂
  • 嵌入只是橋樑:向量嵌入無法還原為文字(單向轉換),送給 LLM 的永遠是原始文本,而不是向量本身
  • Hybrid 優於純向量:純語義搜索在精確詞彙上表現差;混合檢索能同時命中語義接近與關鍵字完全匹配的文件
  • HyDE 提升查詢品質:先讓 LLM 生成一份假設答案,再嵌入這份假設去搜索。假設的向量分布比原始問題更接近目標文件,可提升召回精度
  • RAG 可與 AI Agent 設計模式 結合:在 Agent 系統中,RAG 作為記憶層,讓 Agent 能動態查閱外部知識庫執行任務

實務應用

向量資料庫選型

資料庫 定位
FAISS Meta 開源,本地/離線環境
Chroma 輕量,開發測試首選
Weaviate Hybrid search + GraphQL,適合結構化查詢
Pinecone 全託管,零基礎架構負擔

生產環境三大優化

  1. Contextual Retrieval(Anthropic 2024):嵌入前先讓 LLM 為每個 chunk 生成上下文摘要,定位 chunk 在文件中的位置。實測可降低 67% 檢索失敗率
  2. Reranking:初次取 Top-20 候選,用 cross-encoder 精確重排,最終只取前 3–5 個送入 LLM,大幅降低 context 噪音
  3. 分層檢索:先從章節級索引定位大方向,再進入段落級精確搜索,降低跨無關段落的干擾

後端資料庫基礎概念 的差異:向量資料庫的查詢語言是數學距離,而非 SQL;索引結構是 HNSW(近似最近鄰圖),而非 B-Tree。

反向連結

以下頁面引用了本頁: