成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RAGLAB:又來一個RAG框架,還是模塊化的

發布于 2024-8-27 12:37
瀏覽
0收藏

1. 背景

檢索增強生成(RAG)借助外部知識來緩解幻覺問題,保障實時知識更新。然而,大家在研究 RAG 算法時面臨兩大主要問題:

? 一方面,許多已發表的成果要么并非開源,要么難以搭建環境,大家不得不耗費大量時間從零開始研發新算法。

? 另一方面,新的 RAG 算法紛紛涌現,比如 ITER-RETGEN、RRR、Self-Ask、Active RAG、Self-RAG 等等。然而,這些 RAG 算法在基本組件和評估方法上并不統一,導致大家難以準確評估改進效果。

雖然現在也有很多新的開發框架支持RAG算法,比如:LlamaIndex、LangChain、Haystack、FastRAG、RALLE、LocalRQA、AutoRAG 和 FlashRAG。

? LlamaIndex、LangChain 和 Haystack 過度封裝,內部運作機制缺乏透明度。

? FastRAG 和 RALLE 提供了輕量且透明的框架,使用戶能夠運用核心組件組裝自己的 RAG 系統。

? AutoRAG 提供了全面的指標,為定制數據挑選最優的 RAG 系統。

? LocalRAG 提供了豐富的模型訓練算法和評估方法。

? FlashRAG 通過重現大量現有算法解決了這一問題。然而,FlashRAG 缺少訓練功能,并且在推理時無法正確對齊生成器,導致各種算法之間的比較有失公平。

為了填補這一空缺,作者推出了 RAGLAB,一個面向研究人員的 RAG 工具包,用于對現有 RAG 算法進行公平比較,并簡化新算法的開發流程。

2. RAGLAB

RAGLAB 的整體架構如上圖所示。

2.1 類和概念

2.1.1 檢索器

RAGLAB 整合了兩個高性能的基于 BERT 的模型,即 Contriever 和 ColBERT。而且,RAGLAB 統一了不同檢索器類的查詢接口,方便用戶在各種檢索器之間無縫切換。

在評估階段,研究人員需要并行對多個 RAG 算法進行基準測試。為了避免反復加載和查詢檢索器模型及知識數據庫會耗費大量時間,RAGLAB 設計了檢索器服務器和客戶端架構,實現對檢索器的高并發訪問。

此外,RAGLAB 還實現了檢索緩存機制。會存儲初始查詢的結果及其檢索到的知識。所以,當使用相同輸入進行查詢時,檢索器會直接返回緩存結果,無需重新計算。

基于 RAGLAB,用戶只需加載一次檢索器模型和知識數據庫,就能在多個并行評估實驗中實現延遲小于 0.1 秒的檢索服務。

2.1.2 語料庫

外部知識數據庫對 RAG 系統的性能有重大影響。

RAGLAB 提供了兩個版本的預處理維基百科語料庫:第一個版本基于 DPR 項目開源的 2018 年維基百科數據;第二個版本利用 FactScore 開源的 2023 年維基百科數據。

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

2.1.3 生成器

生成器是 RAG 系統的核心組件。集成了 Huggingface Transformers 和 VLLM,使得 RAGLAB 能夠兼容眾多開源模型,同時提供穩定高效的推理性能。

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

此外,考慮到用戶可能需要在單個 RAG 算法中同時加載多個生成器,開發了一個 GPU 管理模塊。該模塊能讓用戶通過參數配置在指定的 GPU 上精準分配多個生成器。

除了開源模型,生成器模塊包含OpenaiModel,支持像 OpenAI 這樣的閉源大型語言模型。未來的發展會將支持擴展到包括 Claude、Gemini 和 Azure 在內的其他閉源大型語言模型。

2.1.4 指令實驗室

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

為解決這些問題,RAGLAB 設計了指令實驗室模塊,其中包括三個關鍵組件:系統指令、任務指令和算法指令。允許用戶從 3 個指令池中高效導入和組合所需的提示。此外,用戶可以在配置設置中調整參數,便于使用不同指令進行對比實驗。

