RAG 101:揭秘檢索增強生成工作流
大語言模型(LLM)以其前所未有的理解能力和生成類人回答的能力令世人驚歎。其聊天功能使人類能夠與大型數據集進行快速且自然的互動,例如,它們可以從數據中總結提取亮點,或者用自然語言替換複雜的查詢,如 SQL 查詢等。
人們會理所當然地認爲這些模型不費吹灰之力就能產生商業價值,很遺憾,事實往往並非如此。幸運的是,企業只需用自己的數據來增強 LLM,就能從中獲得價值。這可以通過檢索增強生成(RAG)來實現,在 GitHub 資源庫中的 NVIDIA 生成式 AI 示例也向開發者展示了這一功能:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
通過使用業務數據增強 LLM,企業可以使 AI 應用敏捷地響應新的發展趨勢。例如:
本文將介紹在構建 LLM 應用時使用 RAG 技術的優勢,以及 RAG 工作流的組成部分。
使用 RAG 的優勢如下
通過實時數據訪問來賦能 LLM 解決方案
企業中的數據是不斷變化的。使用 LLM 的 AI 解決方案可以通過 RAG 保持更新,方便員工直接訪問更多數據資源,如實時數據和個性化數據等。
保護數據隱私
確保數據隱私對企業來說至關重要。通過自託管的 LLM(在 RAG 工作流中進行演示),敏感數據可以像存儲的數據一樣保存在本地。
減少 LLM 幻覺問題
當 LLM 沒有獲得符合事實的真實信息時,它們往往會給出錯誤但有說服力的回答。這就是所謂的幻覺,而 RAG 通過向 LLM 提供相關的事實信息,能夠降低出現幻覺的可能性。
構建並部署您的首個 RAG 工作流
典型的 RAG 工作流由幾個階段組成。文檔攝取過程在離線狀態下進行,當出現在線查詢時,就會檢索相關文檔並生成回答。
圖 1 顯示了加速的 RAG 工作流,可在 /NVIDIA/GenerativeAIExamples GitHub 資源庫中構建和部署:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
圖 1. RAG 工作流組件概覽:攝取和查詢流
每個邏輯微服務都被分到 NGC 公共目錄中的可用容器中。整體上,RAG 系統的架構可以分解爲圖 1 所示的工作流:
文檔攝取
首先,來自數據庫、文檔或實時傳輸等不同來源的原始數據會被攝取到 RAG 系統中。爲了預處理這些數據,LangChain 提供了多種文檔加載器,可從多種不同來源中加載多種形式的數據。
文檔加載器這一術語的使用比較寬泛。源文檔並不一定是您所認爲的標準文檔(如 PDF、文本文件等)。例如,LangChain 支持從 Confluence、CSV 文件、Outlook 電子郵件等載入數據。LlamaIndex 還提供多種加載器,可在 LlamaHub 中查看:https://llamahub.ai/
文檔預處理
加載文檔後,通常要對其進行轉換。其中一種轉換方法是文本分割,它將長文本分解成較小的片段。這對於將文本擬合至嵌入模型 e5-large-v2 中是十分必要的,其最大 token 長度爲 512。雖然分割文本聽起來很簡單,但其實是一個非常細緻的過程。
生成嵌入
在攝取數據後,必須將數據轉換成系統可以有效處理的格式。生成嵌入涉及到將數據轉換成以數字格式表示文本的高維向量。
在向量數據庫中儲存嵌入信息
處理過的數據和生成的嵌入被存儲在稱爲向量數據庫的專用數據庫中。這些數據庫已經過優化,能夠處理向量化數據,進而實現快速搜索和檢索操作。將數據存儲在 RAPIDS RAFT 加速向量數據庫(如 Milvus)中,可確保信息在實時交互過程中依然可訪問和快速檢索。
大語言模型
大語言模型(LLM)是 RAG 工作流的基礎生成組件。這類先進的通用語言模型在大量數據集上訓練而成,因而能夠理解和生成類人文本。在 RAG 中,LLM 被用於根據用戶查詢以及在用戶查詢期間從向量數據庫中檢索到的上下文信息,來生成完整的回答。
查詢
當用戶提交查詢時,RAG 系統會使用索引數據和向量來執行有效的搜索。該系統通過將查詢向量和存儲在向量數據庫中的向量進行比較,來識別相關信息。然後,LLM 會使用檢索到的數據做出適當的回答。
您可以在 /NVIDIA/GenerativeAIExamples GitHub 資源庫中測試此示例工作流,來加快該系統的部署:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
開始在您的企業中構建 RAG
通過使用 RAG,您可以輕鬆地爲 LLM 提供最新的專有信息,並構建一個提高用戶信任度、改善用戶體驗和減少幻覺的系統。
探索 NVIDIA AI 聊天機器人 RAG 工作流,開始構建一個能夠使用最新信息、以自然語言來準確回答特定領域問題的聊天機器人:https://github.com/NVIDIA/GenerativeAIExamples/tree/main/RetrievalAugmentedGeneration?nvid=nv-int-tblg-996848