指南

什麼是 RAG?檢索增強生成簡單說明

RAG(檢索增強生成,retrieval-augmented generation)是一種讓 AI 模型使用你自己的資訊來回答問題的方法。當有人提出問題時,你的應用程式會先在你的文件中搜尋最相關的段落,再把這些段落連同問題一起交給模型。模型會根據這些文字來撰寫答案,而不是只依賴它在訓練期間碰巧學到的內容。

用 AI 建立東西時,為什麼 RAG 很重要

大型語言模型對世界的一般知識很豐富,但對你的業務一無所知:你的價格、你的政策、你的產品手冊、上週的客服工單。它也有訓練的截止日期,所以不知道任何最近的事情。即使如此仍要求它回答,它可能會給出一個自信滿滿、看似合理,卻是錯誤的答案。

要解決這個問題,大致有三種做法:

做法運作方式適合的情況
把所有內容都貼進提示詞每次提問時都送出全部文件文字量很少,例如幾頁
RAG搜尋你的文件,只送出相關的部分較大或會變動的資料集合:客服中心、手冊、筆記
微調以範例進一步訓練模型語氣、格式和重複性的任務,而不是會變動的事實

現代模型可以接受很長的提示詞,因此對於簡短的常見問題集,第一種做法通常就夠用。當你的文字量多到不想每次都送出時,RAG 就有存在的價值,因為你送出的每個字都要花費金錢與時間(請參閱LLM API 如何計費)。

如果你正在建立「與我們的文件對話」功能、客服助理或內部知識工具,你幾乎肯定是在建構某種形式的 RAG。

日常生活中的比喻

想像一場開卷考試。一個必須憑記憶作答的學生,可能會記錯或胡亂作答。但如果學生可以先翻到正確的頁面,讀過之後再作答,答案就可靠得多,前提是他能找到正確的頁面。

  • 學生是語言模型。
  • 課本是你的文件。
  • 翻到正確的頁面就是檢索。
  • 根據那些頁面寫出答案就是生成。

RAG 就是開卷版本。和考試一樣,答案的品質很大程度上取決於是否找到了正確的頁面。

RAG 如何運作,逐步說明

典型的 RAG 設定分為兩個階段。

準備你的文件(事先完成):

  1. 收集原始資料:幫助文章、PDF、政策、產品資料。
  2. 切分(Chunk):把長文件拆成較小的片段,通常每段幾個段落,讓搜尋只需要回傳相關的部分。
  3. **嵌入(Embed)**每個片段:把它送入嵌入模型,將文字轉換為嵌入(embedding)。嵌入是一長串能捕捉文字意義的數字。描述相似事物的文字,會得到相似的數字。
  4. 儲存這些片段及其嵌入,放入可以依相似度搜尋的資料庫(通常稱為向量資料庫或向量索引)。

回答問題(每次都要進行):

  1. 使用相同的嵌入模型,嵌入問題。
  2. 檢索嵌入與問題最接近的片段,例如前五名。
  3. 建立提示詞:包含指令、檢索到的片段,以及問題。
  4. 生成:語言模型根據這些片段撰寫答案,最好能標明它使用了哪些片段。

正是依據意義來搜尋,讓這套做法能夠運作:一個問「怎麼把錢拿回來」的問題,即使與標題為「退款政策」的片段沒有任何相同的字,也能找到它。

實例:健身房的客服助理

假設一間健身房有 40 篇幫助文章,並想在網站上加入聊天助理。有位會員問:「我出差的時候可以暫停會籍嗎?」

應用程式會嵌入這個問題,並檢索三個最接近的片段。其中一個內容如下:

Membership freeze: Members on monthly plans can freeze their
membership for up to 2 months per year. Request it at the front
desk or in the app at least 7 days before the freeze starts.

接著送給模型的提示詞大致如下:

You are the help assistant for Northside Gym.
Answer only from the sources below. If the answer isn't in them,
say you don't know and suggest contacting the front desk.
Mention which source you used.

[Source 1: Membership freeze] Members on monthly plans can freeze...
[Source 2: Cancelling your membership] ...
[Source 3: Guest passes] ...

Question: Can I pause my membership while I'm travelling?

模型的回答是:「可以——月繳方案每年最多可以凍結會籍兩個月。請在凍結開始前至少 7 天,到櫃台或透過應用程式申請(來源:Membership freeze)。」

這間健身房從未重新訓練任何東西。當它變更凍結政策時,只要更新文章,應用程式重新嵌入該片段,下一次的回答就會反映新的政策。

關鍵術語

