【RAG實戰】RAG與大模型應用

1.1 大模型應用的方向:RAG

1.1.1 什么是RAG

1. 生成式AI

一種能夠生成各類內容的技術,包括文本、圖像、音頻和合成數據。自2022年底ChatGPT在全球范圍內推廣以來,基于Transformer解碼器結構的大模型已能在短時間內為用戶生成高質量的文本、表格、代碼,使整個AI領域邁入了新的時代。

大語言模型(Large Language Model,LLM)經過海量文本數據的訓練后,能將這些文本數據以一種黑盒形式壓縮在模型參數中。預訓練完成后,模型便掌握了大量的人類知識世界。當模型的規模足夠大且經過指令微調對齊后,便可通過提示模板,運用零樣本(zero-shot)或少樣本(few-shot)的提示詞來完成許多自然語言理解和自然語言生成任務。

然而,大模型并不具備在環境中不斷變化的場景中回答特定問題所需的全面知識。例如,早期的ChatGPT的預訓練語料庫時間截止至2021年,這意味著模型無法準確輸出2021年以后的事實性問題,這正是現代大模型所面臨的知識更新困境。實際上,對于一個大模型來說,更新基礎模型知識庫是非常困難的一件事情。首先,需要保證預訓練數據的質量;其次,更新知識庫后的模型通常都需要重新訓練,至少要將新數據與舊數據按照一定的比例進行混合訓練,而不能僅僅使用新數據,否則會出現災難性遺忘的問題。

2. RAG

2020年,Facebook在"Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"一文中首先提出了一種稱為檢索增強生成(RAG)的框架。該框架可以使模型訪問超出其訓練數據范圍之外的信息,使得模型在每次生成時可以利用檢索提供的外部更專業,更準確的知識,從而更好地回答用戶問題。

RAG在推理過程中分為兩個階段:檢索和內容生成。在檢索階段,通過算法檢索與用戶問題相關的知識片段。在開放領域中,這些知識片段可以來自互聯網上搜索引擎檢索到的文檔,例如微軟Bing AI的模式;在私有領域的企業場景中,通常使用大量的內部文檔通過更小的信息源約束來提高模型生成的安全性和可靠性。

完成檢索之后,可以獲取到一些與用戶輸入相關的可靠外部知識。在內容生成階段,通過一個結構化的prompt模板約束,將這些外部知識添加到用戶的問題中,并傳遞給語言模型。模型基于知識增強的prompt,通過自己的大量參數計算,就可以生成一個針對該用戶問題的更準確的單寧。在這個過程中,還可以約束模型對生成的答案進行溯源,以方便地知道模型是依據哪些知識片段完成最終答案生成的。

1.1.2 RAG與模型微調的對比

模型微調是指在一個特定任務上用一定量的數據來訓練模型的過程,通過在特定數據集上微調可以提高模型在特定數據集上的性能。如果有足夠大的監督數據集,且數據集不會發生改變,那么微調是一個很不錯的方法。盡管大模型的微調成本較高,但現在已有大量低成本微調的方法,例如LoRA。然而,如果數據集是動態的,就需要不斷的重新訓練模型以跟上數據的變化;或者如果沒有足夠大的數據集,那么微調不是一個好辦法。在這種情況下,可以使用RAG來提高大模型的性能。同樣,可以利用RAG來提供大模型在摘要、翻譯等任務上的性能,因為這些任務可能無法進行微調。

RAG

  • 定義:將大規模知識庫檢索與大模型生成相結合。檢索相關文檔并使用它們生成答案
  • 優點:可以用到外部知識
  • 挑戰:需要可靠的召回系統
  • 用例:數據經常更新的智能回答場景

模型微調

  • 定義:使用較小的數據集細化針對特定任務的預訓練模型。調整模型的權重以使其更適用于特定任務
  • 優點:可以在特定任務上獲得不錯的效果,尤其是在監督數據充足的情況下
  • 挑戰:數據不足時存在過擬合風險,模型只能處理訓練數據截止日期之前的場景
  • 用例:利用模型完成特定任務,例如情感分類、意圖識別

1.2 為什么需要RAG

1.2.1 大模型的知識更新問題

大模型的知識源于預訓練階段,通過大量的無監督數據,利用下一個詞預測任務來完成訓練。待訓練完成之后,模型便能將大量的知識壓縮到自身的參數中。然而,在互聯網時代,知識更新迅速,導致大模型難以實時更新所蘊含的知識。

1.2.2 大模型生成結構的不可解釋性問題

深度模型由于其內部結構非常復雜,導致人們難以理解模型對輸入做出的決策。然而,模型的解釋性在很多方面都非常重要,因為它可以讓開發人員理解模型時如何進行預測的,從而對模型產生的結果更有信心。此外,解釋性還能幫助開發人員找到可以改進的方面,從而對模型進行更好的調整。在大模型領域中,模型基本都基于Transformer的解碼器結構,因此大模型的生成結果仍然存在不可解釋性問題。

