自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RAGLAB:又來(lái)一個(gè)RAG框架,還是模塊化的

發(fā)布于 2024-8-27 12:37
瀏覽
0收藏

1. 背景

檢索增強(qiáng)生成(RAG)借助外部知識(shí)來(lái)緩解幻覺(jué)問(wèn)題,保障實(shí)時(shí)知識(shí)更新。然而,大家在研究 RAG 算法時(shí)面臨兩大主要問(wèn)題:

? 一方面,許多已發(fā)表的成果要么并非開(kāi)源,要么難以搭建環(huán)境,大家不得不耗費(fèi)大量時(shí)間從零開(kāi)始研發(fā)新算法。

? 另一方面,新的 RAG 算法紛紛涌現(xiàn),比如 ITER-RETGEN、RRR、Self-Ask、Active RAG、Self-RAG 等等。然而,這些 RAG 算法在基本組件和評(píng)估方法上并不統(tǒng)一,導(dǎo)致大家難以準(zhǔn)確評(píng)估改進(jìn)效果。

雖然現(xiàn)在也有很多新的開(kāi)發(fā)框架支持RAG算法,比如:LlamaIndex、LangChain、Haystack、FastRAG、RALLE、LocalRQA、AutoRAG 和 FlashRAG。

? LlamaIndex、LangChain 和 Haystack 過(guò)度封裝,內(nèi)部運(yùn)作機(jī)制缺乏透明度。

? FastRAG 和 RALLE 提供了輕量且透明的框架,使用戶(hù)能夠運(yùn)用核心組件組裝自己的 RAG 系統(tǒng)。

? AutoRAG 提供了全面的指標(biāo),為定制數(shù)據(jù)挑選最優(yōu)的 RAG 系統(tǒng)。

? LocalRAG 提供了豐富的模型訓(xùn)練算法和評(píng)估方法。

? FlashRAG 通過(guò)重現(xiàn)大量現(xiàn)有算法解決了這一問(wèn)題。然而,F(xiàn)lashRAG 缺少訓(xùn)練功能,并且在推理時(shí)無(wú)法正確對(duì)齊生成器,導(dǎo)致各種算法之間的比較有失公平。

為了填補(bǔ)這一空缺,作者推出了 RAGLAB,一個(gè)面向研究人員的 RAG 工具包,用于對(duì)現(xiàn)有 RAG 算法進(jìn)行公平比較,并簡(jiǎn)化新算法的開(kāi)發(fā)流程。

2. RAGLAB

RAGLAB 的整體架構(gòu)如上圖所示。

2.1 類(lèi)和概念

2.1.1 檢索器

RAGLAB 整合了兩個(gè)高性能的基于 BERT 的模型,即 Contriever 和 ColBERT。而且,RAGLAB 統(tǒng)一了不同檢索器類(lèi)的查詢(xún)接口,方便用戶(hù)在各種檢索器之間無(wú)縫切換。

在評(píng)估階段,研究人員需要并行對(duì)多個(gè) RAG 算法進(jìn)行基準(zhǔn)測(cè)試。為了避免反復(fù)加載和查詢(xún)檢索器模型及知識(shí)數(shù)據(jù)庫(kù)會(huì)耗費(fèi)大量時(shí)間,RAGLAB 設(shè)計(jì)了檢索器服務(wù)器和客戶(hù)端架構(gòu),實(shí)現(xiàn)對(duì)檢索器的高并發(fā)訪問(wèn)。

此外,RAGLAB 還實(shí)現(xiàn)了檢索緩存機(jī)制。會(huì)存儲(chǔ)初始查詢(xún)的結(jié)果及其檢索到的知識(shí)。所以,當(dāng)使用相同輸入進(jìn)行查詢(xún)時(shí),檢索器會(huì)直接返回緩存結(jié)果,無(wú)需重新計(jì)算。

基于 RAGLAB,用戶(hù)只需加載一次檢索器模型和知識(shí)數(shù)據(jù)庫(kù),就能在多個(gè)并行評(píng)估實(shí)驗(yàn)中實(shí)現(xiàn)延遲小于 0.1 秒的檢索服務(wù)。

