如何使用Label Studio、OpenAI和Ragas构建与评估RAG应用

在本教程中,我们将指导您完成结合使用Label Studio与Ragas(检索增强生成答案评分)和GPT-4来构建优化问答应用程序的全过程。如果您想了解更多关于RAG和RAG评估的内容,请查看我们的文章Key Considerations in Evaluating RAG-Based Systems。
为了让您快速上手,我们实现了一个使用RAG与Label Studio的示例,您可以在我们的label-studio-ml-backend代码库中找到它。
让我们来看看!
先决条件
在开始之前,请确保您已具备以下条件:
- Label Studio: 已安装并准备就绪。
- GPT-4 API访问权限: 可访问OpenAI的GPT-4 API。
- Python 3.8+:确保已安装Python以运行Label Studio。
安装说明
如果尚未安装,请使用以下命令安装Label Studio:
pip install label-studio
确保您已准备好GPT-4的API密钥——在接下来的步骤中您将需要它。
第一步:准备您的语料库
要构建一个RAG应用,你需要准备一个文档语料库,系统将利用这些文档来回答问题。这可以是与你领域相关的任何文档集合。
以下是入门指南:
- 收集文档或其他知识库资源:汇总所有您想用作知识库的文档。这些可以是Markdown文件、PDF或其他任何格式。
- Load documents to be labeled into Label Studio:
- 在Label Studio中创建一个新项目。
- 将需要标注的文档上传至项目。如果文档是markdown格式,可以通过.md筛选以专注于相关文件。
- Set up your labeling interface:
- 设置您的项目标注界面。我们提供了一个用于Ragas评估的示例此处,但您可以根据具体需求自由定制。
- Configure ML backend: Set up Label Studio to use an ML backend for processing. This backend will use GPT-4 to generate answers based on the context provided by your documents. We recommend starting with our example ml-backend integration, linked before the prerequisite steps.
- 在项目设置中,转到模型标签页。
- 通过提供您的API密钥并设置模型参数(包括GPT-4的端点),将您的GPT-4模型附加到项目中。
- 启用交互式预标注功能。该特性允许您在系统生成答案时动态优化提示词,从而确保更精准的响应。

步骤2:创建并配置您的RAG应用
首先,您需要设置一个RAG工作流程。在Label Studio中,配置您的项目以启用交互式预标注功能。这对于在LLM生成答案时实时优化提示词至关重要。
定义一个工作流程,将问题连同语料库中的上下文传递给GPT-4。上下文通过从语料库中选择相关文档生成,这些文档将被嵌入并作为输入传递给GPT-4。
接下来,使用嵌入模型(例如OpenAI的嵌入API)将您的文档和问题转换为向量。利用向量数据库实现相似性搜索,基于余弦相似度查找最相关的文档。将这些相关文档作为上下文与问题一起传递给GPT-4。
GPT-4将根据提供的上下文生成答案。请在Label Studio中审核该答案。您可以通过添加具体指令(例如"包含macOS的示例")来优化提示词,以提高输出质量。
在我们的示例仓库中,我们在model.py
文件的第32行iife_rag
函数中实现了RAG系统。在那里,我们加载知识库文档,创建一个向量存储作为知识库的检索器,并将来自知识库的知识注入提示中以提示我们的LLM。当进行预测时,我们的系统会在_predict_single_task
函数的第256行使用这个功能。请注意,我们的示例还设置为自动用返回的响应填充您的Label Studio任务页面,包括来自LLM的响应和下面提到的评估,这些评估都是基于文本和Ragas指标的。
步骤3:使用Ragas和文本证据评估答案。
确保您的设置已配置为使用Ragas指标,该指标将根据源文档使用忠实度和答案相关性等指标评估答案。如果您使用的是链接仓库中ReadMe.md
提供的示例标注配置,那么您已经准备就绪!我们在model.py
第93行的get_ragas_evaluation
函数中实现了Ragas评估。我们在model.py
第110行的get_textual_evaluation
函数中实现了文本评估。
以下是具体操作步骤:
运行评估
对于每个问题,Ragas将自动评估答案,检查:
- 忠实度:与提供文档的一致性。
- 回答相关性:与所提问题的相关程度。

解读Ragas指标
Ragas提供0到1之间的评分(如果按比例缩放则为0-100)。利用这些评分来识别生成的答案可能需要改进的地方。Ragas还提供文本评估,帮助精确定位问题,例如未经证实的事实或不相关的细节。
使用文本证据
文本证据使我们能够通过让另一个LLM指向原始答案中的主张在提供的知识库中的位置,来“事实核查”我们的LLM输出。虽然审查这个过程是手动的,但对于那些可能获得较低Ragas分数或你想知道LLM为何如此回答的答案来说,这是一个很好的后续步骤。
在Label Studio中处理任务评估
在生成答案后,Label Studio允许您查看嵌入模型使用的来源——这对验证准确性至关重要。如果您需要处理多个问题,建议在批量处理期间禁用Ragas指标以加快评估速度。
步骤4:迭代改进
根据Ragas评估结果,接下来您将在Label Studio中优化提示词。例如,如果低可信度分数是由于语料库中信息缺失导致的,请更新文档或相应调整提示词。
当您对提示词和回答感到满意后,可以切换到批量处理模式以提高效率。Label Studio支持批量上传问题,同时仍保留Ragas指标以确保质量。
利用Ragas的反馈来更新您的语料库,优化嵌入模型,并持续改进提示词。这个迭代过程将帮助您逐步构建一个更强大的问答系统。
步骤5:优化性能
为了优化性能,请考虑您所使用的硬件。对于较长或更复杂的回答,使用强大的本地机器或升级到GPT-4 API专业版可以显著提升速度和整体性能。但请注意,较长的回答可能会降低Ragas评估的速度。关键在于在回答的复杂性和评估所需时间之间取得平衡。
在优化应用程序时,使用Ragas指标检测文档中的不一致之处,例如相互冲突的软件需求。发现这些差异后,请更新语料库或调整提示词,以保持生成答案的一致性和准确性。
在优化提示词时,要力求具体明确。例如,如果您正在编写安装说明,可以指导模型特别包含针对macOS系统的步骤。进行此类调整后,请检查它们对"忠实度"和"相关性"评分的影响,以确保这些改动能提高输出的准确性和相关度。
步骤6:部署与监控
在开发和全面测试您的RAG应用程序后,是时候将其部署到组织内部了。确保所有组件——Label Studio、GPT-4和Ragas——都能无缝集成到您的生产环境中。
部署完成后,请使用Ragas指标密切监控应用程序的性能。定期更新语料库并优化提示词,以确保系统与新信息和不断变化的用户需求保持一致。
鼓励用户对生成的答案提供反馈,并利用这些反馈持续优化和完善您的RAG应用,以实现最佳性能。
想了解更多?如果您想深入了解Label Studio(包括微调聊天机器人和大型语言模型的能力),我们专业的人工团队很乐意与您交流。立即联系我们。