指南

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

RAG(檢索增強生成)係一種令 AI 模型用你自己嘅資料回答問題嘅方法。當有人提出問題,你嘅應用程式會先喺你嘅文件入面搵出最相關嘅段落,然後連同問題一齊交俾模型。模型會根據呢啲文字寫答案,而唔係只靠佢喺訓練期間碰巧學到嘅嘢。

用 AI 建造嘢時,點解 RAG 重要

大型語言模型對世界一般嘅事有好多認識,但唔認識你嘅生意:你嘅價錢、政策、產品說明書、上星期嘅支援工單。佢仲有訓練截止日期,所以唔知道最近發生嘅事。如果你照樣問佢,佢可能會好有信心咁畀你一個錯誤但聽落好似啱嘅答案。

要解決呢個問題,你大致有三個選擇:

方法做咩適合
將所有嘢放入提示每次提問都送出所有文件文字量少,例如幾頁
RAG搜尋你嘅文件,只送出相關部分較大或者會變動嘅資料,例如幫助中心、說明書、筆記
微調(Fine-tuning)透過例子進一步訓練模型語氣、格式同重複任務,而唔係會變動嘅事實

現代模型可以接受好長嘅提示,所以如果只係一份短嘅常見問題,第一個方法通常已經足夠。當你嘅文字多到唔想每次都全部送出,RAG 就有存在價值,因為你送出嘅每一個字都要錢同時間(參閱LLM API 點樣收費)。

如果你想建立「同我哋嘅文件傾偈」功能、支援助手或者內部知識工具,你幾乎肯定正在建造某種形式嘅 RAG。

日常生活比喻

想像一場開卷考試。一個要靠記憶作答嘅學生,可能會記錯或者亂作答;但一個可以先翻到正確頁數、讀完再作答嘅學生,就可靠得多,前提是佢搵到正確嘅頁。

  • 學生就係語言模型。
  • 課本就係你嘅文件。
  • 翻到正確嘅頁就係檢索(retrieval)。
  • 根據嗰幾頁寫答案就係生成(generation)。

RAG 就係開卷版本。同考試一樣,答案質素好大程度取決於有冇搵到正確嘅頁。

RAG 點樣運作,逐步睇

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

預先準備文件(事先做好):

  1. 收集來源資料,例如幫助文章、PDF、政策、產品數據。
  2. 分段(Chunk):將長文件切成細件,通常每件數段落,咁搜尋時就可以只返回相關嘅部分。
  3. Embedding 每一段:將文字送去 embedding 模型,轉成 embedding,即一組捕捉其意思嘅數字。內容相近嘅文字,會得出相近嘅數字。
  4. 儲存:將各段同佢哋嘅 embedding 存入一個可以按相似度搜尋嘅資料庫(通常稱為向量資料庫或者向量索引)。

回答問題(每次都要做):

  1. 用同一個 embedding 模型,將問題 embedding。
  2. 檢索:搵出 embedding 最接近問題嘅段落,例如頭五段。
  3. 建立提示:包括指示、檢索到嘅段落同問題。
  4. 生成:語言模型根據嗰啲段落寫答案,最好同時註明用咗邊幾段。

令呢個方法成功嘅關鍵,係按意思搜尋:例如問「點樣追回我嘅錢」,即使兩者冇共同字詞,都可以搵到一段標題為「退款政策」嘅內容。

實例:健身室嘅幫助助手

假設一間健身室有 40 篇幫助文章,並想喺佢嘅網站上放一個聊天助手。會員問:「我去旅行嘅時候可唔可以暫停會籍?」

應用程式會將問題 embedding,然後檢索三段最接近嘅內容。其中一段寫住:

暫停會籍:月費計劃嘅會員每年可以暫停會籍最多 2 個月。
暫停開始前最少 7 日,可以喺櫃檯或者應用程式內提出申請。

之後送去模型嘅提示大致如下:

你係 Northside 健身室嘅幫助助手。
只根據以下來源作答。如果答案唔喺當中,
就講你唔知道,並建議聯絡櫃檯。
每次作答都要註明你用咗邊個來源。

[來源 1:暫停會籍] 月費計劃嘅會員可以暫停……
[來源 2:取消會籍] ……
[來源 3:嘉賓入場證] ……

問題:我去旅行嘅時候可唔可以暫停會籍?

然後模型答:「可以,月費計劃嘅會員每年最多可以暫停會籍兩個月。請喺暫停開始前最少 7 日到櫃檯或者喺應用程式提出申請(來源:暫停會籍)。」

健身室從來冇重新訓練任何嘢。當佢改動暫停政策,只需要更新文章,應用程式就會為嗰一段重新做 embedding,下一個答案就會反映新政策。

主要名詞

