使用 Zeno 可视化 Ragas 评估结果:RAG 评测指标的上传与交互式探索实战指南
发布时间:2026/9/21 17:14:57 锦皓数字建站

使用 Zeno 可视化 Ragas 评估结果RAG 评测指标的上传与交互式探索实战指南【免费下载链接】ragasSupercharge Your LLM Application Evaluations 项目地址: https://gitcode.com/gh_mirrors/ra/ragas本指南讲解如何把 Ragas 的 RAG 评估结果context_precision、faithfulness、answer_relevancy、context_recall 等指标得分一键上传到 Zeno 评估平台通过自定义视图与指标面板进行可视化、探索与多模型对比。读完本文你将掌握从运行 Ragas 评估、导出 DataFrame到在 Zeno 上创建项目、定义 RAG 视图、上传数据集与系统输出的完整工作流从而把枯燥的指标数字变成可交互、可下钻、可分享的评估报告。为什么要把 Ragas 结果可视化到 ZenoRagas 的evaluate()会为每个样本逐条计算多项指标得分最终返回一个EvaluationResult对象。直接打印或查看 DataFrame 只能看到一行行数字很难回答这样几个问题哪类问题如单跳事实型、多跳推理型得分普遍偏低检索上下文与生成答案之间存在什么样的对应关系更换模型或提示词后哪些样本的分数发生了变化、变化方向如何Zeno 正是为了解决这类探索式评估问题而设计它支持把原始数据问题、上下文、标准答案、系统输出模型回答和指标得分一起上传并在浏览器中提供按列排序、过滤、分组、逐样本下钻、跨系统对比等能力。搭配 Ragas 的评估流程可以形成评测 → 上传 → 探索 → 定位问题 → 迭代 → 再对比的闭环。需要说明的是zeno-client属于第三方生态包本仓库源码src/ragas/中并不包含 Zeno 的集成代码两者的衔接完全通过标准的 pandas DataFrame 完成——这正是本文工作流的核心枢纽。第一步安装与准备安装 zeno-client在已安装ragas的 Python 环境中执行pip install zeno-client注册账号并获取 API Key在 Zeno Hub 平台注册账号在账号设置页面生成一个 API Key后续所有上传操作都需要该 Key建议通过环境变量注入避免硬编码到代码里。第二步运行 Ragas 评估并导出结果导入所需模块import os import pandas as pd from datasets import load_dataset from zeno_client import ZenoClient, ZenoMetric from ragas import evaluate from ragas.metrics import ( answer_relevancy, context_precision, context_recall, faithfulness, )配置 API Key# Set API keys os.environ[OPENAI_API_KEY] your-openai-api-key os.environ[ZENO_API_KEY] your-zeno-api-keyOPENAI_API_KEY供 Ragas 评估时使用的 LLM如 faithfulness、answer_relevancy 等指标需要 LLM 打分调用ZENO_API_KEY供ZenoClient上传数据使用。加载数据集并执行评估沿用 Getting Started 指南见 docs/getstarted/evals.md的评估流程使用 FIQA 金融问答数据集的ragas_eval子集fiqa_eval load_dataset(vibrantlabsai/fiqa, ragas_eval) result evaluate( fiqa_eval[baseline], metrics[ context_precision, faithfulness, answer_relevancy, context_recall, ], ) df result.to_pandas() df.head()这里选择的四个指标分别覆盖 RAG 链路的不同环节context_precision检索到的上下文中相关信息的占比衡量检索精度faithfulness生成答案与检索上下文之间的事实一致性衡量生成忠实度answer_relevancy答案对问题的相关程度context_recall标准答案中的信息被检索上下文覆盖的比例衡量召回。to_pandas()的底层原理从源码看evaluate()定义见 src/ragas/evaluation.py返回的EvaluationResult内部同时保存了scores每条样本的指标得分列表和dataset原始评估数据集。EvaluationResult.to_pandas()实现见 src/ragas/dataset_schema.py的工作方式如下将scores转为scores_df调用dataset.to_pandas()将原始样本转为dataset_df底层通过model_dump()展开SingleTurnSample等数据模型见 src/ragas/dataset.py用pd.concat([dataset_df, scores_df], axis1)按行横向拼接。因此df中每行既包含原始样本字段question、contexts、answer、ground_truth 等又并列着四个指标得分列。Zeno 上传所需的全部信息都来自这个 DataFrame。SingleTurnSample的字段定义可参见 src/ragas/dataset_schema.py其中user_input、retrieved_contexts、response、reference与 Zeno 视图中的 question、texts、answer、ground_truth 一一对应。第三步在 Zeno 上创建项目拿到df后先在 Zeno 上创建一个项目并用自定义 RAG 视图声明每条样本如何渲染同时声明需要按哪些指标列进行统计client ZenoClient(os.environ[ZENO_API_KEY]) project client.create_project( nameRagas FICA eval, descriptionEvaluation of RAG model using Ragas on the FICA dataset, view{ data: { type: vstack, keys: { question: {type: markdown}, texts: { type: list, elements: {type: markdown}, border: True, pad: True, }, }, }, label: { type: markdown, }, output: { type: vstack, keys: { answer: {type: markdown}, ground_truth: { type: list, elements: {type: markdown}, border: True, pad: True, }, }, }, size: large, }, metrics[ ZenoMetric( namecontext_precision, typemean, columns[context_precision] ), ZenoMetric(namefaithfulness, typemean, columns[faithfulness]), ZenoMetric(nameanswer_relevancy, typemean, columns[answer_relevancy]), ZenoMetric(namecontext_recall, typemean, columns[context_recall]), ], )要点说明view声明了 Zeno 界面上数据与输出两栏的渲染结构问题用 markdown 展示检索上下文以带边框的 markdown 列表vstack纵向堆叠展示标准答案和模型回答同样用 markdown/列表呈现metrics中的每个ZenoMetric对应一个指标列typemean表示在项目面板上以均值聚合该列columns指向df中对应的列名项目名称与描述会显示在 Zeno Hub 的项目页面上建议命名包含数据集与评测目标便于后续检索与分享。第四步上传基础数据集项目创建后先把数据 标准答案作为基础数据集上传。这里的关键是从df重组出 Zeno 期望的三列结构data_df pd.DataFrame( { data: df.apply( lambda x: {question: x[question], texts: list(x[contexts])}, axis1 ), label: df[ground_truth].apply(lambda x: \n.join(x)), } ) data_df[id] data_df.index project.upload_dataset( data_df, id_columnid, data_columndata, label_columnlabel )data列是结构化对象包含question与texts检索上下文列表与项目view中声明的data渲染结构对应label列存放标准答案ground_truth多条时用换行连接id列是样本唯一标识后续上传系统输出时必须用相同的id才能对齐到对应样本。第五步上传系统输出与指标得分最后把模型输出answer与四项 Ragas 指标得分作为一个系统上传。你可以为每个待对比的模型/版本重复执行这一步从而在同一个项目里横向对比多个系统的表现output_df df[ [ context_precision, faithfulness, answer_relevancy, context_recall, ] ].copy() output_df[output] df.apply( lambda x: {answer: x[answer], ground_truth: list(x[ground_truth])}, axis1 ) output_df[id] output_df.index project.upload_system( output_df, nameBase System, id_columnid, output_columnoutput )output_df保留了四个指标列Zeno 会依据项目中声明的ZenoMetric对它们进行统计展示output列存放模型生成的答案与view中的output渲染结构对应nameBase System是该系统的展示名后续上传其他系统如调优后的提示词、换用其他 LLM时使用不同名称即可并排对比id_column与数据集上传时保持一致保证输出与样本正确匹配。完整工作流回顾与实战建议整个流程可以归纳为五步评测用ragas.evaluate()跑出四项 RAG 指标result.to_pandas()得到同时含原始字段与得分列的 DataFrame建项ZenoClient.create_project()声明自定义 RAG 视图与指标聚合方式传数据upload_dataset()上传问题、检索上下文与标准答案传系统upload_system()上传模型回答与指标得分对比迭代对每个候选系统重复第 4 步在 Zeno 中下钻分析。实战中值得注意的几点多系统对比迭代提示词、更换 LLM 或调整检索策略后用相同的id与指标列再跑一轮evaluate()并upload_system()即可在 Zeno 中直接看到各系统在同一批样本上的得分差异指标列必须与df列名严格一致ZenoMetric(columns[...])与upload_system的 DataFrame 列名、view中的字段名三处需要对齐否则数据无法正确渲染或统计逐样本下钻Zeno 中点击任一数据点即可同时看到问题、检索上下文、模型回答与标准答案非常适合定位 faithfulness 或 context_precision 偏低的失败样本反哺数据清洗与提示词优化。深入阅读评估入口与返回类型src/ragas/evaluation.pyEvaluationResult.to_pandas()拼接实现src/ragas/dataset_schema.pySingleTurnSample样本字段定义src/ragas/dataset_schema.py四个指标在ragas.metrics中的导出位置src/ragas/metrics/init.pyGetting Started 评估入门docs/getstarted/evals.md【免费下载链接】ragasSupercharge Your LLM Application Evaluations 项目地址: https://gitcode.com/gh_mirrors/ra/ragas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。