然而,在使用RAG系統后,可以告之每個答案的來源。如果對答案不確定,還可以查看提供的溯源網頁進行查看。相較于純粹的大模型生成,RAG具有較強的可解釋性。

1.2.3 大模型的數據泄漏問題

可以通過數據提取攻擊大模型,獲取電話、身份信息、電子郵件等敏感數據。

然而,在使用RAG系統之后,由于模型組織答案所用到的知識來源于預先提供的知識庫信息,利用個人私有數據不僅可以使模型的答案更具有個性化,還能讓整個系統變得更加安全,降低被誘導輸出敏感信息的風險。

1.2.4 大模型的訓練成本問題

近幾年,模型的規模不斷攀升。BERT-Base僅有1億參數量,而如今已出現千億、萬億級別的大模型。

龐大的參數量意味著需要更多的訓練資源。同時,考慮到訓練時長,一個大模型訓練的成本極其昂貴。早在2021年,便有科學家在論文中通過大量實驗證明,可以使用僅1/25參數量的模型結合RAG系統,在Pile數據集上達到GPT-3的效果

1.3 RAG的工作流程

RAG的工作流程涉及3個主要階段:數據準備、數據召回和答案生成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63146.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于DeepSpeed Chat詳解 PPO 算法中的actor_loss_fn及其核心參數

詳解 PPO 算法中的 actor_loss_fn 及其核心參數 1. 引言 在強化學習中,PPO(Proximal Policy Optimization,近端策略優化)算法是一種經典且高效的策略優化方法。它通過重要性采樣(Importance Sampling)和策…

D3 基礎1

D3 D3.js (Data-Driven Documents) 是一個基于 JavaScript 的庫&#xff0c;用于生成動態、交互式數據可視化。它通過操作文檔對象模型 (DOM) 來生成數據驅動的圖形。官方網站是 https://d3js.org/ <!DOCTYPE html> <html lang"en"><head><me…

基線檢查:Windows安全基線.【手動 || 自動】

基線定義 基線通常指配置和管理系統的詳細描述&#xff0c;或者說是最低的安全要求&#xff0c;它包括服務和應用程序設置、操作系統組件的配置、權限和權利分配、管理規則等。 基線檢查內容 主要包括賬號配置安全、口令配置安全、授權配置、日志配置、IP通信配置等方面內容&…

Python -- Linux中的Matplotlib圖中無法顯示中文 (中文為方框)

目的 用matplotlib生成的圖中文無法正常顯示 方法 主要原因: 沒找到字體 進入windows系統的C:\Windows\Fonts目錄, 復制自己想要的字體 粘貼到Linux服務器中對應python文件所處的文件夾內 設置字體: 設置好字體文件的路徑在需要對字體設置的地方設置字體 效果 中文正常顯…

快速理解類的加載過程

當程序主動使用某個類時&#xff0c;如果該類還未加載到內存中&#xff0c;則系統會通過如下三個步驟來對該類進行初始化&#xff1a; 1.加載&#xff1a;將class文件字節碼內容加載到內存中&#xff0c;并將這些靜態數據轉換成方法區的運行時數據結構&#xff0c;然后生成一個…

搭建 Elasticsearch 集群:完整教程

本文將詳細介紹如何在 Linux 環境下搭建一個 Elasticsearch 集群&#xff0c;涵蓋環境準備、配置優化、服務啟動等多個環節。 一、環境準備 創建安裝目錄 mkdir /es cd /es解壓 Elasticsearch 安裝包 tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz -C /es配置環境變量 編…

寶塔-docker拉取寶塔鏡像,并運行寶塔鏡像

寶塔-拉取寶塔鏡像&#xff0c;并運行鏡像 第1步&#xff1a;查詢 docker search btpanel/baota此docker鏡像由堡塔安全官方發布&#xff0c;鏡像版本為寶塔面板9.2.0正式版和9.0.0_lts 穩定版&#xff0c;鏡像會隨著寶塔面板更新。 目前支持x86_64和arm架構可供下載使用 版本…

使用 Valgrind 檢測 C 程序中的內存問題 -基礎教程

內存泄漏是許多 C 語言程序中的常見問題&#xff0c;它不僅會導致程序性能下降&#xff0c;甚至可能讓系統崩潰。為了檢測和修復這些問題&#xff0c;Valgrind 是一個非常強大的工具&#xff0c;它可以幫助我們分析 C 程序中的內存使用情況&#xff0c;檢測內存泄漏、越界訪問、…

窮舉vs暴搜vs深搜vs回溯vs剪枝專題一>子集

