昨天我們完成了資料契約,統一了欄位名稱、資料型態、單位、來源與版本。
今天遇到的新問題是:
資料已經整理好了,AI 真的會正確使用嗎?
假設我們有一份校園餐點資料,使用者詢問:
「彰化市區晚上還有 100 元以下、適合素食者的餐點嗎?」
如果直接把問題交給一般聊天機器人,AI 可能會:
今天要學的 RAG,就是讓 AI 先搜尋指定資料,再根據找到的內容回答。
RAG 是 Retrieval-Augmented Generation 的縮寫,中文可以翻成「檢索增強生成」。
它不是重新訓練一個 AI,而是把外部資料加入回答流程:
一般聊天流程:
使用者問題
→ AI 直接回答
RAG 流程:
使用者問題
→ 搜尋專題資料
→ 找到相關證據
→ AI 根據證據回答
→ 顯示來源
RAG 不能保證答案永遠正確。
如果原始資料錯誤、過期或沒有涵蓋問題,RAG 仍然可能產生不完整的回答。因此,RAG 的重點不是「讓 AI 自動知道一切」,而是讓回答有明確的資料依據。
以我們的餐點推薦專題為例:
| 問題 | 沒有 RAG 時 | 使用 RAG 後 |
|---|---|---|
| 資料來源 | AI 依一般知識回答 | AI 讀取指定資料 |
| 資料更新 | 可能使用過時資訊 | 可重新匯入新版本 |
| 專題資料 | AI 不知道團隊資料 | AI 可搜尋專題資料 |
| 引用追蹤 | 很難確認依據 | 可保留來源欄位 |
| 不知道答案 | 容易自行猜測 | 可要求回答資料不足 |
RAG 特別適合:
將昨天整理好的資料放入系統,例如:
資料匯入前,必須先確認:
一份很長的文件不能直接當成一個搜尋單位。
系統通常會把文件切成許多較小的文字片段,讓搜尋時可以找到更相關的內容。
例如:
原始文件
→ 問題背景
→ 使用者需求
→ 餐點資料
→ 資料限制
→ 團隊決策
切分時不要只按照固定字數處理,也要考慮內容結構。
比較好的片段通常包含:
如果切得太大,搜尋結果可能包含很多無關內容。
如果切得太小,重要的前後文可能被分開。
索引可以想成一本大型資料的目錄。
系統會替每個資料片段建立可搜尋的表示方式,讓「便宜的素食餐點」和「低預算蔬食選項」有機會被視為相關內容。
這種搜尋不只依靠完全相同的關鍵字,也可能使用語意相似度。
但是語意搜尋不是萬能的。
以下內容仍然需要額外處理:
因此,實際專題通常會混合:
當使用者提出問題時,系統會從資料中找出最相關的片段。
例如:
使用者問題:
彰化市區晚上還有 100 元以下的素食餐點嗎?
檢索條件:
- 類別:餐點
- 預算:100 元以下
- 飲食標籤:素食
- 查詢時間:晚上
- 資料版本:places_v1.0
這時候不要把所有資料都交給 AI。
比較好的做法是:
這樣可以減少 AI 讀取無關資料,也能降低成本。
檢索到的內容會和使用者問題一起交給 AI。
可以使用以下提示詞:
你是 AI 專題中的資料型推薦助手。
請只根據我提供的候選資料回答,不要使用未提供的外部資訊。
回答規則:
1. 先列出符合條件的候選項目。
2. 說明每個候選項目符合哪些條件。
3. 每個重要主張都要附上 source_url。
4. 如果資料沒有提供營業狀態,不要自行推測目前是否營業。
5. 如果沒有完全符合的項目,請明確說明「目前資料不足」。
6. 不要把 estimated、unknown 或 simulated 改寫成 confirmed。
7. 最後列出仍需要人工確認的事項。
使用者條件:
- 預算:100 元以下
- 飲食限制:素食
- 時段:晚上
- 地點:彰化市區
候選資料:
請貼上經過篩選的 JSON 或表格資料。
這份提示詞的重點不是要求 AI「推薦最好的答案」,而是限制它:
RAG 產生回答後,不能直接放到網站或簡報。
至少檢查:
| 檢查項目 | 要確認的內容 |
|---|---|
| 資料相關性 | 找到的資料真的和問題有關 |
| 引用正確性 | 來源確實支持回答 |
| 數值一致性 | 價格、距離及日期沒有被改寫 |
| 狀態保留 | unknown 沒有被改成確定答案 |
| 時效性 | 營業時間及價格是否仍有效 |
| 範圍限制 | 沒有把小樣本說成全體結論 |
| 輸出格式 | 網站需要的欄位都有提供 |
| 不確定性 | 資料不足時有清楚說明 |
對沒有程式背景的大一生,可以先使用以下流程:
Google Drive
→ Google Sheets 整理資料
→ NotebookLM 或其他可上傳資料的 AI 工具
→ 以來源為範圍提問
→ 人工檢查引用
→ 將確認結果放入簡報或網站
這條路線適合:
若要做成真正的網站功能,可以再進階使用:
OpenAI 官方文件提供 File Search 與 Retrieval 的 API 說明;Google Cloud 也提供 RAG Engine 與相關架構文件。API、雲端儲存及模型使用量可能產生成本,實際價格與免費額度應以官方最新頁面為準。:chatgpt-content-reference{index="1"}
以下做法看起來快速,實際上容易出錯:
把整份資料貼給 AI
→ 要求 AI 自由整理
→ 直接把結果放進網站
問題包括:
比較可靠的流程是:
原始資料
→ 清理與版本確認
→ 固定欄位篩選
→ 檢索相關片段
→ AI 產生草稿
→ 人工查證
→ 發布
每個資料片段都建議保留以下欄位:
source_id
source_name
source_type
source_url
dataset_version
collected_at
verified_at
verification_status
例如:
{
"source_id": "SRC001",
"source_name": "校園餐廳公告",
"source_type": "official_website",
"source_url": "https://example.edu.tw/dining",
"dataset_version": "places_v1.0",
"collected_at": "2026-09-21T16:00:00+08:00",
"verified_at": "2026-09-22T09:00:00+08:00",
"verification_status": "verified"
}
如果資料是團隊模擬的,應標示:
verification_status: simulated
如果目前還沒有查證,應標示:
verification_status: unknown
狀態欄位很重要,因為評審可能會問:
你們的推薦資料是真實資料,還是示範資料?
不要只測試一個問題。
建議建立至少十題測試問題,包含不同類型:
| 測試類型 | 範例 |
|---|---|
| 直接查詢 | 找出 100 元以下餐點 |
| 多條件查詢 | 找出晚上營業且適合素食者的餐點 |
| 無結果查詢 | 找出 20 元以下的完整晚餐 |
| 資料不足 | 查詢沒有記錄的營業時間 |
| 版本查詢 | 只使用最新資料版本 |
| 來源查詢 | 列出每個推薦項目的來源 |
| 反向問題 | 哪些資料目前不能確認 |
| 邊界問題 | 預算剛好 100 元的項目 |
| 模擬資料 | 只列出 simulated 資料 |
| 故意誤導 | 要求 AI 自行猜測缺少欄位 |
每一題先寫出預期結果,再測試 AI。
| 驗收項目 | 合格標準 |
|---|---|
| 能找到相關資料 | 大部分問題都能找到正確片段 |
| 能處理無結果 | 沒有資料時不自行補完 |
| 引用可追溯 | 能回到來源名稱或網址 |
| 版本一致 | 網站與 AI 使用同一版本 |
| 狀態正確 | unknown 與 simulated 沒有被誤改 |
| 條件有效 | 預算、時段、分類條件真的有作用 |
| 輸出穩定 | 相同測試問題結果大致一致 |
| 人工可檢查 | 團隊能理解推薦原因 |
| 個資安全 | 沒有把不必要個資放入知識庫 |
| 失敗可追蹤 | 能知道是資料、檢索或生成階段出錯 |
RAG 只能提供資料,不代表 AI 一定正確。
如果檢索結果不相關,AI 仍然可能產生錯誤答案。
因此要分開檢查:
如果要找「價格剛好 100 元」或「資料版本 1.0」,不能只依賴語意相似度。
價格、日期、版本與分類應該使用固定欄位篩選,再交給 AI 做比較與說明。
如果一段資料只有:
價格:80 元
卻沒有店名、日期與來源,AI 找到這段資料也不知道它代表什麼。
每個片段都應保留必要上下文。
AI 摘要是衍生資料,不是原始證據。
建議使用以下標記:
SOURCE:原始來源
RETRIEVED:檢索到的資料片段
AI_DRAFT:AI 產生的草稿
VERIFIED:人工確認完成
DECISION:團隊正式採用
至少包含:
包含正常查詢、無結果查詢、資料不足查詢與來源查詢。
比較:
記錄三種方式的:
每次回答出錯時,記錄:
測試問題:
使用的資料版本:
找到的資料:
AI 回答:
錯誤類型:
應該如何修正:
今天的完成條件是:
團隊能展示一個問題,說明 AI 找到了哪些資料、如何產生回答,以及如何確認回答沒有超出證據。
RAG 不是把資料上傳後就完成,而是一條完整的專題流程:
資料匯入
→ 資料切分
→ 建立索引
→ 檢索相關片段
→ 根據證據生成
→ 人工查證
→ 發布具有來源的結果
AI 可以協助搜尋、比較與說明,但團隊仍然要負責:
能得獎的專題,通常不只是展示「AI 很會回答」,而是能清楚說明:
這個答案使用了哪些資料,為什麼可信,失敗時如何被發現。
Day 9,我們將把 RAG 的回答接到專題網站,學習如何設計 AI 功能介面、錯誤狀態、來源顯示與使用者操作流程。
OpenAI|File Search
https://developers.openai.com/api/docs/guides/tools-file-search
OpenAI|Retrieval
https://developers.openai.com/api/docs/guides/retrieval
Google Cloud|What is Retrieval-Augmented Generation
https://cloud.google.com/use-cases/retrieval-augmented-generation
Google Cloud|RAG Engine overview
https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/rag-engine/rag-overview
以上資料於 2026 年 9 月 22 日查閱。工具功能、API 方案、免費額度與價格可能變動,使用前請查看官方最新文件。