Retrieval-Augmented Generation 入門指南

AI 2025-01-01T00:00:00.000Z

Retrieval-Augmented Generation 入門指南

Retrieval-Augmented Generation(RAG)是近年來 AI 和自然語言處理領域最受矚目的架構之一。它結合了檢索系統與生成模型的優勢,讓大型語言模型(LLM)能夠引用外部知識庫產生更準確、更即時的回答。

為什麼需要 RAG?

傳統的 LLM 訓練完成後,其知識就被固定在模型權重中。這意味著知識有截止日期、容易產生幻覺(hallucination)、無法引用企業內部文件或私有知識。RAG 透過在「推論階段」動態注入外部文件,解決了這些問題。

RAG 架構核心元件

1. 文件解析與切片(Chunking)

將原始文件切割成適當大小的片段(chunks),通常每個 chunk 包含 256-1024 個 tokens。

from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=512, chunk_overlap=50)
chunks = splitter.split_text(document)

2. 向量嵌入(Embedding)

透過 Embedding Model 將文字轉換為高維向量。常用模型包括 OpenAI text-embedding-3、Cohere Embed v3、BGE-M3 等。

3. 向量資料庫(Vector Database)

資料庫 類型 適用場景
Pinecone 託管服務 快速原型開發
Weaviate 開源 自架企業級應用
Chroma 嵌入式 本地開發測試
Cloudflare Vectorize Edge 邊緣運算場景

實作注意事項

  • Chunk overlap 能避免上下文被切斷,建議設為 chunk_size 的 10-20%
  • Metadata 儲存:每個 chunk 應記錄來源文件、頁碼等資訊
  • Hybrid Search 結合關鍵字搜尋(BM25)與語義搜尋,提升召回率