在設計和部署 RAG 工作流時,數據科學家、AI 工程師、MLOps 工程師和 IT 基礎架構專業人員必須考慮各種因素:從 LLM 等核心組件到評估方法,不一而足。
關鍵在于,RAG 是一個系統,而不僅僅是一個模型或一組模型。該系統由幾個階段組成,在 RAG 101:揭秘檢索增強生成流程 中有詳細解釋。所有這些階段都提供了根據您的需求做出設計決策的機會。
以下是熱門問題和答案的列表。
何時應微調 LLM 與使用 RAG?
在 LLM 領域中,在微調、高效參數微調 (PEFT)、提示工程和檢索增強生成 (RAG) 之間進行選擇取決于應用程序的特定需求和限制。
- 微調通過使用特定領域的數據集更新其大部分或全部參數,為特定領域定制預訓練 LLM。這種方法需要大量資源,但對于專業用例而言,準確度很高。
- PEFT 通過更少的參數更新來修改預訓練的 LLM,專注于模型的子集。它在準確性和資源使用之間取得了平衡,并在滿足可管理的數據和計算需求的提示工程方面取得了改進。
- 提示工程操作 LLM 的輸入以控制其輸出,而無需更改模型的參數。這是資源密集型最少的方法,適用于數據和計算資源有限的應用程序。
- RAG 借助來自外部數據庫的信息增強 LLM 提示,有效地實現了一種復雜的提示工程形式。
這并不是說使用一種或另一種技術。事實上,這些技術可以同時使用。例如,PEFT 可能會集成到 RAG 系統中,以進一步優化 LLM 或嵌入模型。最佳方法取決于應用程序的特定要求,以及在準確性、資源可用性和計算限制之間取得平衡。
如需詳細了解可用于提高特定領域準確性的自定義技術,請參閱 選擇大型語言模型自定義技術。
使用 LLM 構建應用程序時,首先要實施 RAG,以利用外部信息增強模型的響應。這種方法可以快速提高相關性和深度。
稍后,如果您需要更多領域特定的準確性,則可以使用前面概述的模型自定義技術。這兩步流程平衡了 RAG 的快速部署和有針對性的改進,通過模型自定義實現高效開發和持續增強策略。
如何在不微調的情況下提高 RAG 精度?
這個問題不僅值得發表自己的文章,還值得發表多篇文章。簡而言之,在利用 RAG 的企業解決方案中獲得準確性至關重要,而微調只是可能(也可能不會)提高 RAG 系統準確性的一種技術。
首先,您需要找到一種方法來測量 RAG 的準確性。如果您不知道從何入手,就無法知道如何進行改進。有幾個框架可以用來評估 RAG 系統,例如Ragas、ARES以及Bench。
完成一些準確性評估后,有許多地方可以提高準確性,而無需微調。
盡管這聽起來有點小題大做,但請首先檢查以確保您的數據已被正確解析和加載。例如,如果文檔包含表格甚至圖像,某些數據加載程序可能會漏掉文檔中的信息。
提取數據后,塊.這是將文本分割為片段的過程。一個數據塊可以是固定的字符長度,但也有各種分塊方法,例如句子分割和遞歸分塊。文本的分塊方式決定了如何將其存儲在嵌入向量中以便檢索。
除此之外,還有許多索引和相關檢索模式。例如,可以為各種用戶問題構建多個索引,并且可以根據 LLM 將用戶查詢路由到適當的索引。
還有各種檢索策略。最基本的策略是將余弦相似性與索引結合使用,但 BM25、自定義檢索器或知識圖也可以改進檢索。
根據獨特的要求,對檢索器的結果進行重新排序還可以提高靈活性和準確性。查詢轉換可以很好地分解更復雜的問題。即使更改 LLM 的系統提示也會大幅改變準確性。
歸根結底,花時間進行實驗并測量各種方法帶來的準確性變化非常重要。
請記住,LLM 或嵌入模型等模型只是 改進 RAG 系統的方法有很多,無需進行任何微調即可實現高精度。
如何將 LLM 連接到數據源?
有各種用于將 LLM 連接到數據源的框架,例如 LangChain 和 Llamaindex.這些框架提供了各種功能,例如評估庫、文檔加載器和查詢方法。新的解決方案也在不斷涌現。我們建議閱讀各種框架,并選擇對您的應用程序最有意義的軟件和組件。
RAG 能否引用檢索數據的引用?
確實如此。實際上,如果您能夠引用檢索數據的來源,這將提升用戶體驗。在 AI 聊天機器人 RAG 工作流程的示例中,我們在 NVIDIA/GenerativeAIExamples GitHub 庫中展示了如何鏈接回原始文檔。
RAG 需要什么類型的數據?如何保護數據?
目前,RAG 已很好地支持文本數據。隨著對多模態用例的更多研究進展,RAG 系統對其他形式的數據(如圖像和表格)的支持也在不斷改進。您可能需要根據數據及其所在位置編寫額外的數據預處理工具。RAG 系統提供了多種數據加載器,有關使用 LlamaHub 和 LangChain 構建增強型工作流的更多信息,請參閱 針對提示注入的安全 LLM 系統。
確保數據安全(尤其是對于企業而言)至關重要。例如,某些索引數據可能僅面向特定的一組用戶。基于角色的訪問控制 (RBAC) 根據角色限制對系統的訪問,可以提供數據訪問控制。例如,可以在向向量數據庫的請求中使用用戶會話令牌,以便不會返回超出該用戶權限范圍的信息。
在環境中保護模型的許多術語與保護數據庫或其他關鍵資產的術語相同。思考一下您的系統將如何記錄生產流程的結果活動(提示輸入、輸出和錯誤結果)。這些活動可能為產品訓練和改進提供了豐富的數據集,但也會產生數據泄露源(如 PII),就像您管理模型流程一樣,必須仔細管理這些泄露源。
AI 模型在云部署方面有許多常見模式。您應該充分利用這些環境中常見的 RBAC(基于角色的訪問控制)、速率限制和其他控制工具,以使您的 AI 部署更加穩健。模型只是這些強大流程的一部分。有關更多信息,請參閱 保護支持 LLM 的應用程序的最佳實踐。
在任何 LLM 部署中,一個重要方面是與最終用戶交互的本質。許多 RAG 流程都以自然語言的輸入和輸出為中心。考慮如何通過輸入/輸出調節來確保體驗滿足一致的期望。
用戶可以通過許多不同的方式提出問題。您可以使用以下工具來輔助 LLM:NeMo 護欄,它可以對輸入和輸出進行二次檢查,確保您的系統以最佳狀態運行,解決它專門設計解決的問題,并在其他方面為用戶提供有用的指導,以解決 LLM 應用程序無法處理的問題。
如何加速 RAG 工作流?
RAG 系統由許多組件組成,因此有大量機會加速 RAG 工作流:
- 數據預處理
- 索引和檢索
- LLM 推理
數據預處理
重復數據刪除是識別和刪除重復數據的過程。在 RAG 數據預處理的背景下,重復數據刪除可用于減少必須為檢索索引的相同文檔的數量。
NVIDIA NeMo Data Curator 利用 NVIDIA GPU 通過并行執行最小散列、Jaccard 相似度計算和連通組件分析來加速重復數據的刪除。這可以顯著減少處理大型數據集所需的時間。
另一個機會是分塊。必須將大型文本語料庫劃分為更小、更易于管理的分塊,因為下游嵌入模型只能對低于最大長度的句子進行編碼。OpenAI 等熱門嵌入模型可以對多達 1536 個令牌進行編碼。如果文本具有更多令牌,則會被截斷。
NVIDIA cuDF 可用于通過在 GPU 上執行并行數據幀操作來加速數據分塊。這可以顯著減少處理大型語料庫所需的時間。
最后,您可以在 GPU 上加速分詞器。分詞器負責將文本轉換為整數分詞,然后由嵌入模型使用。文本分詞過程的計算成本可能很高,對于大型數據集來說尤其如此。
索引和檢索
生成嵌入通常是一個循環過程,因為 RAG(檢索增強生成)非常適合頻繁更新的知識庫。檢索在推理時完成,因此要求低延遲。這些過程可以通過 NVIDIA NeMo Retriever 來加速。NeMo Retriever 旨在提供先進的商業模型和微服務,并針對低延遲和高吞吐量進行了優化。
LLM 推理
LLM 至少用于生成完全形成的響應。LLM 還可用于查詢分解和路由等任務。
在多次調用 LLM 時,LLM 的低延遲至關重要。NVIDIA NeMo 包括 TensorRT-LLM 用于模型部署,從而優化 LLM,實現突破性的推理加速和 GPU 效率。
NVIDIA Triton 推理服務器 還支持部署優化過的 LLM(大型語言模型),以實現高性能、成本效益高且低延遲的推理。
什么是降低聊天機器人延遲的解決方案?
除了使用建議來加速 RAG 工作流(例如 NeMo Retriever 和帶有 Triton 推理服務器和 TensorRT-LLM 的 NeMo 推理容器)之外,重要的是考慮使用流式傳輸來提高聊天機器人的感知延遲。由于響應時間較長,流式傳輸 UI 在部分響應可用時顯示這些響應,可以減輕感知延遲。
也許值得考慮使用針對您的用例進行微調的較小 LLM.通常情況下,較小的 LLM 的延遲遠低于較大的 LLM.
一些經過微調的 70 億參數模型已經演示在特定任務(例如 SQL 生成)上超越了 GPT-4 的準確性。例如,ChipNeMo TensorRT-LLM 是專為 NVIDIA 內部使用而構建的定制 LLM,它可以幫助工程師生成和優化用于芯片設計的軟件。該 LLM 使用的是 130 億參數的微調模型,而不是 70 億參數模型。TensorRT-LLM 提供了模型優化技術,如 FlashAttention、PagedAttention、Distillation 和 Quantization,使得在本地運行較小的微調模型成為可能,從而減少了 LLM 對內存的占用。
LLM 響應的延遲是第一個令牌 (TTFT) 的時間和每個輸出令牌 (TPOT) 的時間的函數。
對于較小的 LLM,TTFT 和 TPOT 都將更低。
開始在企業中構建 RAG
通過使用 RAG,您可以輕松為 LLM 提供最新的專有信息,并構建一個能夠提高用戶信任度、改善用戶體驗和減少幻覺的系統。
探索 NVIDIA AI 聊天機器人 RAG 工作流程,開始構建能夠利用最新信息,以自然語言準確回答特定領域問題的聊天機器人。
?