科技

RAG 解決方案規劃與實作

Vendor Icon

CIO Taiwan

9月. 17, 2024

A Futuristic Office Features A Brain Hologram Against A City Vie

企業生成 AI 檢索查詢

還在煩惱如何將 AI 應用導入企業嗎?本文深入淺出地介紹了 RAG(檢索增強生成)技術。RAG 結合了大型語言模型(LLM)的生成能力和外部知識庫,讓企業可以建構更精準、資料即時更新的 AI 應用,例如特定領域的 AI Chatbot。

文/王文泰


王文泰 作者
◤ 作者王文泰任職於 Optoma 科技,現為 Optoma 在陽明交通大學共同成立的「AI 暨虛實互動研發中心」負責人。從事資訊工作 25 年,曾任職於 Acer、Oracle、HTC 等企業。

一年多 ChatGPT 導引著 AI 發展,異常快速。企業面對這一波 AI 爆炸性發展則有點難以消化,無論是法規、個資管理、資料安全、超速發展等特性都不同以往。筆者在先前在 CIO 雜誌發表的〈企業導入生成式 AI Chat 之分析與建議〉,在發表後收到許多讀者的詢問,或是演講邀約,顯示企業對導入 AI 有強烈的需求也伴隨的許多問題,希望可以知道正確的導入的策略步驟、實作方式,以及需要的技術與資源,以避免時間、人力與金錢的浪費;另外,筆者也在 2024/7 月於台灣雲端大會上進行分享「檢索增強生成 RAG」(Retrieval-Augmented Generation);在現在這篇文章中,則針對企業導入 RAG 進行相關的規劃與實作說明。

LLM(大語言模型)可以使用自然語言處理(NLP)進行聰明 ChatBot 的應用,但可惜的是 ─ 還是有一定的比例產生了「不確定」或「幻覺」的回答;另外不同的大語言模型,因為預訓練的資料不同,產生的回答也不一樣,甚至每一次回答的結果也不同。無論是 OpenAI ChatGPT、Google Gemini(Bard)、Claude、Mistral、Llama 2/3、Grok…等,都有類似的問題。而這樣的「不穩定」,對企業內部或外部的應用是一個很大的致命傷。為此,RAG 就應孕而生。

RAG(檢索增強生成)是使用 AI LLM(大語言模型)的生成能力,結合外部的知識庫,讓使用者可以使用自然語言進行交互問答,這樣的結果會比直接使用 ChaGPT「更精準」以及「資料即時更新」的優點,很適合企業用在特定領域,經由訓練並產生 AI Chatbot(或稱為特定領域 AI 專家)。

對比直接使用 ChatGPT 等預訓練生成大語言模型(GPT LLM),RAG 有以下的優點:

1. 增加使用者的信任:

RAG 因為使用企業提供的資料進行 Embedding 處理,所以回答的產出會依照這些資料提供比較準確的答案。這一點非常重要!一旦使用者覺得這樣的工具是有實際的幫助,會開始信賴 AI 的回答,接著就會產生正循環,持續使用以及反饋改善。

2. 可以被開發者彈性控制:

開發者面對 RAG,會比直接使用 LLM(例如:ChatGPT 或 OpenAI 的 API)有更多的控制權,這些控制權來自於可控制的資料範圍產出的品質驗證。然後整合企業內部不同的系統與資訊,提供具備 AI 能力的應用系統。

3. 針對特定領域的需求訓練:

ChatGPT 等功能雖然強大,但最讓人詬病的是,有時候會一本正經的胡言亂語。透過 RAG,將資料的範圍限縮到企業餵入的資料範圍內,產生多個特定領域的 AI 專家。

4. 成本效益:

企業不需要花大筆的金錢與時間去訓練基礎的 LLM,透過 RAG 實際上是使用目前已經存在的 LLM。但是透過相關 Embedding 的技術 將企業的資料進行小數據的訓練。就可以享受到大語言模型(LLM)對企業特定領域的資料,進行分析、摘要、檢索等功能的使用。

5. 資料安全的控管:

企業分析不同資料安全等級,採取不同的 RAG 導入策略,風險低的資料可以放入雲端資料庫,風險高的則放入企業自己管理的資料庫中。

如圖 1 所示,ChatGPT 等 LLM 的使用(不只是 OpenAI 的 ChatGPT,也包含其他工具,如 Google Gemini(Bard)、Claude、Mistral…etc)。透過 Web 或 App 的連接,或者透過這些 LLM 企業組織提供的 API 進行程式的呼叫來整合企業的資訊系統。這些 LLM 透過大量的資料進行預訓練,提供了「廣泛」的知識能力。

