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