2.1.5 訓練器

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

2.1.6 數據集和指標

如上表,RAGLAB 收集了 10 個被廣泛使用的測試數據集,涵蓋 5 個不同的任務。

RAGLAB 提供了 3 個經典指標和 2 個高級指標。

經典指標包括準確性、精確匹配和 F1 分數。

高級指標包括 Factscore 和 ALCE。

? FactScore 是一種評估長文本生成的事實準確性的高級指標。

? ALCE 則作為評估 RAG 系統的引用準確性和召回率的基準。ALCE 還整合了其他指標,包括 ROUGE-L、MAUVE、str-em 和 str-hit。

2.2 架構和開發指南

RAGLAB 重現了六種已發表的 RAG 算法,分別是 Naive RAG、RRR、ITER-RETGEN、Self-ASK、Active RAG 和 Self-RAG。這些算法有諸多相似之處,每個高級的 RAG 算法本質上都是對 Naive RAG 的改進。

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

RAGALB 將每個 RAG 算法實現為一個不同的類。每個算法類中的兩個關鍵方法是init()和infer()。init()?方法用于設置參數和加載生成器,而infer()方法實現算法的推理過程。

基于這個設計框架,用戶可以通過幾個簡單步驟開發新算法,如上圖所示:

(1)定義一個繼承自NaiveRAG的NewMethod()?類。(2)通過重寫init()?方法為新算法添加必要的參數和組件。(3)通過重寫infer()方法,利用框架提供的組件實現新算法的推理邏輯。

繼承自 NaiveRAG 的算法可以復用inference()?方法和所有實用函數。值得注意的是,inference()?方法已經提供了自動評估和交互功能。這種設計讓研究人員能夠專注于設計infer()方法來開發新算法。

2.3 示例腳本

RAGLAB 提供了一個用戶友好的界面,允許用戶僅用 5 行代碼重現 RAG 算法以進行交互或評估。

如上圖所示,展示了一個在交互和評估模式下重現 Self-RAG 算法的示例腳本。

實現過程如下:

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

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

? (3)調用第 9 行的inference()方法進入交互模式。

? (4)再次調用第 12 行的inference()方法進入評估模式。

3. 局限性

? 鑒于計算資源有限,RAGLAB 當下僅涵蓋 6 種算法和 10 個被廣泛運用的基準。然而,仍有必要納入更多算法和數據集。

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

? 當下的研究主要聚焦于提升算法的性能,缺少對資源消耗和推理延遲的全面評估。目前,RAGLAB 僅包含 3 個經典指標和 2 個高級指標。

本文轉載自??大語言模型論文跟蹤??,作者:HuggingAGI ????

收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 九九成人 | 亚洲h在线观看 | 免费激情网站 | 国产成人一区二区三区精 | 成人av免费在线观看 | 精品欧美乱码久久久久久 | 亚洲巨乳自拍在线视频 | 欧美日日 | 日韩精品一区二区三区 | 99热在这里只有精品 | 久久成人一区二区三区 | 国产亚洲区 | 久久免费看 | 亚洲日本免费 | 日韩精品一区二区三区中文在线 | 超碰天天| 天啪 | 久久亚洲天堂 | 在线观看免费av网 | 亚洲www.| 一区二区福利视频 | 午夜爽爽男女免费观看hd | 亚洲精品中文字幕 | 日韩欧美精品一区 | 成人 在线| 久久曰视频 | 另类 综合 日韩 欧美 亚洲 | 国产成人精品久久二区二区91 | 亚洲图片视频一区 | 亚洲国产成人精品女人久久久野战 | 亚洲一区二区免费 | 中文字幕亚洲区 | 久色视频在线观看 | 91精品国产一区二区三区蜜臀 | 成人av一区 | 国产精品免费视频一区 | 国产一级大片 | 久久中文字幕一区 | 天堂一区二区三区 | 久久久久久国产精品免费免费 | 精品久久久精品 |