返回首頁AI API

RAG 應用教學|2026 年用 LLM API 打造檢索增強生成系統

14 min 分鐘閱讀
#RAG#LLM#Embedding#向量資料庫#Pinecone#Qdrant#LangChain#檢索增強#AI 應用開發#企業 AI

RAG 應用教學|2026 年用 LLM API 打造檢索增強生成系統

讓 AI 不再胡說——RAG 是目前最實際的解決方案

你有沒有遇過這種情況:

問 AI「我們公司的年假政策是什麼」,它回答了一個聽起來很合理、但完全不是你公司規定的答案?

這不是 AI 在騙你。它真的不知道你公司的政策——因為你的內部資料不在它的訓練數據裡。

RAG(Retrieval-Augmented Generation) 就是讓 AI 在回答前「先查資料」的技術。

這篇教學會帶你從零開始建立一個 RAG 系統。不需要 AI 博士學位,有基本的 Python 能力就夠了。

想建置 RAG 系統?CloudInsight 協助您選擇最適合的 LLM API,企業方案享折扣。

開發者在筆電上用 Jupyter Notebook 建置 RAG Pipeline

TL;DR

RAG 系統的核心流程:文件切割 → Embedding 向量化 → 存入向量資料庫 → 使用者提問 → 向量搜尋找到相關資料 → 把資料塞進 Prompt → LLM 生成回答。推薦堆疊:OpenAI Embedding + Qdrant/Pinecone + Claude Sonnet/GPT-4o。整個系統可以在一天內建好原型。


RAG 架構設計與組件選擇

Answer-First: RAG 系統由三大組件構成——Embedding 模型(文字轉向量)、向量資料庫(儲存和搜尋向量)、LLM(生成回答)。每個組件都有多種選擇,正確組合才能發揮最大效果。

RAG 完整架構圖

                    離線流程(建立知識庫)
                    ════════════════════
文件/資料 → 文件切割 → Embedding → 向量資料庫
                    (Chunking)  (向量化)   (儲存)

                    線上流程(回答問題)
                    ════════════════════
使用者提問 → Embedding → 向量搜尋 → 取得相關文件
                ↓                        ↓
            查詢向量                  相關文件片段
                                         ↓
                               組合 Prompt → LLM → 回答

核心組件選擇

組件推薦方案替代方案
EmbeddingOpenAI text-embedding-3-smallCohere embed-v3、BGE-M3
向量資料庫Qdrant(自架)或 Pinecone(託管)Weaviate、Chroma、pgvector
LLMClaude Sonnet 或 GPT-4oGPT-4o-mini、Gemini Pro
框架LangChain 或 LlamaIndex自建(更靈活)

文件切割(Chunking)策略

這是 RAG 系統品質的關鍵。切太大,搜尋精度低。切太小,缺少上下文。

策略Chunk 大小Overlap適合場景
固定大小500 tokens50 tokens通用
段落分割依段落1-2 句結構化文件
語意分割動態自動混合內容
遞歸分割200-100010-20%程式碼文件

我們的建議: 從固定大小(500 tokens、50 tokens overlap)開始,根據檢索結果的品質再調整。

LLM 的核心技術原理與模型差異,請參考 LLM 是什麼?入門指南


選擇最適合 RAG 的 LLM API

Answer-First: RAG 系統中 LLM 的任務是「根據檢索到的資料生成回答」。需要的是指令遵循能力和引用準確性,不一定需要最強的模型。

各 LLM 在 RAG 場景的表現

能力GPT-4oClaude SonnetGemini ProGPT-4o-mini
指令遵循9/1010/108/108/10
引用準確8/109/108/107/10
拒答能力7/109/107/106/10
長 Context128K200K1M128K
成本效益極佳

「拒答能力」為什麼重要?

在 RAG 系統中,如果檢索到的資料不夠回答使用者的問題,AI 應該說「我不確定」而不是編造答案。Claude 在這方面做得最好——它很誠實地告訴你「根據提供的資料,無法回答這個問題」。

成本估算

假設你的 RAG 系統每天收到 100 個問題,每個問題的 Context 約 2000 tokens:

模型每日成本每月成本
GPT-4o~$0.50~$15
Claude Sonnet~$0.60~$18
Gemini Pro~$0.25~$7.5
GPT-4o-mini~$0.03~$1

