当前位置: 首页 > news >正文

Ragas 自动化评估代码示例

import os from datasets import Dataset from langchain_openai import ChatOpenAI, OpenAIEmbeddings from ragas import evaluate from ragas.metrics import ( context_recall, faithfulness, answer_relevancy, context_precision ) # ========================== # 1. 配置 LLM 和 Embedding模型 # ========================== # 注意:请替换为你自己的 API Key 和 Base URL (如果是本地模型或中转站) os.environ["OPENAI_API_KEY"] = "your-api-key-here" # 如果使用本地模型或特定中转站,取消下面注释并配置 # os.environ["OPENAI_BASE_URL"] = "http://localhost:11434/v1" # 初始化用于评估的 LLM (裁判) # 建议使用能力较强的模型如 gpt-4o, gpt-4-turbo 或 qwen-max 等 evaluator_llm = ChatOpenAI(model="gpt-4o", temperature=0) # 初始化 Embedding 模型 (用于计算答案相关性等需要向量比对的指标) embeddings = OpenAIEmbeddings(model="text-embedding-3-small") # ========================== # 2. 准备测试数据 # ========================== # 数据格式必须包含: question, answer, contexts, ground_truths # contexts 是列表形式,因为检索可能返回多个文档片段 data_samples = { 'question': [ '故宫位于哪个城市?', 'Python中列表和元组的主要区别是什么?' ], 'answer': [ '故宫位于中国北京市中心。', '列表是可变的,而元组是不可变的。此外,列表使用方括号,元组使用圆括号。' ], 'contexts': [ ['故宫,旧称紫禁城,位于中国北京市中心,是中明清两代的皇家宫殿。'], ['在Python中,列表(list)是可变序列,通常用于存储同质集合;元组(tuple)是不可变序列。列表用[]定义,元组用()定义。'] ], 'ground_truths': [ ['故宫位于北京。'], ['列表可变,元组不可变。'] ] } # 转换为 Ragas 需要的 Dataset 格式 dataset = Dataset.from_dict(data_samples) # ========================== # 3. 执行评估 # ========================== print("开始评估 RAG 系统性能...") result = evaluate( dataset=dataset, metrics=[ context_recall, # 检索召回率:是否找全了关键信息 faithfulness, # 忠实度:回答是否基于上下文,有无幻觉 answer_relevancy, # 答案相关性:回答是否切题 context_precision # 上下文精度:检索到的内容是否精准且排序合理 ], llm=evaluator_llm, # 指定裁判 LLM embeddings=embeddings # 指定 Embedding 模型 ) # ========================== # 4. 输出结果 # ========================== # 转换为 Pandas DataFrame 方便查看 df = result.to_pandas() print("\n--- 评估详细得分 ---") print(df) # 打印平均分 print("\n--- 平均指标得分 ---") for metric_name in result.scores.keys(): avg_score = sum(result.scores[metric_name]) / len(result.scores[metric_name]) print(f"{metric_name}: {avg_score:.4f}")

开始评估 RAG 系统性能...
Evaluating: 100%|██████████| 2/2 [00:05<00:00, 2.50s/it]

--- 评估详细得分 ---
question ... context_precision
0 故宫位于哪个城市? ... 1.000000
1 Python中列表和元组的主要区别是什么? ... 1.000000

[2 rows x 6 columns]

--- 平均指标得分 ---
context_recall: 1.0000
faithfulness: 1.0000
answer_relevancy: 0.9850
context_precision: 1.0000

http://www.jsqmd.com/news/1144872/

相关文章:

  • nVisual:基于历史趋势自动预测,扩容规划数据支撑率达90%
  • Translumo实战指南:Windows平台实时屏幕翻译高效方案
  • 为什么很多降重越改越高?如何选能同步降低查重率与 AIGC 标记的 AI 工具?
  • 【没想到我国的科技开发已经发展到这个地步】Super-LIO 项目分析与 Mid-360 无人机移植指南
  • BSON(二进制 JSON)
  • 【8】补充与拓展:Langchain的联网搜索Agent,使用Tavily工具
  • 穿透物理边界,重构时空秩序:基于纯视觉的营房全景透视与无感智控
  • Java集合扩容机制解析:ArrayList与HashMap底层原理及性能差异
  • 2026降AIGC革命:AI率92%暴降至5%!实测10款AI智能降重工具!10款工具深度解析!
  • 联合动力泰国工厂批量交付电驱系统,商用车业务占比约两成
  • 程序员就业:接口、数据和评估怎么串
  • Sentinel 流量治理实战:熔断降级限流 + Nacos 持久化
  • PLC控制气缸与电磁阀:从基础原理到多设备协同实战
  • 卡美德生物科普:CD244(2B4)在干细胞培养中的双向调控机制与应用
  • Orion与Shilpa Medicare深化合作,共同开发并供应欧洲市场纳武利尤单抗生物类似药
  • Dromara Sureness:把 REST API 鉴权这事做薄做快
  • Java随笔-GC收集器工作机制
  • 研究生招生专业目录 API 接口
  • 2026实测盘点:16款降AI率工具测评,这款让导师都夸“原创性强”!
  • OmenSuperHub终极指南:解锁惠普暗影精灵笔记本的完整性能控制权
  • Linux 神器 tmux 超详细入门教程:会话持久化 + 多窗口管理一网打尽
  • Kani:Rust开源模型检查器,为安全属性提供正确性保证并发现未知漏洞!
  • PyTorch 2.0 静态量化实战:ResNet-18 模型大小压缩 75%,推理速度提升 3 倍
  • LLM大模型 - 大模型及其训练方式
  • React Loadable:给 React 应用做代码分割的老牌方案
  • ResNet-50 PyTorch 迁移学习实战:CIFAR-10 数据集 5 分钟达到 92% 准确率
  • 为知笔记导出到本地 Markdown,老笔记也能重新用起来
  • C语言操作符和输入输出函数
  • HTML打包EXE多实例共享进程:多开更快还能共享登录
  • 从一条用户评论到Browser Bridge的新功能-Tab隔离