RAG 檢索增強生成— 讓大型語言模型更聰明的秘密武器

Simon Liu
InfuseAI
Published in
9 min readNov 6, 2023

--

看完文章後歡迎按鼓勵,訂閱,並分享給所有想知道此類知識的所有人!

RAG 檢索增強生成 — 讓大型語言模型更聰明的秘密武器

本文內容難度: ★ ★ ★ ☆ ☆

建議閱讀對象:本次文章,我將以深入淺出的模式,帶大家從大型語言模型的局限性開始,一步一步了解到 RAG 檢索增強生成能夠為大家帶來的好處有哪些,以及大家可以使用什麼流程來進行導入工作。

大型語言模型的局限性

大型語言模型(Large Language Models, LLMs)具有強大的自然語言處理能力。這些模型透過大量的數據進行訓練,讓模型能夠理解和生成出人類使用的語言,甚至能夠在一定程度上理解上下文和意圖。此外,透過對話的形式,大型語言模型能夠與使用者互動,讓模型與使用者達到人機協作的作業模式,幫助解決問題。而模型甚至能夠在特定領域,提供專業的建議,這得益於它們在訓練過程中所吸收的大量知識。

然而,大型語言模型也存在明顯的局限性。首先,它們缺乏真正的理解能力,只能根據過去訓練數據中的經驗與方法進行回應。這意味著它們可能會在面對新知或異常情況時,無法正確回答解答。其次,回覆的內容可能會有偏見或不準確的問題,因為模型的回答只是反映了訓練數據中的想法。而且若不持續學習,這些模型將會無法獲取新知識。最後,隨著模型規模的增加,計算資源和儲存空間也將急劇增加,這將會限制了在低資源設備或環境中的應用可能性。也因此,目前會遇到的這些局限性,將會使得大型語言模型在很多情況下仍需要花費大量人類的參與和監督,才能達到最佳的效果。

I. RAG 檢索增強生成

檢索增強生成(Retrieval-Augmented Generation, RAG)是一種結合了搜尋檢索和生成能力的自然語言處理架構。透過這個架構,模型可以從外部知識庫搜尋相關信息,然後使用這些信息來生成回應或完成特定的NLP任務。

1. 基本機制

RAG架構主要由兩個部分構成:檢索器和生成器。檢索器負責從外部知識庫(例如,文本數據庫或預先訓練的知識嵌入)中檢索相關的知識訊息。這些檢索到的知識將會被送到生成器進行處理。而生成器會利用檢索到的知識來生成回應。通常,檢索器和生成器會通過一個聯合訓練的過程來學習如何協同工作,以產生符合目標的輸出內容。

2. 有沒有更簡單的方式了解什麼是 RAG?

RAG 的概念會牽扯到搜尋,又要生成,弄的很複雜,所以常常很多人問說有沒有更簡單的理解方法呢?

請大家回想一下大學時代的期中期末考,有些教授會針對較難的考試,會請學生經過自己融會貫通和整理後,將相關知識抄寫在A4紙上,讓學生能夠帶著這張「大抄」進入教室進行考試,那「大抄」的內容轉譯和整理,其實就是 RAG 過程,而 A4 紙張,就是你的 Embedding Vector Database 儲存庫,而當你帶著這個在考試時,你可以藉由 RAG 過後的內容,寫出最佳的解答出來。

示意圖 — 學生帶著經過整理的大抄,進到考場進行考試(Photo by DALLE-3)

II. RAG 的技術導入介紹

1. Sentence Transformer 簡介

Sentence Transformer 是一種專為句子和段落 Embedding 而設計的模型,它能夠以高效的方式計算句子的向量表示。這使得它在多種 NLP 任務(例如語意相似度計算和文本檢索)中表現出色。

2. RAG + Sentence Transformer 所帶來的好處

結合 RAG 和 Sentence Transformer 可以實現一個高效且準確的自然語言處理框架。具體來說,可以使用 Sentence Transformer 進行高效的知識庫搜尋檢索,並將檢索到的知識庫作為 RAG 模型的輸入,讓大型語言模型可以生成具有高度相關性和準確性的回答或文本。這種結合方式使得在大規模數據集上的文本檢索和生成更為快速和準確。

3. Sentence Transformer 參考資料

