英特尔实验室的研究人员开源了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分数会根据相关程度给予相应的评分。