<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一文帶你了解RAG(檢索增強(qiáng)生成) | 概念理論介紹+ 代碼實(shí)操

          共 16581字,需瀏覽 34分鐘

           ·

          2024-10-14 08:00

          大模型 RAG 實(shí)戰(zhàn)教程 之 RAG潘多拉寶盒
          https://github.com/km1994/AwesomeRAG

          一、LLMs 已經(jīng)具備了較強(qiáng)能力了,為什么還需要 RAG(檢索增強(qiáng)生成)?

          盡管 LLM 已展現(xiàn)出顯著的能力,但以下幾個(gè)挑戰(zhàn)依然值得關(guān)注:
          • 幻覺(jué)問(wèn)題:LLM 采用基于統(tǒng)計(jì)的概率方法逐詞生成文本,這一機(jī)制內(nèi)在地導(dǎo)致其可能出現(xiàn)看似邏輯嚴(yán)謹(jǐn)實(shí)則缺乏事實(shí)依據(jù)的輸出,即所謂的“鄭重其事的虛構(gòu)陳述”;
          • 時(shí)效性問(wèn)題:隨著 LLM 規(guī)模擴(kuò)大,訓(xùn)練成本與周期相應(yīng)增加。鑒于此,包含最新信息的數(shù)據(jù)難以融入模型訓(xùn)練過(guò)程,導(dǎo)致 LLM 在應(yīng)對(duì)諸如“請(qǐng)推薦當(dāng)前熱門影片”等時(shí)間敏感性問(wèn)題時(shí)力有未逮;
          • 數(shù)據(jù)安全問(wèn)題:通用的 LLM 沒(méi)有企業(yè)內(nèi)部數(shù)據(jù)和用戶數(shù)據(jù),那么企業(yè)想要在保證安全的前提下使用 LLM,最好的方式就是把數(shù)據(jù)全部放在本地,企業(yè)數(shù)據(jù)的業(yè)務(wù)計(jì)算全部在本地完成。而在線的大模型僅僅完成一個(gè)歸納的功能;

          二、介紹一下 RAG?

          RAG(Retrieval Augmented Generation, 檢索增強(qiáng)生成)是一種技術(shù)框架,其核心在于當(dāng) LLM 面對(duì)解答問(wèn)題或創(chuàng)作文本任務(wù)時(shí),首先會(huì)在大規(guī)模文檔庫(kù)中搜索并篩選出與任務(wù)緊密相關(guān)的素材,繼而依據(jù)這些素材精準(zhǔn)指導(dǎo)后續(xù)的回答生成或文本構(gòu)造過(guò)程,旨在通過(guò)此種方式提升模型輸出的準(zhǔn)確性和可靠性。
          RAG 技術(shù)架構(gòu)圖

          三、RAG 主要包含哪些模塊?

          • 模塊一:版面分析
            • 本地知識(shí)文件讀取(pdf、txt、html、doc、excel、png、jpg、語(yǔ)音等)
            • 知識(shí)文件復(fù)原
          • 模塊二:知識(shí)庫(kù)構(gòu)建
            • 知識(shí)文本分割,并構(gòu)建Doc文本
            • Doc文本 embedding
            • Doc文本 構(gòu)建索引
          • 模塊三:大模型微調(diào)
          • 模塊四:基于RAG的知識(shí)問(wèn)答
            • 用戶query embedding
            • query 召回
            • query 排序
            • 將 Top K 個(gè)相關(guān)的 Doc 進(jìn)行拼接,構(gòu)建 context
            • 基于 query 和 context 構(gòu)建 Prompt
            • 將 prompt 喂給大模型生成答案

          四、RAG 相較于直接使用 LLMs進(jìn)行問(wèn)答 有哪些優(yōu)點(diǎn)?

          RAG(檢索增強(qiáng)生成)方法賦予了開(kāi)發(fā)者無(wú)需為每個(gè)特定任務(wù)重新訓(xùn)練大型模型的能力,僅需連接外部知識(shí)庫(kù),即可為模型注入額外的信息資源,從而顯著提升其回答的精確度。這一方法尤其適用于那些高度依賴專業(yè)知識(shí)的任務(wù)。
          以下是 RAG 模型的主要優(yōu)勢(shì):
          1. 可擴(kuò)展性:減小模型規(guī)模及訓(xùn)練開(kāi)銷,同時(shí)簡(jiǎn)化知識(shí)庫(kù)的擴(kuò)容更新過(guò)程。
          2. 準(zhǔn)確性:通過(guò)引用信息源,用戶能夠核查答案的可信度,進(jìn)而增強(qiáng)對(duì)模型輸出結(jié)果的信任感。
          3. 可控性:支持知識(shí)內(nèi)容的靈活更新與個(gè)性化配置。
          4. 可解釋性:展示模型預(yù)測(cè)所依賴的檢索條目,增進(jìn)理解與透明度。
          5. 多功能性:RAG 能夠適應(yīng)多種應(yīng)用場(chǎng)景的微調(diào)與定制,涵蓋問(wèn)答、文本摘要、對(duì)話系統(tǒng)等領(lǐng)域。
          6. 時(shí)效性:運(yùn)用檢索技術(shù)捕捉最新信息動(dòng)態(tài),確保回答既即時(shí)又準(zhǔn)確,相比僅依賴固有訓(xùn)練數(shù)據(jù)的語(yǔ)言模型具有明顯優(yōu)勢(shì)。
          7. 領(lǐng)域定制性:通過(guò)對(duì)接特定行業(yè)或領(lǐng)域的文本數(shù)據(jù)集,RAG 能夠提供針對(duì)性的專業(yè)知識(shí)支持。
          8. 安全性:通過(guò)在數(shù)據(jù)庫(kù)層面實(shí)施角色劃分與安全管控,RAG 有效強(qiáng)化了對(duì)數(shù)據(jù)使用的管理,相較于微調(diào)模型在數(shù)據(jù)權(quán)限管理上的潛在模糊性,展現(xiàn)出更高的安全性。

          五、對(duì)比一下 RAG 和 SFT,說(shuō)一下兩者有哪些區(qū)別?

          實(shí)際上,對(duì)于 LLM 存在的上述問(wèn)題,SFT 是一個(gè)最常見(jiàn)最基本的解決辦法,也是 LLM 實(shí)現(xiàn)應(yīng)用的基礎(chǔ)步驟。那么有必要在多個(gè)維度上比較一下兩種方法:
          當(dāng)然這兩種方法并非非此即彼的,合理且必要的方式是結(jié)合業(yè)務(wù)需要與兩種方法的優(yōu)點(diǎn),合理使用兩種方法。

          模塊一:版面分析

          為什么 需要 版面分析?

          盡管RAG(檢索增強(qiáng)生成)技術(shù)的核心價(jià)值在于其結(jié)合檢索與生成手段以提升文本內(nèi)容的精確度與連貫性,然而在一些具體應(yīng)用領(lǐng)域,如文檔解析、智能化寫作及對(duì)話系統(tǒng)構(gòu)建中,特別是在面對(duì)結(jié)構(gòu)化或半結(jié)構(gòu)化信息的處理需求時(shí),其功能邊界可能拓展至版面分析。

          這是由于此類信息往往嵌于特定的布局結(jié)構(gòu)中,需要對(duì)頁(yè)面元素及其相互關(guān)系進(jìn)行深入理解。

          此外,當(dāng)RAG模型面對(duì)包含豐富多媒體或多模態(tài)成分的數(shù)據(jù)源,諸如網(wǎng)頁(yè)、PDF文件、富文本記錄、Word文檔、圖像資料、語(yǔ)音片段、表格數(shù)據(jù)等復(fù)雜內(nèi)容時(shí),為了能高效地?cái)z取并利用這些非文本信息,具備基本的版面分析能力變得至關(guān)重要。這種能力有助于模型精準(zhǔn)解析各類信息單元,并成功將它們?nèi)诤铣捎幸饬x的整體解讀。

          step 1:本地知識(shí)文件獲取

          q1:如何進(jìn)行 本地知識(shí)文件獲取?

          本地知識(shí)文件獲取涉及從多種數(shù)據(jù)源(如.txt、.pdf、.html、.doc、.xlsx、.png、.jpg、音頻文件等)提取信息的過(guò)程。針對(duì)不同類型的文件,需要采取特定的訪問(wèn)與解析策略來(lái)有效獲取其中蘊(yùn)含的知識(shí)。下面我們將介紹對(duì)于不同數(shù)據(jù)源數(shù)據(jù)的獲取方式和難點(diǎn)。

          q2:如何獲取 富文本txt 中內(nèi)容?

          • 介紹:富文本 主要存儲(chǔ)于 txt 文件中,因?yàn)榕虐姹容^整潔,所以獲取方式比較簡(jiǎn)單
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析——富文本txt讀取】

          q3:如何獲取 PDF文檔 中內(nèi)容?

          • 介紹:PDF文檔中數(shù)據(jù)比較復(fù)雜,包含文本、圖片、表格等不同樣式的數(shù)據(jù),所以解析過(guò)程中會(huì)比較復(fù)雜
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析——PDF 解析神器 pdfplumber】
            • 【版面分析——PDF 解析神器 PyMuPDF】

          q4:如何獲取 HTML文檔 中內(nèi)容?

          • 介紹:PDF文檔中數(shù)據(jù)比較復(fù)雜,包含文本、圖片、表格等不同樣式的數(shù)據(jù),所以解析過(guò)程中會(huì)比較復(fù)雜
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析——網(wǎng)頁(yè)HTML解析 BeautifulSoup】

          q5:如何獲取 Doc文檔 中內(nèi)容?

          • 介紹:Doc文檔中數(shù)據(jù)比較復(fù)雜,包含文本、圖片、表格等不同樣式的數(shù)據(jù),所以解析過(guò)程中會(huì)比較復(fù)雜
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析——Docx 解析神器 python-docx】

          q6:如何使用 OCR 獲取圖片內(nèi)容?

          • 介紹:光學(xué)字符識(shí)別(Optical Character Recognition, OCR)是指對(duì)文本資料的圖像文件進(jìn)行分析識(shí)別處理,獲取文字及版面信息的過(guò)程。亦即將圖像中的文字進(jìn)行識(shí)別,并以文本的形式返回。
          • 思路:
            • 文字識(shí)別:對(duì)定位好的文字區(qū)域進(jìn)行識(shí)別,主要解決的問(wèn)題是每個(gè)文字是什么,將圖像中的文字區(qū)域進(jìn)轉(zhuǎn)化為字符信息。
            • 文字檢測(cè):解決的問(wèn)題是哪里有文字,文字的范圍有多少;
          • 目前開(kāi)源的OCR項(xiàng)目
            • Tesseract
            • PaddleOCR
            • EasyOCR
            • chineseocr
            • chineseocr_lite
            • TrWebOCR
            • cnocr
            • hn_ocr
          • 理論學(xué)習(xí):
            • 【版面分析——圖片解析神器 OCR】
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析——OCR神器 tesseract】
            • 【版面分析——OCR神器 PaddleOCR】
            • 【版面分析——OCR神器 hn_ocr】

          q7:如何使用 ASR 獲取語(yǔ)音內(nèi)容?

          • 別稱:自動(dòng)語(yǔ)音識(shí)別AutomaTlc Speech RecogniTlon,(ASR)
          • 介紹:將一段語(yǔ)音信號(hào)轉(zhuǎn)換成相對(duì)應(yīng)的文本信息,好比"機(jī)器的聽(tīng)覺(jué)系統(tǒng)”,它讓機(jī)器通過(guò)識(shí)別和理解,把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令。
          • 目標(biāo):將人類的語(yǔ)音中的詞匯內(nèi)容轉(zhuǎn)換為計(jì)算機(jī)可讀的輸入(eg:按鍵、二進(jìn)制編碼或者字符序列)
          • 思路:
            • 聲學(xué)信號(hào)預(yù)處理:為了更有效地提取特征往往還需要對(duì)所采集到的聲音信號(hào)進(jìn)行濾波、分幀等預(yù)處理工作,把要分析的信號(hào)從原始信號(hào)中提取出來(lái);
            • 特征提取:將聲音信號(hào)從時(shí)域轉(zhuǎn)換到頻域,為聲學(xué)模型提供合適的特征向量;
            • 聲學(xué)模型:根據(jù)聲學(xué)特性計(jì)算每一個(gè)特征向量在聲學(xué)特征上的得分;
            • 語(yǔ)言模型:根據(jù)語(yǔ)言學(xué)相關(guān)的理論,計(jì)算該聲音信號(hào)對(duì)應(yīng)可能詞組序列的概率;
            • 字典與解碼:根據(jù)已有的字典,對(duì)詞組序列進(jìn)行解碼,得到最后可能的文本表示
          • 理論教程:
            • 【版面分析 之 語(yǔ)音識(shí)別】
          • 實(shí)戰(zhàn)技巧:
            • 【版面分析 之 Speech-to-Text】
            • 【版面分析 之 WeTextProcessing】
            • 【版面分析——ASR神器 Wenet】
            • 【版面分析 之 ASR神器訓(xùn)練】

          step 2:知識(shí)文件復(fù)原

          q1:為什么需要進(jìn)行 知識(shí)文件復(fù)原?

          本地知識(shí)文件獲取包含對(duì)多源化數(shù)據(jù)(txt、pdf、html、doc、excel、png、jpg、語(yǔ)音等)進(jìn)行讀取之后,容易將一個(gè)多行段落分割成多個(gè)段落,從而導(dǎo)致段落遇到被分割,所以需要根據(jù)內(nèi)容邏輯重新組織段落。

          q2:如何對(duì) 知識(shí)文件進(jìn)行復(fù)原?

          1. 方法一:基于規(guī)則的知識(shí)文件復(fù)原
          2. 方法二:基于 Bert NSP 進(jìn)行上下句拼接

          step 3:版面分析———優(yōu)化策略篇

          • 理論學(xué)習(xí):
            • 【版面分析———優(yōu)化策略篇】

          step 4:Homework

          • 任務(wù)描述:使用上述方法對(duì) 【SMP 2023 ChatGLM金融大模型挑戰(zhàn)賽】的 【ChatGLM評(píng)估挑戰(zhàn)賽-金融賽道數(shù)據(jù)集】進(jìn)行版面分析
          • 任務(wù)效果:分析各種方法效果和性能

          模塊二:知識(shí)庫(kù)構(gòu)建

          為什么 需要 知識(shí)庫(kù)構(gòu)建?

          在RAG(Retrieval-Augmented Generation)中構(gòu)建知識(shí)庫(kù)是至關(guān)重要的,原因包括但不限于以下幾點(diǎn):
          1. 擴(kuò)展模型能力:大規(guī)模語(yǔ)言模型如GPT系列雖然具有強(qiáng)大的語(yǔ)言生成和理解能力,但受限于訓(xùn)練數(shù)據(jù)集的覆蓋范圍,它們可能無(wú)法準(zhǔn)確回答一些基于特定事實(shí)或詳細(xì)背景信息的問(wèn)題。通過(guò)構(gòu)建知識(shí)庫(kù),RAG可以補(bǔ)充模型自身的知識(shí)局限性,允許模型檢索到最新、最準(zhǔn)確的信息來(lái)生成答案。
          2. 實(shí)時(shí)更新信息:知識(shí)庫(kù)可以實(shí)時(shí)更新和擴(kuò)充,確保模型能夠獲取最新的知識(shí)內(nèi)容,這對(duì)于處理時(shí)效性強(qiáng)的信息尤為關(guān)鍵,比如新聞事件、科技進(jìn)展等。
          3. 提高準(zhǔn)確性:RAG結(jié)合了檢索與生成兩個(gè)過(guò)程,在生成回答前先檢索相關(guān)文檔,從而提高了回答問(wèn)題時(shí)的準(zhǔn)確性。這樣,模型生成的答案不僅基于其內(nèi)部參數(shù)化的知識(shí),還基于外部可靠來(lái)源的知識(shí)庫(kù)。
          4. 減少過(guò)擬合與hallucination(幻覺(jué)生成):大模型有時(shí)會(huì)因?yàn)檫^(guò)度依賴內(nèi)在模式而出現(xiàn)hallucination現(xiàn)象,即生成看似合理實(shí)則無(wú)依據(jù)的答案。通過(guò)引用知識(shí)庫(kù)中的確切證據(jù),RAG可以降低此類錯(cuò)誤產(chǎn)生的可能性。
          5. 增強(qiáng)可解釋性:RAG不僅能提供答案,還能指出答案的來(lái)源,增強(qiáng)了模型生成結(jié)果的透明度和可信度。
          6. 支持個(gè)性化及私有化需求:對(duì)于企業(yè)或個(gè)人用戶,可以通過(guò)構(gòu)建專屬知識(shí)庫(kù)滿足特定領(lǐng)域或私人定制的需求,使得大模型能更好地服務(wù)于特定場(chǎng)景和業(yè)務(wù)。
          綜上所述,構(gòu)建知識(shí)庫(kù)對(duì)于RAG模型來(lái)說(shuō),是實(shí)現(xiàn)高效準(zhǔn)確地檢索并生成答案的核心機(jī)制之一,它極大地提升了模型在實(shí)際應(yīng)用中的性能和可靠性。

          step 1:知識(shí)文本分塊

          • 為什么需要對(duì)文本分塊?
            • 信息丟失的風(fēng)險(xiǎn):試圖一次性提取整個(gè)文檔的嵌入向量,雖然可以捕捉到整體的上下文,但也可能會(huì)忽略掉許多針對(duì)特定主題的重要信息,這可能會(huì)導(dǎo)致生成的信息不夠精確或者有所缺失。
            • 分塊大小的限制:在使用如OpenAI這樣的模型時(shí),分塊大小是一個(gè)關(guān)鍵的限制因素。例如,GPT-4模型有一個(gè)32K的窗口大小限制。盡管這個(gè)限制在大多數(shù)情況下不是問(wèn)題,但從一開(kāi)始就考慮到分塊大小是很重要的。
          • 主要考慮兩個(gè)因素:
            • embedding模型的Tokens限制情況;
            • 語(yǔ)義完整性對(duì)整體的檢索效果的影響;
          • 實(shí)戰(zhàn)技巧:
            • 【知識(shí)庫(kù)構(gòu)建——知識(shí)文本分塊】
            • 【知識(shí)庫(kù)構(gòu)建——文檔切分優(yōu)化策略篇】

          step 2:Docs 向量化(embdeeing)

          q1:什么是Docs 向量化(embdeeing)?

          Embedding 也是文本語(yǔ)義含義的信息密集表示,每個(gè)嵌入都是一個(gè)浮點(diǎn)數(shù)向量,使得向量空間中兩個(gè)嵌入之間的距離與原始格式中兩個(gè)輸入之間的語(yǔ)義相似性相關(guān)聯(lián)。
          例如,如果兩個(gè)文本相似,則它們的向量表示也應(yīng)該相似,這一組向量空間內(nèi)的數(shù)組表示描述了文本之間的細(xì)微特征差異。
          簡(jiǎn)單來(lái)說(shuō),Embedding 幫助計(jì)算機(jī)來(lái)理解如人類信息所代表的“含義”,Embedding 可以用來(lái)獲取文本、圖像、視頻、或其他信息的特征“相關(guān)性”,這種相關(guān)性在應(yīng)用層面常用于搜索、推薦、分類、聚類。

          q2:Embedding 是如何工作的?

          舉例來(lái)講,這里有三句話:
          1. “The cat chases the mouse” “貓追逐老鼠”
          2. “The kitten hunts rodents” 小貓捕獵老鼠。
          3. “I like ham sandwiches” 我喜歡火腿三明治。
          如果是人類來(lái)將這三個(gè)句子來(lái)分類,句子 1 和句子 2 幾乎是同樣的含義,而句子 3 卻完全不同。但我們看到在英文原文句子中,句子 1 和句子 2 只有“The”是相同的,沒(méi)有其他相同詞匯。計(jì)算機(jī)該如何理解前兩個(gè)句子的相關(guān)性?
          Embedding 將離散信息(單詞和符號(hào))壓縮為分布式連續(xù)值數(shù)據(jù)(向量)。如果我們將之前的短語(yǔ)繪制在圖表上,它可能看起來(lái)像這樣:

          在文本被 Embedding 壓縮到計(jì)算機(jī)可以理解的多維向量化空間之后,由于句子 1 和 2 的含義相似,它們會(huì)被繪制在彼此附近。句子 3 卻距離較遠(yuǎn),因?yàn)樗c它們沒(méi)有關(guān)聯(lián)。如果我們有第四個(gè)短語(yǔ) “Sally 吃了瑞士奶酪”,它可能存在于句子 3(奶酪可以放在三明治上)和句子 1(老鼠喜歡瑞士奶酪)之間的某個(gè)地方。

          q3:Embedding 的語(yǔ)義檢索方式對(duì)比關(guān)鍵詞檢索的優(yōu)勢(shì)?

          1. 語(yǔ)義理解:基于 Embedding 的檢索方法通過(guò)詞向量來(lái)表示文本,這使得模型能夠捕捉到詞匯之間的語(yǔ)義聯(lián)關(guān)系,相比之下,基于關(guān)鍵詞的檢索往往關(guān)注字面匹配,可能忽略了詞語(yǔ)之間的語(yǔ)義聯(lián)系。
          2. 容錯(cuò)性:由于基于 Embedding 的方法能夠理解詞匯之間的關(guān)系,所以在處理拼寫錯(cuò)誤、同義詞、近義詞等情況時(shí)更具優(yōu)勢(shì)。而基于關(guān)鍵詞的檢索方法對(duì)這些情況的處理相對(duì)較弱。
          3. 多語(yǔ)言支持:許多 Embedding 方法可以支持多種語(yǔ)言,有助于實(shí)現(xiàn)跨語(yǔ)言的文本檢索。比如你可以用中文輸入來(lái)查詢英文文本內(nèi)容,而基于關(guān)鍵詞的檢索方法很難做到這一點(diǎn)。
          4. 語(yǔ)境理解:基于 Embedding 的方法在處理一詞多義的情況時(shí)更具優(yōu)勢(shì),因?yàn)樗軌蚋鶕?jù)上下文為詞語(yǔ)賦予不同的向量表示。而基于關(guān)鍵詞的檢索方法可能無(wú)法很好地區(qū)分同一個(gè)詞在不同語(yǔ)境下的含義。

          q4:Embedding檢索存在哪些限制?

          1. 輸入詞數(shù)限制:即便借助Embedding技術(shù)選取與查詢最為匹配的文本片段供大型模型參考,詞匯數(shù)量的約束依然存在。當(dāng)檢索覆蓋的文本范圍廣泛時(shí),為了控制注入模型的上下文詞匯量,通常會(huì)對(duì)檢索結(jié)果設(shè)定TopK的閾值K,但這不可避免地引發(fā)了信息遺漏的問(wèn)題。
          2. 僅支持文本數(shù)據(jù):現(xiàn)階段的GPT-3.5及諸多大型語(yǔ)言模型尚不具備圖像識(shí)別功能,然而,在知識(shí)檢索過(guò)程中,許多關(guān)鍵信息往往依賴于圖文結(jié)合來(lái)充分理解。例如,學(xué)術(shù)論文中的示意圖、財(cái)務(wù)報(bào)告中的數(shù)據(jù)圖表,僅憑文本難以精準(zhǔn)把握其內(nèi)涵。
          3. 大模型的胡編亂造:當(dāng)檢索到的相關(guān)文獻(xiàn)資料不足以支撐大型模型準(zhǔn)確回答問(wèn)題時(shí),為盡力完成響應(yīng),模型可能會(huì)出現(xiàn)一定程度的“即興創(chuàng)作”,即在有限信息基礎(chǔ)上進(jìn)行推測(cè)與補(bǔ)充。
          • 理論學(xué)習(xí):
            • 【知識(shí)庫(kù)構(gòu)建—Doc 向量化】
          • 實(shí)戰(zhàn)技巧:
            • 【Docs向量化——騰訊詞向量】
            • 【Docs向量化——sbert】
            • 【Docs向量化——SimCSE】
            • 【Docs向量化——text2vec】
            • 【Docs向量化——SGPT】
            • 【Docs向量化——BGE —— 智源開(kāi)源最強(qiáng)語(yǔ)義向量模型】
            • 【Docs向量化——M3E:一種大規(guī)模混合embedding】

          step 3:Docs 構(gòu)建索引

          • 介紹
          • 實(shí)戰(zhàn)技巧:
            • 【Docs構(gòu)建索引——Faiss】
            • 【Docs構(gòu)建索引——milvus】
            • 【Docs構(gòu)建索引—— Elasticsearch】

          模塊三:大模型微調(diào)

          為什么 需要 大模型微調(diào)?

          通常,要對(duì)大模型進(jìn)行微調(diào),有以下一些原因:
          • 第一個(gè)原因是,因?yàn)榇竽P偷膮?shù)量非常大,訓(xùn)練成本非常高,每家公司都去從頭訓(xùn)練一個(gè)自己的大模型,這個(gè)事情的性價(jià)比非常低;
          • 第二個(gè)原因是,Prompt Engineering的方式是一種相對(duì)來(lái)說(shuō)容易上手的使用大模型的方式,但是它的缺點(diǎn)也非常明顯。因?yàn)橥ǔ4竽P偷膶?shí)現(xiàn)原理,都會(huì)對(duì)輸入序列的長(zhǎng)度有限制,Prompt Engineering 的方式會(huì)把Prompt搞得很長(zhǎng)。
          越長(zhǎng)的Prompt,大模型的推理成本越高,因?yàn)橥评沓杀臼歉鶳rompt長(zhǎng)度的平方正向相關(guān)的。
          另外,Prompt太長(zhǎng)會(huì)因超過(guò)限制而被截?cái)啵M(jìn)而導(dǎo)致大模型的輸出質(zhì)量打折口,這也是一個(gè)非常嚴(yán)重的問(wèn)題。
          對(duì)于個(gè)人使用者而言,如果是解決自己日常生活、工作中的一些問(wèn)題,直接用Prompt Engineering的方式,通常問(wèn)題不大。
          但對(duì)于對(duì)外提供服務(wù)的企業(yè)來(lái)說(shuō),要想在自己的服務(wù)中接入大模型的能力,推理成本是不得不要考慮的一個(gè)因素,微調(diào)相對(duì)來(lái)說(shuō)就是一個(gè)更優(yōu)的方案。
          • 第三個(gè)原因是,Prompt Engineering的效果達(dá)不到要求,企業(yè)又有比較好的自有數(shù)據(jù),能夠通過(guò)自有數(shù)據(jù),更好的提升大模型在特定領(lǐng)域的能力。這時(shí)候微調(diào)就非常適用。
          • 第四個(gè)原因是,要在個(gè)性化的服務(wù)中使用大模型的能力,這時(shí)候針對(duì)每個(gè)用戶的數(shù)據(jù),訓(xùn)練一個(gè)輕量級(jí)的微調(diào)模型,就是一個(gè)不錯(cuò)的方案。
          • 第五個(gè)原因是,數(shù)據(jù)安全的問(wèn)題。如果數(shù)據(jù)是不能傳遞給第三方大模型服務(wù)的,那么搭建自己的大模型就非常必要。通常這些開(kāi)源的大模型都是需要用自有數(shù)據(jù)進(jìn)行微調(diào),才能夠滿足業(yè)務(wù)的需求,這時(shí)候也需要對(duì)大模型進(jìn)行微調(diào)。

          如何對(duì)大模型進(jìn)行微調(diào)?

          q1:大模型的微調(diào)技術(shù)路線問(wèn)題

          從參數(shù)規(guī)模的角度,大模型的微調(diào)分成兩條技術(shù)路線:
          • 技術(shù)路線一:對(duì)全量的參數(shù),進(jìn)行全量的訓(xùn)練,這條路徑叫全量微調(diào)FFT(Full Fine Tuning)。
          • 技術(shù)路線二:只對(duì)部分的參數(shù)進(jìn)行訓(xùn)練,這條路徑叫PEFT(Parameter-Efficient Fine Tuning)。

          q2:大模型的全量微調(diào)FFT 技術(shù)存在哪些問(wèn)題

          FFT也會(huì)帶來(lái)一些問(wèn)題,影響比較大的問(wèn)題,主要有以下兩個(gè):
          • 問(wèn)題一:訓(xùn)練的成本會(huì)比較高,因?yàn)槲⒄{(diào)的參數(shù)量跟預(yù)訓(xùn)練的是一樣的多的;
          • 問(wèn)題二:災(zāi)難性遺忘(Catastrophic Forgetting),用特定訓(xùn)練數(shù)據(jù)去微調(diào)可能會(huì)把這個(gè)領(lǐng)域的表現(xiàn)變好,但也可能會(huì)把原來(lái)表現(xiàn)好的別的領(lǐng)域的能力變差。

          q3:大模型的 PEFT(Parameter-Efficient Fine Tuning) 解決哪些問(wèn)題

          PEFT主要想解決的問(wèn)題,就是FFT存在的上述兩個(gè)問(wèn)題,PEFT也是目前比較主流的微調(diào)方案。
          從訓(xùn)練數(shù)據(jù)的來(lái)源、以及訓(xùn)練的方法的角度,大模型的微調(diào)有以下幾條技術(shù)路線:
          • 技術(shù)路線一:監(jiān)督式微調(diào)SFT(Supervised Fine Tuning),這個(gè)方案主要是用人工標(biāo)注的數(shù)據(jù),用傳統(tǒng)機(jī)器學(xué)習(xí)中監(jiān)督學(xué)習(xí)的方法,對(duì)大模型進(jìn)行微調(diào);
          • 技術(shù)路線二:基于人類反饋的強(qiáng)化學(xué)習(xí)微調(diào)RLHF(Reinforcement Learning with Human Feedback),這個(gè)方案的主要特點(diǎn)是把人類的反饋,通過(guò)強(qiáng)化學(xué)習(xí)的方式,引入到對(duì)大模型的微調(diào)中去,讓大模型生成的結(jié)果,更加符合人類的一些期望;
          • 技術(shù)路線三:基于AI反饋的強(qiáng)化學(xué)習(xí)微調(diào)RLAIF(Reinforcement Learning with AI Feedback),這個(gè)原理大致跟RLHF類似,但是反饋的來(lái)源是AI。這里是想解決反饋系統(tǒng)的效率問(wèn)題,因?yàn)槭占祟惙答仯鄬?duì)來(lái)說(shuō)成本會(huì)比較高、效率比較低。
          不同的分類角度,只是側(cè)重點(diǎn)不一樣,對(duì)同一個(gè)大模型的微調(diào),也不局限于某一個(gè)方案,可以多個(gè)方案一起。
          微調(diào)的最終目的,是能夠在可控成本的前提下,盡可能地提升大模型在特定領(lǐng)域的能力。

          大模型LLM進(jìn)行SFT操作的時(shí)候在學(xué)習(xí)什么?

          • 預(yù)訓(xùn)練->在大量無(wú)監(jiān)督數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,得到基礎(chǔ)模型-->將預(yù)訓(xùn)練模型作為SFT和RLHF的起點(diǎn)。
          • SFT-->在有監(jiān)督的數(shù)據(jù)集上進(jìn)行SFT訓(xùn)練,利用上下文信息等監(jiān)督信號(hào)進(jìn)一步優(yōu)化模型-->將SFT訓(xùn)練后的模型作為RLHF的起點(diǎn)。
          • RLHF-->利用人類反饋進(jìn)行強(qiáng)化學(xué)習(xí),優(yōu)化模型以更好地適應(yīng)人類意圖和偏好-->將RLHF訓(xùn)練后的模型進(jìn)行評(píng)估和驗(yàn)證,并進(jìn)行必要的調(diào)整。

          step 1:大模型微調(diào)訓(xùn)練數(shù)據(jù)構(gòu)建

          • 介紹:如何構(gòu)建 訓(xùn)練數(shù)據(jù)?
          • 實(shí)戰(zhàn)技巧:
            • 【大模型(LLMs)LLM生成SFT數(shù)據(jù)方法篇】

          step 2:大模型指令微調(diào)篇

          • 介紹:如何構(gòu)建 訓(xùn)練數(shù)據(jù)?
          • 實(shí)戰(zhàn)技巧:
            • 【大模型(LLMs)繼續(xù)預(yù)訓(xùn)練篇】
            • 【大模型(LLMs)指令微調(diào)篇】
            • 【大模型(LLMs)獎(jiǎng)勵(lì)模型訓(xùn)練篇】
            • 【大模型(LLMs)強(qiáng)化學(xué)習(xí)——PPO訓(xùn)練篇】
            • 【大模型(LLMs)強(qiáng)化學(xué)習(xí)——DPO訓(xùn)練篇】

          模塊四:文檔檢索

          為什么 需要 文檔檢索?

          文檔檢索 作為 RAG 核心工作,其效果對(duì)于下游工作至關(guān)重要。
          雖然可以通過(guò)向量召回的方式從文檔庫(kù)里召回和用戶問(wèn)題相關(guān)的文檔片段,同時(shí)輸入到LLM中,增強(qiáng)模型回答質(zhì)量。
          常用的方式直接用用戶的問(wèn)題進(jìn)行文檔召回。但是很多時(shí)候,用戶的問(wèn)題是十分口語(yǔ)化的,描述的也比較模糊,這樣會(huì)影響向量召回的質(zhì)量,進(jìn)而影響模型回答效果
          本章主要介紹 文檔檢索 過(guò)程中 存在的一些問(wèn)題和對(duì)應(yīng)的解決方法。

          step 1:文檔檢索負(fù)樣本樣本挖掘

          • 介紹:在各類檢索任務(wù)中,為訓(xùn)練好一個(gè)高質(zhì)量的檢索模型,往往需要從大量的候選樣本集合中采樣高質(zhì)量的負(fù)例,配合正例一起進(jìn)行訓(xùn)練。
          • 實(shí)戰(zhàn)技巧:
            • 【文檔檢索——負(fù)樣本樣本挖掘篇】

          step 2:文檔檢索優(yōu)化策略

          • 介紹:文檔檢索優(yōu)化策略
          • 實(shí)戰(zhàn)技巧:
            • 【文檔檢索——文檔檢索優(yōu)化策略篇】

          模塊五:Reranker

          為什么 需要 Reranker?

          基本的 RAG 應(yīng)用包括四個(gè)關(guān)鍵技術(shù)組成部分:
          • Embedding 模型:用于將外部文檔和用戶查詢轉(zhuǎn)換成 Embedding 向量
          • 向量數(shù)據(jù)庫(kù):用于存儲(chǔ) Embedding 向量和執(zhí)行向量相似性檢索(檢索出最相關(guān)的 Top-K 個(gè)信息)
          • 提示詞工程(Prompt engineering):用于將用戶的問(wèn)題和檢索到的上下文組合成大模型的輸入
          • 大語(yǔ)言模型(LLM):用于生成回答
          上述的基礎(chǔ) RAG 架構(gòu)可以有效解決 LLM 產(chǎn)生“幻覺(jué)”、生成內(nèi)容不可靠的問(wèn)題。但是,一些企業(yè)用戶對(duì)上下文相關(guān)性和問(wèn)答準(zhǔn)確度提出了更高要求,需要更為復(fù)雜的架構(gòu)。一個(gè)行之有效且較為流行的做法就是在 RAG 應(yīng)用中集成 Reranker

          什么是 Reranker?

          Reranker 是信息檢索(IR)生態(tài)系統(tǒng)中的一個(gè)重要組成部分,用于評(píng)估搜索結(jié)果,并進(jìn)行重新排序,從而提升查詢結(jié)果相關(guān)性
          在 RAG 應(yīng)用中,主要在拿到向量查詢(ANN)的結(jié)果后使用 Reranker,能夠更有效地確定文檔和查詢之間的語(yǔ)義相關(guān)性,更精細(xì)地對(duì)結(jié)果重排,最終提高搜索質(zhì)量。

          step 1:Reranker 篇

          • 理論學(xué)習(xí):
            • 【RAG文檔檢索——Reranker 篇】
          • 實(shí)戰(zhàn)技巧:
            • 【Reranker——bge-reranker篇】

          模塊六:RAG 評(píng)測(cè)面

          為什么需要 對(duì) RAG 進(jìn)行評(píng)測(cè)?

          在探索和優(yōu)化 RAG(檢索增強(qiáng)生成器)的過(guò)程中,如何有效評(píng)估其性能已經(jīng)成為關(guān)鍵問(wèn)題。

          step 1:RAG 評(píng)測(cè) 篇

          • 理論學(xué)習(xí):
            • 【RAG評(píng)測(cè)篇】

          模塊七:RAG 開(kāi)源項(xiàng)目推薦學(xué)習(xí)

          為什么 需要 RAG 開(kāi)源項(xiàng)目推薦學(xué)習(xí)?

          前面已經(jīng)帶你走完了 RAG 的各個(gè)流程,下面將推薦一些 RAG 開(kāi)源項(xiàng)目,幫助大佬們進(jìn)行消化學(xué)習(xí)。

          RAG 開(kāi)源項(xiàng)目推薦 —— RAGFlow 篇

          • 介紹:RAGFlow 是一款基于深度文檔理解構(gòu)建的開(kāi)源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以為各種規(guī)模的企業(yè)及個(gè)人提供一套精簡(jiǎn)的 RAG 工作流程,結(jié)合大語(yǔ)言模型(LLM)針對(duì)用戶各類不同的復(fù)雜格式數(shù)據(jù)提供可靠的問(wèn)答以及有理有據(jù)的引用。
          • 項(xiàng)目學(xué)習(xí):
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(一)——RagFlow docker 部署】
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(二)——RagFlow 知識(shí)庫(kù)構(gòu)建】
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(三)——RagFlow 模型供應(yīng)商選擇】
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(四)——RagFlow 對(duì)話】
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(五)——RAGFlow Api 接入(以 ollama 為例)】
            • 【RAG 項(xiàng)目推薦——RagFlow 篇(六)——RAGFlow 源碼學(xué)習(xí)】

          RAG 開(kāi)源項(xiàng)目推薦 —— QAnything 篇

          • 介紹:QAnything(Question and Answer based on Anything)是一個(gè)本地知識(shí)庫(kù)問(wèn)答系統(tǒng),旨在支持多種文件格式和數(shù)據(jù)庫(kù),允許離線安裝和使用。使用QAnything,您可以簡(jiǎn)單地刪除本地存儲(chǔ)的任何格式的文件,并獲得準(zhǔn)確、快速和可靠的答案。QAnything目前支持的知識(shí)庫(kù)文件格式包括:PDF(pdf) , Word(docx) , PPT(pptx) , XLS(xlsx) , Markdown(md) , Email(eml) , TXT(txt) , Image(jpg,jpeg,png) , CSV (csv)、網(wǎng)頁(yè)鏈接(html)等。
          • 項(xiàng)目學(xué)習(xí):
            • 【RAG 開(kāi)源項(xiàng)目推薦 —— QAnything 篇】

          RAG 開(kāi)源項(xiàng)目推薦 —— ElasticSearch-Langchain 篇

          • 介紹:受langchain-ChatGLM項(xiàng)目啟發(fā),由于Elasticsearch可實(shí)現(xiàn)文本和向量?jī)煞N方式混合查詢,且在業(yè)務(wù)場(chǎng)景中使用更廣泛,因此本項(xiàng)目用Elasticsearch代替Faiss作為知識(shí)存儲(chǔ)庫(kù),利用Langchain+Chatglm2實(shí)現(xiàn)基于自有知識(shí)庫(kù)的智能問(wèn)答。
          • 項(xiàng)目學(xué)習(xí):
            • 【【LLMs 入門實(shí)戰(zhàn)】基于 本地知識(shí)庫(kù) 的高效 ??ElasticSearch-Langchain-Chatglm2】

          RAG 開(kāi)源項(xiàng)目推薦 —— Langchain-Chatchat 篇

          • 介紹:Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 與 ChatGLM 等語(yǔ)言模型的本地知識(shí)庫(kù)問(wèn)答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain
          • 項(xiàng)目學(xué)習(xí):
            • 【【LLMs 入門實(shí)戰(zhàn)】基于 本地知識(shí)庫(kù) 的高效 ??Langchain-Chatchat】


          瀏覽 114
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩国产区 | 精品国产一区二区三区无码 | 欧美1234区黄片 | 手机在线免费AV | 黄在线免费看 |