名詞意思
LLM大型語言模型,即負責寫答案嘅 AI。參閱什麼係 LLM。
Embedding代表一段文字意思嘅一組數字。
Embedding 模型產生 embedding 嘅模型。通常同聊天模型分開,而且平得多。
段(Chunk)文件嘅一部分,大小適合獨立檢索。
向量資料庫/向量搜尋搵出 embedding 相似嘅項目嘅儲存方式。一啲一般資料庫都有此功能,例如 Postgres 透過 pgvector 擴充功能提供。
Top-k每次提問檢索幾多段。
混合搜尋(Hybrid search)將按意思搜尋同普通關鍵字搜尋結合,對產品編號等精確字詞特別有用。
上下文窗口(Context window)模型一次請求可以處理嘅文字上限。
事實依據/引用(Grounding/Citations)將答案連結到特定嘅檢索來源,並顯示出嚟。

常見誤解

  • 「RAG 會用我嘅資料訓練模型。」 唔會。模型本身完全冇改變,佢只係喺提問時讀取額外嘅文字。
  • 「RAG 代表冇幻覺。」 只代表少啲幻覺。如果檢索漏咗正確嘅段落,或者答案根本唔喺你嘅文件入面,模型仍然可能亂猜。要指示佢講「我唔知道」,並用你已知答案嘅問題去測試。
  • 「我需要一個特別嘅向量資料庫。」 通常唔需要。如果資料量唔大,你現有資料庫嘅向量擴充功能,甚至普通嘅關鍵字搜尋,已經可以足夠。
  • 「段越大越好。」 太大會送出大量無關文字(費用更高、更混亂);太細則會令一段失去令它有意義嘅上下文。要不斷調整。
  • 「將所有嘢都上載就得。」 過時、重複或者互相矛盾嘅文件,會產生互相矛盾嘅答案。清理來源資料,往往係你可以做嘅最大改善。
  • 「任何人都可以睇到任何文件。」 只有你咁樣建造先會發生。如果某啲文件只屬於特定用戶,搜尋本身就必須按提問者嘅身份篩選,否則助手可能會將一位客戶嘅資料引述俾另一位客戶。

成本

RAG 功能通常有三項持續成本:為你嘅文件做 embedding(數量少,而且大多只需做一次)、為每個問題做 embedding(極少)、以及語言模型嘅調用(主要成本,會隨送出嘅段數增加)。另外仲有資料庫嘅儲存費用。你嘅 AI 供應商會將呢啲費用記入你自己嘅帳戶,所以請喺供應商嗰度設定消費上限。

要問你嘅 AI 建構器嘅嘢

  • 「建造 RAG 之前,先檢查:我哋嘅內容夠細,可以直接放入提示嗎?」
  • 「將幫助文章切成每段數段嘅長度,保留每段嘅標題同來源連結,並將 embedding 儲存喺我哋嘅資料庫。」
  • 「用混合搜尋,即按意思加關鍵字,咁產品編號都搵得到。」
  • 「指示模型只根據檢索到嘅來源作答,唔知道就講唔知道,並喺每個答案下面顯示來源。」
  • 「只搜尋已登入用戶可以睇嘅文件。」
  • 「文件一經編輯,就自動重新做 embedding。」
  • 「將 AI 供應商嘅金鑰放喺伺服器嘅機密設定入面,唔好放喺瀏覽器。」
  • 「記錄每個問題、檢索到嘅段落同答案,等我可以檢閱差劣嘅回答。」

Mythex 中嘅 RAG

Mythex 冇提供現成嘅知識庫或者 RAG 產品。佢做嘅係喺你嘅應用程式入面幫你寫一個:你提供文件同你自己嘅 AI 供應商金鑰(儲存為專案機密),然後代理會建構檢索同聊天部分,並使用專案嘅 Postgres 資料庫儲存資料。供應商用量會記入你嘅供應商帳戶,而唔係 Mythex 額度。文件建議先從一個簡單嘅 AI 功能開始,待佢運作正常之後再加入 RAG,詳情可以睇建構 AI 應用程式,亦可以參閱我哋嘅指南建立 AI 聊天機械人應用程式同為應用程式加入 AI 功能。

常見問題

簡單嚟講,什麼係 RAG?

RAG(檢索增強生成,retrieval-augmented generation)係一種令 AI 模型根據你自己資料作答嘅方法。模型回覆之前,你嘅應用程式會喺文件入面搵出最相關嘅段落,並將佢哋放入提示之中,所以答案係根據嗰啲文字,而唔係淨係靠模型喺訓練期間學過嘅嘢。

RAG 會唔會用我嘅資料去訓練 AI?

唔會。RAG 完全唔改變模型。佢只係喺問題被提出嗰一刻搵出相關文字,再連同問題一齊交俾模型。你更新咗一份文件,下一個答案就可以即時用到新版本。

RAG 同微調(fine-tuning)係咪一樣?

唔係。微調係透過更多例子去進一步訓練模型,改變佢嘅行為;速度較慢,較適合風格或格式方面嘅調整。RAG 則係喺問答時俾模型一啲事實去閱讀,較適合會變動嘅知識,或者需要準確引述嘅內容。

RAG 可以阻止 AI 幻覺(hallucination)嗎?

可以減少,但唔能夠完全消除。如果搜尋搵到錯誤嘅段落,或者答案根本唔喺你嘅文件入面,模型仍然可能亂猜。效果好嘅 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 简体中文 繁體中文(台灣)