JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

為什麼需要檢索增強生成?

模型只記得訓練時看過的東西;RAG 讓它先查資料再回答。

閉卷考的難題

一般的語言模型是憑記憶回答的。它能說出來的一切,都是在訓練時烙進權重裡的,之後再新的東西都進不來。這個固定的界線有個名字——知識截止點(knowledge cutoff)——意思是它沒聽過昨天的新聞、你們公司的內部維基,也沒看過你今早簽的合約。就算問了,它通常還是會自信地回答,編出聽起來很合理的細節。這種自信滿滿的捏造就是幻覺(hallucination)。

闭卷模型只能依据训练时记入权重的内容,逐词生成答案。

自回归循环示意图,每个生成的词元都被回送作为下一步的输入。

把模型做得更大並不能解決這個問題。缺的事實本來就不在訓練資料裡——就算曾經在,你也不可能每次有文件異動就重新訓練一個巨大的模型。我們需要一種方法,能在提問當下正確的資訊餵給模型,既即時又貼合任務。

開卷考的點子

檢索增強生成(Retrieval-Augmented Generation,RAG)把閉卷考變成開卷考。在模型寫下任何字之前,會先有一個搜尋步驟,從可信的文件集合裡撈出最相關的段落,貼進提示(prompt)中。接著模型就根據那些段落作答,而不是憑記憶猜。把答案錨定在提供的證據上,稱為接地(grounding)

RAG 把闭卷考试变成开卷:先检索最相关的段落,再据此生成答案。

流程图:查询进入面向文档库的检索器,最相关的段落被粘贴进提示词,模型随后生成答案。

為什麼這招這麼有效:模型非常擅長閱讀並改寫你給它的文字,就算它從沒在訓練時看過那段文字也一樣。RAG 正好發揮這個強項。它把知道什麼(存在一個外部、易於更新的集合裡)和推理與用詞(模型的工作)分開。更新一份文件,下一個答案就會反映出來——完全不必重新訓練。

三個步驟

幾乎每一套 RAG 系統,不管再花俏,骨子裡都是同樣三招:

  1. 檢索(retrieve)——拿使用者的問題去搜尋文件集合,回傳最可能含有答案的幾個段落。這個集合通常存在支援快速語意搜尋(semantic search)的向量資料庫(vector database)裡。
  2. 增強(augment)——把那些段落和問題一起貼進提示中,再加上類似只根據下方脈絡作答的指示。
  3. 生成(generate)——讓模型寫出答案,此時它依據的是檢索到的證據,而不是模糊的記憶。

什麼時候該用 RAG

當知識量很大、經常變動、或屬於私有資料時,RAG 最能發揮——手冊、政策、客服工單、研究文獻庫、程式碼庫都是。一個誘人的替代做法是把整份語料倒進提示裡,仰賴超長的脈絡視窗(context window),但這很快就會變慢又昂貴,而且當視窗被大量不相關的文字塞滿時,品質會下滑。檢索能讓提示保持精簡又切題。

另一個替代方案——微調(fine-tuning)——是把知識重新烙回權重裡,很適合教風格格式,但對於必須保持最新、或需要被引用的事實就不太合適。一個好用的原則:微調用來調行為,檢索用來補知識。本系列接下來會逐塊打造每個環節——知識庫、檢索器、有依據的提示,以及告訴你它真的有效的評估方法。