微信扫码
添加专属顾问
我要投稿
本周的文章详细记录怎么从0到1搭建起一个分布式RAG实验框架(作者给它的框架起了个相当有吸引力的名字:DREAM,Distributed RAG Experimentation Framework的缩写,看起来稍微有点儿牵强,但是无伤大雅)。原PO链接小瑞放在文末了,有需求的小伙伴自取哦~
DREAM是一个包含了Kubernetes原生架构和示例代码的框架,用于以分布式方式执行RAG实验、评估和跟踪。架构图如下:
该框架包含如下组件:
为了便于阅读,所有组件的相关地址,都放在文末的References部分了,请移步自取~
Ray:用于Kubernetes上的分布式计算,包括使用Ray Tune的实验和使用Ray作业的其他分布式任务
LlamaIndex:作为处理非结构化数据和执行高级RAG技术的框架
ragas:用于生成合成数据生成和进行LLM辅助(LLM-Assisted)评估
MinIO:用于存放非结构化数据、黄金数据集以及MLFlow工件
MLflow:作为实验跟踪器(PostgreSQL作为辅助数据库,MinIO用于存储)
Project Jupyter:作为针对Ray集群执行交互式实验的笔记本
Kubernetes:用作容器编排器
ArgoCD:用于将工具部署到Kubernetes集群上,并使用GitOps维护集群的状态
关于各组件的详细安装指导,请阅读:
https://github.com/aishwaryaprabhat/goku/blob/main/docs/installation_guide.md
详细步骤记录在此notebook中:
https://github.com/aishwaryaprabhat/goku/blob/main/goku/dream/1_Unstructued_Data_Preparation.ipynb
将如下链接中的PDF下载到本地:
https://github.com/AI-Maker-Space/DataRepository
然后使用boto3将这些PDF推送到MinIO。
使用下述链接中的Jypyter笔记本作为Ray驱动器,然后用Ray客户端来提交用于分布式创建黄金数据集的Ray作业:
https://github.com/aishwaryaprabhat/goku/blob/main/goku/dream/2_Distributed_Golden_Dataset_Creation.ipynb
每一个Ray任务上传至多3个PDF文件(从MinIO中),然后使用ragas框架的TestsetGenerator来生成合成测试数据。每个任务会返回一个包含合成数据的Pandas数据框(Dataframe)。
Ray驱动器(即上述Jypyter笔记本)会把返回的数据框合并起来,并将合并后的数据框转换为CSV文件,然后将CSV文件转储到MinIO。
流程示意图
本次使用的示例代码中使用了:
3种RAG方法(都是LlamaIndex的原生RAG方法):chunks with overlap、sentence window retrieval和automerging retrieval)
两个LLM:gpt-3.5-turbo和gpt-4
两个Embedding模型:text-embedding-3-small和text-embedding-3-large
评估时,使用了ragas 框架提供的一系列指标,包括 (忠实度)、(答案相关性)、(上下文精度)、(上下文召回率)、(答案正确性)和(答案相似度)。
把如下链接中的Jupyter笔记本作为Ray驱动器,使用Ray客户端来提交Ray Tune作业:
https://github.com/aishwaryaprabhat/goku/blob/main/goku/dream/3_Distributed_RAG_Experimentation_Evaluation.ipynb
调用Ray Tune遍历参数搜索空间的代码
该分布式实验和评估的核心是函数,它将所有辅助函数粘合在一起,从而达到运行主存储过程的目的。
函数的代码。
由于三种RAG方法的结构可能不同,在函数内部对它们进行参数化需要做一个工作:将RAG方法的Pipeline结构化在一个名为的辅助函数中,并使用字符串标识符来选择Pipeline。返回的输出是一个对象。
代码
Embedding模型和LLM的处理方法类似,我们使用字符串来识别预期的模型,并在函数内部调用辅助函数来初始化这些模型。
用于初始化模型的辅助函数的代码
当获得了对象之后,函数将调用辅助函数,代码非常简单。它使用根据黄金数据集推导出上下文和答案,然后使用ragas来评估计算指标。返回每个指标的得分字典,然后使用记录。
函数的代码
最后,我们利用MLflow强大的实验跟踪功能记录实验结果,与黄金数据集建立联系,并可视化实验结果。以下是一系列屏幕截图:
把实验结果记录到MLFlow的代码
实验的表格视图
该平行坐标图展示了分布式RAG实验得到的不同组合及其在各类评估指标上的性能表现
另一个实验的表格视图
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-02-01
2025-01-01
2024-08-13
2025-02-04
2024-07-25
2024-04-25
2024-06-13
2024-09-23
2024-04-26
2024-08-21
2025-03-18
2025-03-18
2025-03-18
2025-03-18
2025-03-18
2025-03-18
2025-03-17
2025-03-17