Embedding 費用另計(通常很低,約 $1-5/月)。

更多費用分析請參考 AI API 費用比較

CloudInsight 提供 LLM API 企業採購,享折扣優惠與技術支援。諮詢 RAG 系統 API 採購方案 →


Embedding 與向量資料庫設定

Answer-First: Embedding 是把文字轉成數字向量的過程。向量資料庫是專門儲存和搜尋這些向量的資料庫。兩者搭配,讓你的 RAG 系統能快速找到最相關的資料。

Embedding 怎麼運作

簡單來說:

"台灣的首都是台北"
  → Embedding 模型
    → [0.023, -0.156, 0.891, ...] (1536 個數字)

語意相近的句子,轉成的向量也會很接近。所以搜尋時,只需要比較向量之間的「距離」。

實作:建立 RAG Pipeline

# Step 1: 安裝必要套件
# pip install openai qdrant-client langchain

from openai import OpenAI
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct

# Step 2: 初始化
openai_client = OpenAI()
qdrant = QdrantClient(":memory:")  # 開發用記憶體模式

# Step 3: 建立向量集合
qdrant.create_collection(
    collection_name="knowledge_base",
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)

# Step 4: 文件 Embedding 並存入
def embed_and_store(documents):
    for i, doc in enumerate(documents):
        response = openai_client.embeddings.create(
            model="text-embedding-3-small",
            input=doc["content"]
        )
        qdrant.upsert(
            collection_name="knowledge_base",
            points=[PointStruct(
                id=i,
                vector=response.data[0].embedding,
                payload={"content": doc["content"], "source": doc["source"]}
            )]
        )

# Step 5: 搜尋相關文件
def search(query, top_k=3):
    query_vector = openai_client.embeddings.create(
        model="text-embedding-3-small",
        input=query
    ).data[0].embedding

    results = qdrant.search(
        collection_name="knowledge_base",
        query_vector=query_vector,
        limit=top_k
    )
    return results

# Step 6: RAG 生成回答
def rag_answer(question):
    results = search(question)
    context = "\n".join([r.payload["content"] for r in results])

    response = openai_client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": f"根據以下資料回答問題。如果資料中沒有相關資訊,請說「根據現有資料無法回答」。\n\n資料:\n{context}"},
            {"role": "user", "content": question}
        ]
    )
    return response.choices[0].message.content

向量資料庫比較

資料庫部署方式免費方案適合規模特色
Pinecone託管1M 向量中大型最簡單
Qdrant自架/託管開源免費任何功能最全
Weaviate自架/託管開源免費中大型GraphQL 介面
Chroma自架開源免費小型最輕量
pgvector自架(PostgreSQL)開源免費小中型整合既有 DB

螢幕上的向量資料庫管理介面顯示文件 Embedding 狀態


RAG 效果優化技巧

Answer-First: RAG 的品質取決於三個環節——檢索品質、Context 組裝、生成品質。大部分問題出在檢索品質不夠好。

常見問題與優化方法

問題 1:搜尋結果不相關

解法:

  • 嘗試不同的 Chunk 大小
  • 使用 Hybrid Search(向量搜尋 + 關鍵字搜尋)
  • 加入 Metadata 過濾(如:文件類型、日期)

問題 2:回答不夠完整

解法:

  • 增加 top_k(搜尋結果數量)
  • 使用多步驟檢索(先找大範圍,再細搜)
  • 增大 Chunk 的 overlap

問題 3:回答有幻覺

解法:

  • 在 System Prompt 中強調「只根據提供的資料回答」
  • 要求 LLM 引用來源
  • 使用更遵循指令的模型(Claude Sonnet)

問題 4:速度太慢

解法:

  • 使用較小的 Embedding 模型(text-embedding-3-small)
  • 減少 top_k
  • 使用 Streaming 回應
  • 快取常見問答

進階優化:Reranking

檢索後,用 Reranker 模型重新排序結果:

# 使用 Cohere Rerank
import cohere
co = cohere.Client()

results = co.rerank(
    query="退貨政策是什麼",
    documents=["搜尋結果1", "搜尋結果2", "搜尋結果3"],
    model="rerank-v3.5"
)

Reranking 可以把搜尋準確率從 70% 提升到 85%+。

更多技術教學請參考 API 教學入門指南AI 程式碼生成指南

並排顯示 RAG 優化前後的回答品質差異


FAQ:RAG 應用常見問題

RAG 可以處理多少種文件格式?

RAG 本身不限格式。只要你能把文件轉成文字,就能放進 RAG 系統。常見支援:PDF、Word、Excel、HTML、Markdown、純文字。圖片和表格需要額外的 OCR 或多模態處理。

RAG 系統需要多大的伺服器?

取決於架構。如果使用雲端服務(OpenAI API + Pinecone),完全不需要自己的伺服器。如果完全自架(開源 LLM + Qdrant),建議至少 16GB RAM、4 核 CPU。GPU 不一定需要(除非自架 LLM)。

RAG 可以用在即時聊天機器人嗎?

可以,但需要優化速度。建議使用 Streaming 回應、快取常見問答、選用速度快的模型(GPT-4o-mini 或 Gemini Flash)。典型延遲:2-5 秒。

知識庫需要多常更新?

取決於你的資料更新頻率。建議設定自動化 Pipeline:文件更新 → 重新 Embedding → 寫入向量資料庫。可以用 CI/CD 工具自動化這個流程。

LangChain 和 LlamaIndex 哪個好?

LangChain 功能更全面,適合複雜的 AI 應用。LlamaIndex 專注於 RAG,設定更簡單。如果你只做 RAG,建議 LlamaIndex。如果還要做 Agent 等其他功能,選 LangChain。

了解完整的 LLM 與 RAG 策略,請回到 LLM 與 RAG 應用指南


結論:RAG 是最務實的企業 AI 解決方案

不需要 Fine-tuning,不需要訓練自己的模型。

RAG 讓你用現成的 LLM API + 自己的資料,就能打造出可靠的 AI 應用。

下一步行動:

  1. 準備你的知識庫文件
  2. 選擇 Embedding 和 LLM API
  3. 用上面的程式碼建一個原型
  4. 測試、優化、上線

整個過程可以在一天內完成原型。不要過度設計,先做出來再說。


立即諮詢企業方案

CloudInsight 提供 RAG 所需的 LLM API 企業採購:

  • OpenAI Embedding + Claude/GPT 生成 API 統一採購
  • 企業專屬折扣,降低 RAG 系統營運成本
  • 統一發票、中文技術支援

立即諮詢企業方案 →加入 LINE 即時諮詢 →



參考資料

  1. OpenAI - Embedding Models Documentation(2026)
  2. Qdrant - Official Documentation(2026)
  3. Pinecone - Vector Database Guide(2026)
  4. LangChain - RAG Tutorial(2026)
  5. Cohere - Rerank API Documentation(2026)
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "RAG 應用教學|2026 年用 LLM API 打造檢索增強生成系統",
  "author": {
    "@type": "Person",
    "name": "CloudInsight 技術團隊",
    "url": "https://cloudinsight.cc/about"
  },
  "datePublished": "2026-03-21",
  "dateModified": "2026-03-22",
  "publisher": {
    "@type": "Organization",
    "name": "CloudInsight",
    "url": "https://cloudinsight.cc"
  }
}
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "RAG 系統需要多大的伺服器?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "如果使用雲端服務(OpenAI API + Pinecone),完全不需要自己的伺服器。如果完全自架,建議至少 16GB RAM、4 核 CPU。"
      }
    },
    {
      "@type": "Question",
      "name": "RAG 可以用在即時聊天機器人嗎?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "可以,但需要優化速度。建議使用 Streaming 回應、快取常見問答、選用速度快的模型。典型延遲:2-5 秒。"
      }
    },
    {
      "@type": "Question",
      "name": "LangChain 和 LlamaIndex 哪個好?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "LangChain 功能更全面,適合複雜的 AI 應用。LlamaIndex 專注於 RAG,設定更簡單。如果只做 RAG,建議 LlamaIndex。"
      }
    }
  ]
}

需要專業的雲端建議?

無論您正在評估雲平台、優化現有架構,或尋找節費方案,我們都能提供協助

預約免費諮詢

相關文章