001 600
◤ 圖 1 ChatGPT 等工具架構(圖片來源:王文泰)
002 600
圖 2 RAG 架構(圖片來源:王文泰)

而 RAG 的架構稍微複雜一點,如圖 2 所示。RAG 的架構分為兩部分:

‧第一部分:將小數據(組織的文件資料)透過 Embedding 產生向量資料。

‧第二部分:使用者輸入查詢的 Prompt,然後經過 Prompt Embedding 後,透過相似性查詢,將向量資料取出,傳給 LLM,並產生生成的回覆。

第一部分將企業的資料透過 Embedding 轉成向量資料,並儲存在向量資料庫中:(圖 3)

第二部分使用者輸入 Prompt,透過相似性搜尋,從向量資料庫中找出符合的內容,透過 Generative LLM 產出回答。(圖 4)

003 1200
圖 3 RAG:將企業文件向量化並儲存(圖片來源:王文泰)
004 600
圖 4 RAG:比對使用輸入的 Prompt 從向量化資料庫中搜尋並提交 LLM 生成回答(圖片來源:王文泰)

該理解的 RAG 架構及組成,包括了下面幾個部分:

  1. 企業文件提取與 Chunk:將組織內的文件切割成不同的 Chunk。
  2. Embedding Model:透過 Embedding model 將 Document chunk 轉化成向量資料 以及 Metadata。
  3. Vector Store:將產生出來的向量資料儲存在地端或是雲端。
  4. Generative LLM:生成式大語言模型, 透過 NLP 處理,針對使用者 Prompt 問題,進行生成回覆。
  5. 其他:包括網頁存取,資料庫存取等等。

1. Google NotebookLM

2023/12月,Google 針對美國地區推出 NotebookLM,提供用戶可以將文件 upload 後,進行相關檢索查詢。(圖 5、圖 6)

005 1200
圖 5(圖片來源:Google)
006 1200
圖 6(圖片來源:Google)

2. Microsoft M365 Copilot

