英特爾開源RAG Foundry 框架,可增強多種RAG用例
英特爾實驗室的研究人員開源了RAG Foundry,這是一個專門用于開發、增強大模型RAG框架。
RAG Foundry很高的靈活性和擴展性,支持設計和實驗各種RAG用例,這包括數據選擇、聚合、過濾、檢索、文本處理、文檔排名、少樣本生成、提示設計、微調、推理和模型評估等。
例如,開發人員通過RAG Foundry可以選擇不同的檢索算法和工具,以獲取與問題相關的外部信息,基本上可以實現一站式開發RAG。
開源地址:https://github.com/IntelLabs/RAGFoundry
RAG Foundry框架采用了模塊化設計,主要由數據創建、訓練、推理和性能評測4大塊組成。
數據創建與處理模塊是RAG Foundry的核心, 包括數據集的加載、列的規范化、數據的聚合、信息的檢索、基于模板的提示創建以及各種預處理等。這些流程不僅確保了數據的質量和一致性,也為后續的訓練和推理提供了必要的上下文信息。
在數據加載方面,支持從Hugging Face hub或本地源加載數據集,可以根據需求選擇不同的數據源。在數據加載后,通過選擇器對數據進行過濾、清洗和子集選擇,確保數據集的多樣性和代表性。此外,檢索器集成了來自外部數據庫、工具、庫和流程的信息,這為模型提供了更大的知識庫。
訓練模塊則是使用由數據創建模塊生成的數據集來微調模型,幫助其能夠學習如何更好地利用檢索到的信息來生成準確的答案。
訓練配置允許開發人員指定模型和訓練參數,包括學習率、優化器、批量大小、訓練周期等。還支持使用LoRA技術來增強模型的適應性,這是一種通過在模型的權重矩陣中引入低秩結構來實現模型參數有效更新的方法,不僅能提高了訓練效率,還有助于模型在面對新任務時的快速適應。
此外,訓練模塊還支持使用指令文件,用戶可以在指令文件中添加一些特定的指令或提示,以指導模型的訓練過程。例如,在歷史事件問答任務中,我們可以在指令文件中說明模型需要關注的重點信息,如歷史事件的時間、地點、人物等。
推理模塊是RAG Foundry中用于根據處理后的數據集生成預測的部分。其作用是在訓練好的模型基礎上,對新的輸入數據進行推理,生成相應的預測結果。
例如,當我們輸入文本提示“巴黎奧運會有多少個國家代表團?”,推理模塊會調用訓練好的模型,并根據數據創建模塊提供的相關數據集和提示信息,生成相應的預測結果。
在推理過程中,推理模塊會考慮到模型的計算資源需求,支持對多個輸入數據進行批量推理,以提高處理速度。
評估模塊是用于評估RAG技術和調優,主要功能是加載推理模塊生成的預測結果,并使用一系列指標來評估模型的性能。
在問答任務中,評估模塊可以使用一些常見的評估指標,例如,精確匹配(EM)、F1分數等,來評估模型回答的準確性。
例如,如果模型的回答與正確答案完全一致,那么EM指標就會給予較高的評分;如果模型的回答在一定程度上與正確答案相關,但不完全準確,F1分數會根據相關程度給予相應的評分。