術語意思
LLM大型語言模型,也就是撰寫答案的 AI。請參閱什麼是 LLM。
嵌入(Embedding)代表一段文字意義的數字列表。
嵌入模型(Embedding model)產生嵌入的模型。通常與聊天模型分開,而且便宜得多。
片段(Chunk)文件的一部分,大小要能夠被單獨檢索。
向量資料庫/向量搜尋(Vector database / vector search)能找出嵌入相似之項目的儲存方式。一些一般的資料庫也有這項功能,例如 Postgres 透過 pgvector 擴充套件提供。
Top-k每次問題檢索的片段數量。
混合搜尋(Hybrid search)結合依意義的搜尋與一般的關鍵字搜尋,有助於比對產品代碼等精確字詞。
上下文視窗(Context window)模型在一次請求中能接受的最大文字量。
依據事實與引用(Grounding / citations)將答案連結到特定的檢索來源,並顯示這些來源。

常見迷思

  • 「RAG 會用我的資料訓練模型。」 並不會。模型本身完全不會改變;它只是在提問時閱讀額外的文字。
  • 「RAG 代表不會再有幻覺。」 它代表幻覺會減少。如果檢索漏掉了正確的片段,或答案根本不在你的文件中,模型仍可能猜測。請指示它在不知道時說「我不知道」,並用你已知答案的問題來測試。
  • 「我需要一個特殊的向量資料庫。」 通常不需要。對於數量不大的資料,你既有資料庫上的向量擴充功能,甚至單純的關鍵字搜尋,可能就已足夠。
  • 「片段越大越好。」 太大會送出大量不相關的文字(成本更高、更容易混淆);太小則片段會失去讓它有意義的上下文。需要反覆調整。
  • 「把所有東西都上傳就好。」 過時、重複或互相矛盾的文件,會產生互相矛盾的答案。整理來源資料,往往是最能改善效果的做法。
  • 「任何人都能看到任何文件。」 只有在你這樣建構時才會如此。如果某些文件只限特定使用者存取,搜尋本身就必須依提問者的身分進行篩選,否則助理可能會把某位顧客的資料引用給另一位顧客。

成本

RAG 功能通常有三項持續的成本:嵌入你的文件(數量少,而且大多只需做一次)、嵌入每一個問題(非常少),以及語言模型的呼叫(主要成本,會隨你送出的片段數量增加)。另外還有儲存在資料庫中的費用。你的 AI 服務商會把這些費用計在你自己的帳戶上,因此請在服務商那邊設定花費上限。

可以向 AI 建構工具要求的事項

  • 「在建構 RAG 之前先檢查:我們的內容是否小到可以直接放進提示詞中?」
  • 「把幫助文章切分成每段幾個段落的片段,保留每個片段的標題與來源連結,並將嵌入儲存在我們的資料庫中。」
  • 「使用混合搜尋,也就是依意義搜尋加上關鍵字搜尋,讓產品代碼仍然可以比對。」
  • 「要求模型只根據檢索到的來源作答,不知道時要說明,並在每個答案下方顯示來源。」
  • 「只搜尋目前登入的使用者有權限查看的文件。」
  • 「每當文件被編輯時,自動重新嵌入。」
  • 「把 AI 服務商的金鑰保存在伺服器的機密中,絕不放在瀏覽器裡。」
  • 「記錄每一個問題、檢索到的片段以及答案,讓我能檢視不好的回答。」

Mythex 中的 RAG

Mythex 沒有現成的知識庫或 RAG 產品。它的做法是在你的應用程式中為你撰寫這類功能的程式碼:你提供文件,以及你自己的 AI 服務商金鑰(以專案機密的形式儲存),而 agent 會使用專案的 Postgres 資料庫來儲存資料,並建立檢索與聊天的部分。服務商的用量會計在你的服務商帳戶上,而不是 Mythex 點數。文件建議先從一個簡單的 AI 功能開始,待它運作正常後再加入 RAG,請參閱建立 AI 應用程式,以及我們關於建立 AI 聊天機器人應用程式和為應用程式加入 AI 功能的指南。

常見問題

簡單來說,什麼是 RAG?

RAG(檢索增強生成,retrieval-augmented generation)是一種讓 AI 模型根據你自己的資訊來回答的方法。在模型回覆之前,你的應用程式會先在文件中搜尋與問題最相關的段落,並把它們放進提示詞中,讓答案以這些文字為依據,而不是只依靠模型在訓練時學到的內容。

RAG 會用我的資料來訓練 AI 嗎?

不會。RAG 完全不會改變模型。它是在提出問題的當下,查找相關文字,並連同問題一起交給模型。只要更新文件,下一次回答就能直接使用新版本。

RAG 和微調(fine-tuning)是一樣的嗎?

不一樣。微調是透過更多範例進一步訓練模型,以改變它的行為,速度較慢,較適合調整風格或格式。RAG 則是在提問時提供事實讓模型閱讀,較適合會變動的知識,或是必須準確引用的內容。

RAG 能杜絕 AI 幻覺嗎?

它能減少幻覺,但無法完全消除。如果搜尋找到錯誤的段落,或答案根本不在你的文件中,模型仍然可能猜測。設計良好的 RAG 應用程式會要求模型在不知道時直接說明,並顯示它所使用的來源。

Mythex · Pricing · 用 AI 打造任何東西 · 網站與應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費的 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港)