網路上其實有滿多Sentence Transformer 的資料,我把資訊彙整在底下,大家可以參考以下的資訊,去實踐出你想要做的知識資料庫:

  • Sentence Transformers Document: 裡面統整了如何使用 SentenceTransformers 套件來進行知識庫轉換作業。
  • HuggingFace: 在 HuggingFace 上,其實有非常多的開源模型,可以使用 SentenceTransformers 來進行轉換和使用,幫助在找尋知識庫時,可以找得更精準。
  • 文章 — Sentence Transformers 使用方法介紹:其實 Sentence Transformers 在過去做 NLP 專案時,其實就是很常使用的方法,幫助做檢索的功能,所以以下文章是我認為介紹也非常好的 Medium 文章,幫助建置上可以事半功倍!

4. RAG 和 Fine-Tune 之間的關係,以及怎麼逐步導入呢?

先用以下這張表格,讓大家先了解 RAG 和 Fine-Tune 的差異性:

Fine-Tune 和 RAG 的比較表

那對於企業團隊製作 LLM 模型來說,如果希望準確預測結果,當然會建議使用 Fine-Tuned 模型方法,讓模型事前學會知識當然最好,但是新知識持續在產生出來,又無法每天都 Fine-Tuned 模型的狀況下,會建議大家在新知識上使用 RAG 去做知識庫建置,然後再定期每段時間進行 Fine-Tuned 模型,來幫助大家在新知識與模型能夠都能夠持續收集和進步,詳情可以看以下的架構:

逐步導入,讓 LLM 模型能夠在公司實踐

III. 應用場景

RAG 架構適用於需要外部知識來輔助回答的問答系統、智能對話系統以及其他自然語言處理應用。例如,在一個問答系統中,RAG 可以幫助模型從大量的文本數據中找到與問題相關的答案,並生成結構化的回應。在智能對話系統中,它可以幫助模型生成更加資訊豐富和有用的回應。此外,由於RAG可以從外部知識源中獲取信息,它也適用於那些需要模型具有一定學習能力或更新知識的場景。

示意圖 — 客服使用電腦對使用者進行文字回覆作業(Photo by DALLE-3)

IV. 結論

本文從大型語言模型(LLMs)的局限性切入,深入探討了檢索增強生成(RAG)架構的核心機制及其帶來的好處。RAG通過結合搜尋檢索與生成能力,能從外部知識庫搜尋相關資訊,生成更準確的回應,有效克服了 LLMs在新知識更新與資訊檢索上的短板。

文章另外也介紹了如何透過 Sentence Transformer 技術增強 RAG 的檢索效率,並提供了一系列實施的具體步驟與參考資源。更進一步,文中探討了Fine-Tuned 與 RAG 的結合應用,為企業在面對新知識源持續更新時,提供了一個保持模型準確性與效能的有效方案,同時節省了大量的人力與時間成本。期待在提供了 RAG 技術導入路徑,可以幫助企業和個人在生成式 AI 的時代,能夠更有效地應用自然語言處理技術,維持競爭力,幫助產業更高效地將知識庫能夠產生價值。

I am Simon

大家好,我是 Simon 劉育維,目前在 InfuseAI 擔任人工智慧領域的客戶成功工程師,幫助企業規劃並實踐人工智慧相關技術。如果這篇文章對您有幫助,請在 Medium 上按一下鼓勵並追蹤我的個人帳號,這樣您就可以隨時閱讀我所撰寫的文章。歡迎在我的 Linkedin 上留言提供意見,並與我一起討論有關人工智慧的主題,期待能夠對大家有所幫助!

我的 Linkedin:https://www.linkedin.com/in/simonliuyuwei/

We are InfuseAI

InfuseAI provides LLM, MLOps, and data tools:

  1. PrimeHub — Our end-to-end MLOps platform is the entire machine learning lifecycle in one platform.
  2. MLOps and LLM solution and consulting — Let the user know how to use MLOps and/or LLM Models to do the machine learning pipeline.
  3. PipeRider — The data quality toolkit for data professionals.

Feel free to contact us for assistance in implementing AI models!
Email: business@infuseai.io

--

--

Hi, I'm Simon Liu, AI and LLM engineer who's shaped AI solutions for major firms. Welcome to see my Medium article!