2024-01-29 | Sisley、Jocelyn
RAG (Retrieval-Augmented Generation) 是一種自然語言處理模型,它結合了檢索(retrieval)和生成(generation)的技術。它使用了檢索模組來從大量資料中提取相關訊息,然後將這些訊息融入生成模型中,以生成更準確和豐富的回答或內容。這種結合使得模型能夠更好地理解問題並生成更有意義的答案,是自然語言理解和生成領域的一個前沿技術。

RAG(Retrieval-Augmented Generation)是近年來在自然語言處理領域嶄露頭角的一種模型,結合了檢索(Retrieval)和生成(Generation)兩種技術,由於在生成文本的過程中利用了外部知識來源,可以帶來更深入和準確的文本理解能力以及更高品質、更具相關性的生成結果。
RAG 是一張給 LLM 看的「小抄」
RAG 的工作流程如下:
- 首先,模型會接收到一個輸入提示,例如一個問題或一個要求。
- 然後,模型會使用其訓練資料來生成一個搜尋查詢。
- 接下來,模型會使用搜尋引擎來搜尋與查詢相關的資訊。
- 最後,模型會使用搜尋結果來生成一個回應。
你可以想像 RAG 是一本龐大的字典,而這本字典具有獨特的功能,不僅可以查詢現有的詞彙解釋,還能夠在字典中找到相關詞條,這些詞句提供了更多的上下文和相關資訊。除此之外,這個字典還具有一個即時造句的功能,能夠根據你的提問,即時造出精確、有邏輯的例句。
當你提出一個問題(輸入文本)時,檢索模組就像是在字典中查找詞條一樣,從中提取相關的訊息片段,這些片段就好比是字典中的定義和例句。透過這樣的檢索,模型能夠快速而精準地找到與問題相關的內容。
這些檢索到的訊息片段就像是字典中的詞條,它們被送入生成模型,就像是將這些詞條提供給一位即時造句的專家。生成模型運用這些訊息,以更精確且有邏輯的方式生成回答、文章或其他形式的內容,就像是即時造句的專家能夠根據給定的詞彙組合出有意義的句子一樣。
RAG 的雙重功能就好比是擁有一本字典,或一張給 AI 看的小抄,它不僅能提供靜態的定義和解釋,還能根據具體情境即時生成具有邏輯性和相關性的內容。
RAG 的原理與進行方式是什麼?可以解決什麼困難?
RAG的基本結構包括一個生成器(generator)和一個檢索器(retriever)。生成器負責生成文本,而檢索器則用來檢索與生成相關的外部知識。
- 檢索(Retrieval): 在這一階段,RAG 模型使用檢索模型,通常是一個檢索式記憶體網絡(Retriever),從龐大的資料庫中檢索相關訊息。這個模組能夠根據輸入的提示或查詢,從文本資料庫中找到相關的資訊片段。檢索模組的目標是確保提取的資訊與輸入文本有高度的相關性和完整性。
- 生成(Generation): 獲取到的檢索資訊接著被傳遞到生成模組中,通常是一個語言生成模型(如 GPT,BERT 等)。生成模組利用這些檢索到的資訊,以更有邏輯和意義的方式生成回答、文章或其他形式的內容。這讓模型能夠更好地理解檢索到的上下文資訊並生成更精確的回應。
- 整合和調整(Integration and Adjustment): 檢索到的資訊片段會與生成模型中的內部資訊相互結合,以產生最終的輸出。這個過程可能包括整合檢索到的訊息以及根據生成模型的內部機制進行調整,以確保生成的內容具有合適的邏輯和完整性。
RAG 模型的關鍵在於將檢索和生成兩個關鍵步驟無縫結合起來,以提供更深入和更準確的文本理解能力,這種結合檢索和生成的方法有助於克服傳統生成模型在處理「特定主題」或「需要特定知識的任務」時的困難,提高了生成文本的準確性和內容的相關性。
對於開發者和企業來說,RAG 有何優勢?
對於開發者或企業來說,RAG 也更「經濟實惠」。這是因為聊天機器人的開發,通常是從使用基礎模型(FM)開始的,但是為企業或領域特定資訊重新訓練 FM 的運算成本和財務成本都很高。因此,RAG 被視為是一種更加經濟實惠的方法,以將新資料引入 LLM 之中。
此外,使用 RAG,開發者也能對 AI 模型的資料來源具有更高的控制權。若在企業內部使用,則可以將敏將敏感資訊擷取限制為不同的授權層級,並確保 LLM 對適當的人產生適當的回應。
RAG 常見的應用有哪些?
RAG 在資訊檢索(Information Retrieval)主要有幾個優勢,包括提高準確性和可靠性、提高相關性、提高多樣性等。以下也列舉數個常見 RAG 應用案例:
- 問答系統(QA Systems):RAG 可以幫助模型從大量的文本數據中找到與問題相關的答案,並生成結構化的回應。例如,如果使用者問:「台灣的首都是哪裡?」,RAG 可以從搜尋結果中找到「台北」這個答案,並生成「台灣的首都是台北」這個回應。
- 文本摘要(Text Summarization):RAG 可以幫助模型生成更加簡潔和準確的摘要。例如,如果要將一篇文章摘要為 100 字,RAG 可以從搜尋結果中找到文章的關鍵資訊,並生成這個摘要,對於需要將大量資訊壓縮成簡要概括的應用場景非常有用。
- 對話系統(Dialogue Systems): 在智能對話系統中,RAG 可以幫助模型生成更加資訊豐富和有用的回應。例如,如果使用者問:「台北的天氣怎麼樣?」,RAG 可以從搜尋結果中找到台北當天的天氣資訊,並生成「今天台北的天氣晴朗,氣溫為 25 度」這個回應。
RAG 不是萬靈丹,可能有反效果
雖然 RAG 看似能讓 LLM 表現的更好,但也存在一些缺點。以下列舉數個例子:
- 計算資源需求高: RAG 模型通常需要大量的運算資源,特別是在檢索模組需要處理大型資料庫的情況下。這可能使得實際應用中的部署變得更為困難,尤其是在資源受限的環境中,可能在即時應用中產生延遲。
- 檢索模組不準確: 檢索模型的性能直接影響到整個模型的表現。如果檢索模型無法精確提取最相關的資訊,將影響生成模型的輸出品質,使其產生不準確或無意義的結果,因此,模組的性能高度依賴檢索模型的品質與能力。
- 過度依賴檢索: RAG 模型可能在某些情況下過度依賴檢索,而忽視生成模型的能力。這可能導致生成的內容過於依賴檢索到的資訊,失去一些創意和多樣性。此外,RAG 模型通常使用事先構建的檢索模型,這意味著在模型的運行過程中檢索的資訊是固定的。這可能導致模型對於動態或即時更新的知識庫的適應能力較差。
- 難以解釋性: 由於 RAG 模型的複雜性,其內部運作可能難以解釋。這使得難以理解模型如何進行檢索和生成,對模型的可信度和可解釋性提出挑戰。這對一些應用場景,如醫學或法律領域,可能是一個挑戰,另生成模型的黑盒特質,也可能對於一些需要高度解釋性的應用,如決策支援系統來說,可能不夠理想。
- 處理長文本有困難: 對於長篇文本,檢索-生成的過程可能變得複雜且效率低下(考量到運算資源)。如何將檢索到的多個知識片段組織成一個有組織且具有一致性的生成文本,是一個需要解決的問題。