2.1.2 語(yǔ)料庫(kù)

外部知識(shí)數(shù)據(jù)庫(kù)對(duì) RAG 系統(tǒng)的性能有重大影響。

RAGLAB 提供了兩個(gè)版本的預(yù)處理維基百科語(yǔ)料庫(kù):第一個(gè)版本基于 DPR 項(xiàng)目開(kāi)源的 2018 年維基百科數(shù)據(jù);第二個(gè)版本利用 FactScore 開(kāi)源的 2023 年維基百科數(shù)據(jù)。

RAGLAB 還基于維基百科 2018 和 2023 語(yǔ)料庫(kù)為 ColBERT 和 Contriever 模型預(yù)先構(gòu)建了索引和嵌入。另外,RAGLAB 開(kāi)源了所有處理腳本,方便研究人員直接下載預(yù)處理的維基百科語(yǔ)料庫(kù)及其相應(yīng)的索引和嵌入。

2.1.3 生成器

生成器是 RAG 系統(tǒng)的核心組件。集成了 Huggingface Transformers 和 VLLM,使得 RAGLAB 能夠兼容眾多開(kāi)源模型,同時(shí)提供穩(wěn)定高效的推理性能。

RAGLAB 還融入了量化和LoRA功能,讓用戶(hù)即便在計(jì)算資源有限的情況下,也能使用 70B 或更大的模型作為生成器。

此外,考慮到用戶(hù)可能需要在單個(gè) RAG 算法中同時(shí)加載多個(gè)生成器,開(kāi)發(fā)了一個(gè) GPU 管理模塊。該模塊能讓用戶(hù)通過(guò)參數(shù)配置在指定的 GPU 上精準(zhǔn)分配多個(gè)生成器。

除了開(kāi)源模型,生成器模塊包含OpenaiModel,支持像 OpenAI 這樣的閉源大型語(yǔ)言模型。未來(lái)的發(fā)展會(huì)將支持?jǐn)U展到包括 Claude、Gemini 和 Azure 在內(nèi)的其他閉源大型語(yǔ)言模型。

2.1.4 指令實(shí)驗(yàn)室

指令對(duì)大型語(yǔ)言模型生成的輸出質(zhì)量影響顯著。然而,在諸如 LlamaIndex 和 LangChain 等框架中,許多關(guān)鍵指令缺乏透明度,被封裝在架構(gòu)的底層。這種封裝不方便修改提示詞指令。

為解決這些問(wèn)題,RAGLAB 設(shè)計(jì)了指令實(shí)驗(yàn)室模塊,其中包括三個(gè)關(guān)鍵組件:系統(tǒng)指令、任務(wù)指令和算法指令。允許用戶(hù)從 3 個(gè)指令池中高效導(dǎo)入和組合所需的提示。此外,用戶(hù)可以在配置設(shè)置中調(diào)整參數(shù),便于使用不同指令進(jìn)行對(duì)比實(shí)驗(yàn)。

2.1.5 訓(xùn)練器

RAGLAB 集成了 Accelerate 和 DeepSpeed 庫(kù),以提供全面且高效的微調(diào)能力。此外,訓(xùn)練器模塊支持LoRA和QLoRA技術(shù),使用戶(hù)能夠在計(jì)算資源有限的情況下微調(diào)70B或更大的模型。

2.1.6 數(shù)據(jù)集和指標(biāo)

如上表,RAGLAB 收集了 10 個(gè)被廣泛使用的測(cè)試數(shù)據(jù)集,涵蓋 5 個(gè)不同的任務(wù)。

RAGLAB 提供了 3 個(gè)經(jīng)典指標(biāo)和 2 個(gè)高級(jí)指標(biāo)。

經(jīng)典指標(biāo)包括準(zhǔn)確性、精確匹配和 F1 分?jǐn)?shù)。

高級(jí)指標(biāo)包括 Factscore 和 ALCE。

? FactScore 是一種評(píng)估長(zhǎng)文本生成的事實(shí)準(zhǔn)確性的高級(jí)指標(biāo)。

