使用 Zeno 可视化 Ragas 评估结果:RAG 评测指标的上传与交互式探索实战指南
使用 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),仅供参考

相关新闻

Prisma 入门实战:使用 CLI 从零为数据库生成可调用的 GraphQL API

Prisma 入门实战:使用 CLI 从零为数据库生成可调用的 GraphQL API

后端数据库GraphQL 【免费下载链接】prisma1 💾 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL & MongoDB) [deprecated] 项目地址: https://gitcode.com/gh_mirrors/pr/prisma1 点击查看 免费下载 本篇技术指南以 Prisma 1…

2026/9/21 17:14:54 阅读更多 →
Handsontable 时间单元格类型(Time Cell Type)完整指南:基于 Intl.DateTimeFormat 的时间格式化、校验与编辑

Handsontable 时间单元格类型(Time Cell Type)完整指南:基于 Intl.DateTimeFormat 的时间格式化、校验与编辑

Handsontable 时间单元格类型(Time Cell Type)完整指南:基于 Intl.DateTimeFormat 的时间格式化、校验与编辑 【免费下载链接】handsontable JavaScript Data Grid / Data Table with a Spreadsheet Look & Feel. Works with React, Angu…

2026/9/21 17:14:54 阅读更多 →
SkyWalking OAP 动态配置接入 Nacos 2.x 完全指南:配置项、存储模型与源码解析

SkyWalking OAP 动态配置接入 Nacos 2.x 完全指南:配置项、存储模型与源码解析

可观测性APM链路追踪指标监控日志分析微服务 【免费下载链接】skywalking APM, Application Performance Monitoring System 项目地址: https://gitcode.com/gh_mirrors/sk/skywalking 点击查看 免费下载 Nacos 2.x 可以作为 SkyWalking OAP 的动态配置中心&#x…

2026/9/21 17:14:54 阅读更多 →

最新新闻

你是我生命的一首歌性能优化

你是我生命的一首歌性能优化

5个坑让你手写实现音频指纹:版本升级API全变? 上周给一个老项目升级依赖,原本好好的音频处理模块直接崩了。报错日志刷屏,核心问题就一个: 版本升级后 API 全变了 。 那种老接口 process_audio…

2026/9/21 17:49:27 阅读更多 →
搞定ExcelH性能坑 3招提升最佳实践

搞定ExcelH性能坑 3招提升最佳实践

搞定ExcelH性能坑 3招提升最佳实践 刚学会几行代码,打开编辑器脑子就懵?别慌,这就是典型的“语法会写,项目搭不起”。很多开发者卡在从Demo到生产的路上,明明代码能跑,一上量就卡死。这时候光背语法没用,得看 最佳实践…

2026/9/21 17:49:27 阅读更多 →
56888避坑指南:源码解析助你破解API变更难题

56888避坑指南:源码解析助你破解API变更难题

56888避坑指南:源码解析助你破解API变更难题 版本升级后 API 全变了,代码直接报红,连编译都过不了。这种痛感在开发圈太常见了,尤其是当依赖库从 1.x 升级到…

2026/9/21 17:49:27 阅读更多 →
5个步骤吃透报表工具源码解析,解决项目搭建难题

5个步骤吃透报表工具源码解析,解决项目搭建难题

5个步骤吃透报表工具源码解析,解决项目搭建难题 刚学完 Python 或 Java 语法,看着满屏的 import 和 class…

2026/9/21 17:49:27 阅读更多 →
面试被问懵?3个SEO在线优化工具对比,新手避坑指南

面试被问懵?3个SEO在线优化工具对比,新手避坑指南

面试被问懵?3个SEO在线优化工具对比,新手避坑指南 面试官问:“你这个站为什么收录慢?怎么优化的?”你支支吾吾答不上来,心里直打鼓。别慌,这不是你一个人的问题。很多新手在搞 SEO在线优化…

2026/9/21 17:49:27 阅读更多 →
wow收获节性能优化实战:3个技巧让项目提速50%附完整示例

wow收获节性能优化实战:3个技巧让项目提速50%附完整示例

wow收获节性能优化实战:3个技巧让项目提速50%附完整示例 看了一堆教程还是不会写项目?别慌,问题不在你智商,而在你缺的是一套能跑通的 完整示例…

2026/9/21 17:48:27 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →