閉卷考的難題
一般的語言模型是憑記憶回答的。它能說出來的一切,都是在訓練時烙進權重裡的,之後再新的東西都進不來。這個固定的界線有個名字——知識截止點(knowledge cutoff)——意思是它沒聽過昨天的新聞、你們公司的內部維基,也沒看過你今早簽的合約。就算問了,它通常還是會自信地回答,編出聽起來很合理的細節。這種自信滿滿的捏造就是幻覺(hallucination)。
自回归循环示意图,每个生成的词元都被回送作为下一步的输入。
把模型做得更大並不能解決這個問題。缺的事實本來就不在訓練資料裡——就算曾經在,你也不可能每次有文件異動就重新訓練一個巨大的模型。我們需要一種方法,能在提問當下把正確的資訊餵給模型,既即時又貼合任務。
開卷考的點子
檢索增強生成(Retrieval-Augmented Generation,RAG)把閉卷考變成開卷考。在模型寫下任何字之前,會先有一個搜尋步驟,從可信的文件集合裡撈出最相關的段落,貼進提示(prompt)中。接著模型就根據那些段落作答,而不是憑記憶猜。把答案錨定在提供的證據上,稱為接地(grounding)。
流程图:查询进入面向文档库的检索器,最相关的段落被粘贴进提示词,模型随后生成答案。
為什麼這招這麼有效:模型非常擅長閱讀並改寫你給它的文字,就算它從沒在訓練時看過那段文字也一樣。RAG 正好發揮這個強項。它把知道什麼(存在一個外部、易於更新的集合裡)和推理與用詞(模型的工作)分開。更新一份文件,下一個答案就會反映出來——完全不必重新訓練。
三個步驟
幾乎每一套 RAG 系統,不管再花俏,骨子裡都是同樣三招:
什麼時候該用 RAG
當知識量很大、經常變動、或屬於私有資料時,RAG 最能發揮——手冊、政策、客服工單、研究文獻庫、程式碼庫都是。一個誘人的替代做法是把整份語料倒進提示裡,仰賴超長的脈絡視窗(context window),但這很快就會變慢又昂貴,而且當視窗被大量不相關的文字塞滿時,品質會下滑。檢索能讓提示保持精簡又切題。
另一個替代方案——微調(fine-tuning)——是把知識重新烙回權重裡,很適合教風格或格式,但對於必須保持最新、或需要被引用的事實就不太合適。一個好用的原則:微調用來調行為,檢索用來補知識。本系列接下來會逐塊打造每個環節——知識庫、檢索器、有依據的提示,以及告訴你它真的有效的評估方法。