題目&#xff1a; 兩個方法本質就是決策樹的畫法不同 方法一解析&#xff1a; 代碼&#xff1a; class Solution {private List<List<Integer>> ret;//返回結果private List<Integer> path;//記錄路徑&#xff0c;注意返回現場public List<List<Int…

leecode雙指針部分題目

leecode雙指針部分題目 1. 驗證回文串2. 判斷子序列3. 兩數之和 II - 輸入有序數組4. 盛最多水的容器5. 三數之和 1. 驗證回文串 如果在將所有大寫字符轉換為小寫字符、并移除所有非字母數字字符之后&#xff0c;短語正著讀和反著讀都一樣。則可以認為該短語是一個 回文串 。 …

Web 應用如何使用sqlite?使用 sql.js 實現前端 SQLite 數據庫操作

前言 在 Web 應用開發中&#xff0c;前端數據處理的重要性日益增加。為了實現更高效的前端數據管理&#xff0c;特別是在處理結構化數據時&#xff0c;sql.js 提供了一個出色的解決方案。sql.js 是將 SQLite 數據庫編譯為 JavaScript 的庫&#xff0c;允許開發者在瀏覽器環境中…

docker 安裝 mysql8.0容器外無法連接

文章目錄 概要問題描述解決方案其他命令 概要 主要是mysql5.7和mysql8.0的兼容性問題。 排查了很久 其實就是配置文件的一句話的事情 感覺mysql8.0更為嚴謹 這樣可能是考慮杜絕一些漏洞吧 問題描述 在容器內 netstat -an | grep 3306 都不行 在容器外 netstat -an | grep 2…

TCP協議簡單分析和握手揮手過程

TCP介紹 TCP是可靠的傳輸層協議&#xff0c;建立連接之前會經歷3次握手的階段。 確認機制&#xff1a;接受方 收到數據之后會向 發送方 回復ACK重傳機制&#xff1a;發送方 在一定時間內沒有收到 接收方的ACK就會重新發送 握手目的&#xff1a;與端口建立連接 TCP的三次握手 …

VisualStudio vsix插件自動加載

本文介紹如何在Visual Studio擴展中實現PackageRegistration&#xff0c;包括設置UseManagedResourcesOnly為true&#xff0c;允許背景加載&#xff0c;并針對C#、VB、F#項目提供自動裝載&#xff0c;附官方文檔鏈接。增加以下特性即可…… [PackageRegistration(UseManagedRe…

opencv所有常見函數

一、opencv圖像操作 二、opencv圖像的數值運算 三、opencv圖像的放射變換 四、opencv空間域圖像濾波 五、圖像灰度化與直方圖 六、形態學圖像處理 七、閾值處理與邊緣檢測 八、輪廓和模式匹配

【Excel】單元格分列

目錄 分列&#xff08;新手友好&#xff09; 1. 選中需要分列的單元格后&#xff0c;選擇 【數據】選項卡下的【分列】功能。 2. 按照分列向導提示選擇適合的分列方式。 3. 分好就是這個樣子 智能分列&#xff08;進階&#xff09; 高級分列 Tips&#xff1a; 新手推薦基…

【STM32練習】基于STM32的PM2.5環境監測系統

一.項目背景 最近為了完成老師交付的任務&#xff0c;遂重制了一下小項目用STM32做一個小型的環境監測系統。 項目整體示意框圖如下&#xff1a; 二.器件選擇 單片機&#xff08;STM32F103&#xff09;數字溫濕度模塊&#xff08;DHT11&#xff09;液晶顯示模塊&#xff08;0.8…

《開源數據:開啟信息共享與創新的寶藏之門》

《開源數據&#xff1a;開啟信息共享與創新的寶藏之門》 一、開源數據概述&#xff08;一&#xff09;開源數據的定義&#xff08;二&#xff09;開源數據的發展歷程 二、開源數據的優勢&#xff08;一&#xff09;成本效益優勢&#xff08;二&#xff09;靈活性與可定制性&…

ReactPress最佳實踐—搭建導航網站實戰

Github項目地址&#xff1a;https://github.com/fecommunity/easy-blog 歡迎Star。 近期&#xff0c;阮一峰在科技愛好者周刊第 325 期中推薦了一款開源工具——ReactPress&#xff0c;ReactPress一個基于 Next.js 的博客和 CMS 系統&#xff0c;可查看 demo站點。&#xff08;…

2024,大模型殺進“決賽圈”

Henry Chesbrough在著作《通過技術創新盈利勢在必行》中&#xff0c;曾提出過一個創新的“漏斗模型”。開放式創新一開始鼓勵百花齊放&#xff0c;但最終只有10%的技術能夠通過這個漏斗&#xff0c;成功抵達目標市場target market&#xff0c;進入到商業化與產業化的下一個階段…