2023/11月,微軟推出付費版(M365 Copilot,將生成式 LLM 功能放入 Word、Powerpoint、Excel、Teams…等軟體中,除了生成式相關內容外,也可以進行相關內容的查詢。(圖 7)

007 1200
圖 7(圖片來源:微軟)

企業一旦決定要導入 RAG 這樣的 AI 系統,可以針對下面幾點進行思考與規劃:

  1. UI/UX:系統使用的操作介面,有些是 LLM 大語言模型公司提供內建的操作介面,有些企業可以自己開發自己的 UI/UX 介面,也有第三方已經提供標準的 AI Chatbot 介面(例如:Streamlit 或 Chainlit 等)
  2. API 呼叫大語言模型:若不是採用 LLM 公司提供的工具(例如:OpenAI ChatGPT、Google Gemini(Bard)),則可以透過這些 LLM 公司提供的 API 呼叫串接企業自己 開發的系統。
  3. Embedding Model:採取哪一個 Embedding Model 進行 split、chunk、embedding…等。
  4. Vector Store:Embedding 後的資料,存放的地方。目前常見的有:Chroma、Pinecone、Weaviate、Faiss,Qdrant…等。
  5. 生成式 LLM:使用自然語言處理(NLP)生成答案。無論是雲端的 OpenAI ChatGPT、Google Gemini(Bard)、Claude、Mistral、Grok…,或是使用 Open source LLM 如:Llama 2/3、ChatGLM、Mistral、Phi-2/3、Gemma 等。

針對第 3 項「Embedding Model」,這裡補充說明,它是 RAG 解決方案的核心,目前有許多 Embedding model,本文提供一個參考資料(圖 8),讀者可以去 Huggingface 網站上參考比較。這個表格依照不同 MTEB(Massive Text Embedding Benchmark)進行測試排行。MTEB 涵蓋 8 個嵌入任務,涵蓋總共 58 個資料集和 112 種語言。透過 MTEB 上 33 個模型的基準測試。值得注意的,不同的任務、不同的語言,排名分數不盡相同。選擇 Embedding Model 時,需要注意 RAG 的使用情境。

008 1200
圖 8 HuggingFace 上的 MTEB Leaderboard。

Embedding 通常可以用作:

  • (a)Search(相關性排序查詢)
  • (b)Clustering(相似性群組化)
  • (c)Recommendations(相關字串推薦)
  • (d)Anomaly detection(找出相關性很小的異常值)
  • (e)Diversity measurement(分析相似度分布)
  • (f)Classification(字串依照相似進行標籤分類)

針對第 4 項「Vector Store」,這裡補充說明,它是企業資料向量化後放置的地方。這和企業的資料安全 Policy 有關係。這裡列出常用的向量資料庫方案(圖 9)。

針對第 5 項「生成式 LLM」,這裡也補充說明。經過一年,大家普遍比較熟悉這些大語言模型。本文這裡要提醒的是,大語言模型不只有 ChatGPT(GPT),還有其他業者在急起直追。另外,除了在雲端封閉的這些大語言模型外,現在也有一個 Open Source 的 LLM 可以參考使用(圖 10)。

009 600
圖 9 Vector Store(圖片來源:王文泰)
010 1200
圖 10 生成式大語言模型(圖片來源:王文泰)

本文前面已經說明了 RAG 規劃時需要考慮的幾個技術點,接下來,針對 RAG 實作,規劃幾個方案如表 1,供讀者參考。這些實作的方案,本文作者自己都實際完成開發/測試驗證。

Tab01 1200
表 1 RAG 實作方案(圖片來源:王文泰)

1. GPTs 的 RAG

OpenAI 已經在 2023/11 月提供了 RAG 方案,允許使用者將企業的資料進行處理,並使用 OpenAI 的網站或 App 進行查詢(圖 11)。

011 600
圖 11 GPTs 的 RAG(圖片來源:王文泰)
012 1200
圖 12 GPTs 的實作結果(圖片來源:王文泰)

筆者將「The state of AI report 2023」的檔案轉為 PDF,並 upload 處理後(https://lihi1.me/A9zpqhttps://docs.google.com/presentation/d/156WpBF_rGvf4Ecg19oM1fyR51g4FAmHV3Zs0WLukrLQ/edit#slide=id.g24daeb7f4f0_0_3373),詢問 GPTs,實作得到的回覆(圖 12),無論是正確性,答案結構,參考文件等,都比直接詢問 ChatGPT 好得多。

2. 客製化系統介面,使用 API 呼叫 LLM

如果企業希望有自己的系統操作介面,或是 將原來的資訊系統增加 AI 生成的功能,但又希望生成的答案是在資料範圍(Data Scope)內,則可以採用這個方法。企業將文件上載進行 Embedding 處理(圖 13 架構,圖 14 系統)。然後將企業的資訊系統進行串接,這裡的串接包括了 RAG API,Embedding Prompt & 生成式 LLM 的答案生成(圖 15 為架構,圖 16 為筆者資訊系統 實作的詢問與 RAG 回覆)。

013 600
圖 13 企業將文件 Embedding 處理之架構圖(圖片來源:王文泰)
014 1200
圖 14 企業 upload 文件進行 Embedding 處理之介面(圖片來源:王文泰)
015 1200
圖 15 企業資訊系統串接 RAG API & Prompt Embedding & 生成式 LLM 架構圖(圖片來源:王文泰)
016 1200
圖 16 企業資訊系統串接 RAG API & Prompt Embedding & 生成式 LLM 實作結果。此資訊系統為筆者 Python 開發(圖片來源:王文泰)

3. 企業文件 Index & Local 儲存 & 資訊系統串接

上面的方式,企業的文件資料是儲存在雲端,不是放置在企業本地,如果資料比較敏感,有資料安全上的考慮,上面的方式就不合適。這時候,就可以參考此一方式。 首先,企業將相關文件進行 Embedding 向量化 & Index(這裡的資料為網路上投影機的範例資料),並儲存在本地(圖 17 架構,圖 18 向量化/Index 檔案),這裡採用的是 LlamaIndex(GPTIndex)的方案,有興趣的讀者可以參考(https://github.com/run-llama/llama_index)。然後串接資訊系統讀取這些文件的向量資料庫 & Index,並透過生成式 LLM 生成回覆(圖 19 架構,圖 20 筆者系統實作結果)。

017 600
圖 17 企業文件進行 Index 並儲存在 Local 架構圖(圖片來 源:王文泰)
018 1200
圖 18 企業文件向量化&Index 後的樣態(圖片來源:王文 泰)
019 600
圖 19 企業資訊系統串接 Local Index & Prompt Embedding & 生成式 LLM 架構圖(圖片來源:王文泰)
020 1200
圖 20 企業資訊系統串接 Local Index & Prompt Embedding & 生成式 LLM 實作結果,此 Web 資訊系統為筆者開發(圖片來源: 王文泰)

4. 企業文件 Embedding & 雲端儲存(Pinecone)& 資訊系統串接

有些企業已經有了雲端的向量資料庫,為了統一管理 & 全球性系統的存取,則可以考慮使用這個方式。這個方案是使用 Langchain(https://github.com/langchain-ai/langchain)去串接不同的技術,包括大語言模型,Embedding model,向量資料庫…等,加上企業實際運作的資訊系統包含很多流程的串接,這裡可以透過 Flowise AI 進行開發與控管(https://github.com/FlowiseAI/Flowise)(圖 21 架構,圖 22 Flowise AI 實作畫面)。這個展示,企業可以上傳 TXT 與 PDF 檔案,經過 OpenAI Embedding 處理後,將資料儲存在 Pinecone Vector Store。並透過 Langchain Retrieval QA Chain 串接 OpenAI ChatGPT 進行回答生成。

021 1200
圖 21 Langchain 進行 RAG 串接的架構(圖片來源:王文泰)
022 1200
圖 22 Flowise AI 系統畫面,筆者在本機電腦安裝實作(圖片 來源:王文泰)
023 1200
圖 23 企業文件 Embedding 處理 & 資訊系統串接 Local LLM 架構(圖片來源:王文泰)

5. Local LLM 與 企業資訊系統串接,並處理企業文件 Embedding(Faiss Vector Store)

將 LLM 安裝在地端外,也同時增加 RAG 的功能,舊式將企業的文件資料 Embedding,並儲存在企業可以控管的地方。圖 23 為系統架構。圖 24 為管理者系統介面,可以將文件 upload 並進行 Embedding&向量資料的儲存。

1970 年 MIT 成功開發 email 系統,1973 年 ARPA(後來的 Internet)從美國連接英國,挪威成為國際互通的網路。1984 年美國國防部將 TCP/IP 作為電腦網路的標準。1988 年 WAIS(Wide Area Information Server)廣域英文全文檢索在圖書館進行檢索查詢。1990 年Tim Berners-Lee 發明了第一個Hypertext Transfer Protocol(HTTP)資料查閱系統,1993 年視窗介面的 Mosaic 瀏覽器推出。1994 年台灣學術網路(TANet)專案」廣域網路資訊源之文字檢索」(王文泰,范錚強教授,曾健民,蘇建益等人針對中文斷詞與英文斷詞不同做法進行研究)搭配中研院的中文詞庫(簡立峰老師時任中研院提供中文詞庫與協助,簡老師後來擔任 Google台灣區總經理),開發出中文版的 WAIS(CWAIS)系統,並第一次運用在 當年」國際資訊管理學術研討會」,提供 WWW base 即時線上中英文雙語全文檢索。

2003 年 Bengio 提出神經語言模型,根據單詞上下文預測下一個單詞。2013 年 Word2Vec 發表。2017 年 Transformer 論文橫空出世,改變了整個 AI 發展的領域。 2018 年 OpenAI GPT-1 發表,Google 發表 BERT。2022 年 11 月 OpenAI 推出 ChatGPT(GPT3)引爆生成式 AI 的應用。這些 AI 的發展,包含了 Embedding 的研究,這些 Embedding 的技術,可以更好的擷取單詞與進行檢索,另外也擴及到文字的語義。至此,「查詢檢索」相關的發展,進入 AI 驅動的時代。

筆者經歷了工作站、PC、Internet、TANet、WAIS/CWAIS、智慧型手機,進行資訊查詢與檢索,到 AI 時代的演進發展,「RAG」很適合作為企業評估與導入進行查詢檢索的應用需求,提供給企業與學界先進們參考。


(本文授權非營利轉載,請註明出處:CIO Taiwan)

The post RAG 解決方案規劃與實作 first appeared on CIO Taiwan.

內容來源

author avatar
CIO Taiwan
IDG集團的媒體品牌CIO於1987年創刊,為國際性最權威的IT管理專業雜誌。擁有全球最頂尖的IT管理專家作者群,因此能寫出最權威的分析評論、最先進的IT管理觀念。
donate plan

充電計畫

喜歡這篇文章嗎?歡迎幫作者充電,好內容值得更多人支持

瞭解詳情