? ALCE 則作為評(píng)估 RAG 系統(tǒng)的引用準(zhǔn)確性和召回率的基準(zhǔn)。ALCE 還整合了其他指標(biāo),包括 ROUGE-L、MAUVE、str-em 和 str-hit。

2.2 架構(gòu)和開(kāi)發(fā)指南

RAGLAB 重現(xiàn)了六種已發(fā)表的 RAG 算法,分別是 Naive RAG、RRR、ITER-RETGEN、Self-ASK、Active RAG 和 Self-RAG。這些算法有諸多相似之處,每個(gè)高級(jí)的 RAG 算法本質(zhì)上都是對(duì) Naive RAG 的改進(jìn)。

RAGALB 的設(shè)計(jì)理念源自 HuggingFace Transformer 庫(kù)。用戶(hù)只需從 Transformer 庫(kù)中定義他們的模型,然后就能使用generate()方法進(jìn)行推理。

RAGALB 將每個(gè) RAG 算法實(shí)現(xiàn)為一個(gè)不同的類(lèi)。每個(gè)算法類(lèi)中的兩個(gè)關(guān)鍵方法是init()和infer()。init()?方法用于設(shè)置參數(shù)和加載生成器,而infer()方法實(shí)現(xiàn)算法的推理過(guò)程。

基于這個(gè)設(shè)計(jì)框架,用戶(hù)可以通過(guò)幾個(gè)簡(jiǎn)單步驟開(kāi)發(fā)新算法,如上圖所示:

(1)定義一個(gè)繼承自NaiveRAG的NewMethod()?類(lèi)。(2)通過(guò)重寫(xiě)init()?方法為新算法添加必要的參數(shù)和組件。(3)通過(guò)重寫(xiě)infer()方法,利用框架提供的組件實(shí)現(xiàn)新算法的推理邏輯。

繼承自 NaiveRAG 的算法可以復(fù)用inference()?方法和所有實(shí)用函數(shù)。值得注意的是,inference()?方法已經(jīng)提供了自動(dòng)評(píng)估和交互功能。這種設(shè)計(jì)讓研究人員能夠?qū)W⒂谠O(shè)計(jì)infer()方法來(lái)開(kāi)發(fā)新算法。

2.3 示例腳本

RAGLAB 提供了一個(gè)用戶(hù)友好的界面,允許用戶(hù)僅用 5 行代碼重現(xiàn) RAG 算法以進(jìn)行交互或評(píng)估。

如上圖所示,展示了一個(gè)在交互和評(píng)估模式下重現(xiàn) Self-RAG 算法的示例腳本。

實(shí)現(xiàn)過(guò)程如下:

? (1)get_config()函數(shù)從 YAML 文件讀取參數(shù)并定義 args 對(duì)象。

? (2)根據(jù) args 參數(shù)定義SelfRag_Reproduction類(lèi),為 Self-RAG 算法做好所有設(shè)置。

? (3)調(diào)用第 9 行的inference()方法進(jìn)入交互模式。

? (4)再次調(diào)用第 12 行的inference()方法進(jìn)入評(píng)估模式。

3. 局限性

? 鑒于計(jì)算資源有限,RAGLAB 當(dāng)下僅涵蓋 6 種算法和 10 個(gè)被廣泛運(yùn)用的基準(zhǔn)。然而,仍有必要納入更多算法和數(shù)據(jù)集。

? 不同的檢索器模型和外部知識(shí)數(shù)據(jù)庫(kù)對(duì) RAG 算法的性能有著顯著影響。由于計(jì)算資源受限,僅處理了 2018 年和 2023 年的維基百科。

? 當(dāng)下的研究主要聚焦于提升算法的性能,缺少對(duì)資源消耗和推理延遲的全面評(píng)估。目前,RAGLAB 僅包含 3 個(gè)經(jīng)典指標(biāo)和 2 個(gè)高級(jí)指標(biāo)。

本文轉(zhuǎn)載自??大語(yǔ)言模型論文跟蹤??,作者:HuggingAGI ????

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