news 2026/7/2 3:40:30

ragas官方文档中文版(四十)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ragas官方文档中文版(四十)

操作指南

本节中的每个指南都针对您作为有经验的用户在使用 Ragas 时可能遇到的实际问题提供了专注的解决方案。这些指南设计得简洁直接,为您的问题提供快速解决方案。我们假设您对 Ragas 的概念有基本了解且能够熟练使用。如果不是,请先浏览 快速入门 (Get Started)部分。

DSPy 优化器:高级提示词优化

DSPyOptimizer 使用 DSPy 的 MIPROv2 算法为 Ragas 指标提供最先进的提示词优化。它结合了指令优化和示例优化,能够找到比简单进化方法更好的提示词。

概述

DSPyOptimizer 使用 MIPROv2(带排序结果的多提示词指令提议)通过以下方式优化指标提示词:

  • 指令优化 :生成并测试多个提示词变体
  • 示例优化 :自动选择有效的少样本示例
  • 组合搜索 :同时探索指令和示例空间

这通常会产生比简单的 GeneticOptimizer 更好的结果,尤其是当您拥有高质量的标注数据时。

安装

DSPy 是一个可选依赖项。使用以下命令安装:

# Using uv (recommended)uv add"ragas[dspy]"# Using pippip install"ragas[dspy]"

基本用法

前提条件

您需要:

  1. 标注数据集 :指标的真实分数(ground truth)
  2. 带提示词的指标 :使用 PydanticPrompt 的指标(大多数 Ragas 指标)
  3. LLM :用于优化的 LLM(建议使用 gpt-4o-mini 以节省成本)
快速开始
fromopenaiimportOpenAIfromragas.llmsimportllm_factoryfromragas.metrics.collectionsimportFaithfulnessfromragas.optimizersimportDSPyOptimizerfromragas.configimportInstructionConfig# Setup LLM for optimizationclient=OpenAI()llm=llm_factory("gpt-4o-mini",client=client)# Initialize metricmetric=Faithfulness(llm=llm)# Create annotated dataset (see below for format)dataset=create_annotated_dataset()# Configure DSPy optimizerconfig=InstructionConfig(llm=llm,optimizer=DSPyOptimizer(num_candidates=10,# Try 10 prompt variationsmax_bootstrapped_demos=5,# Generate up to 5 examplesmax_labeled_demos=5,# Use up to 5 human annotations))# Optimize the metric's promptsmetric.optimize_prompts(dataset,config)# Save optimized prompts for reusemetric.save_prompts("optimized_faithfulness.json")
标注数据集格式

DSPy 优化器需要真实标注(ground truth):

fromragas.dataset_schemaimport(PromptAnnotation,SampleAnnotation,SingleMetricAnnotation)# Create prompt annotationsprompt_annotation=PromptAnnotation(prompt_input={"user_input":"...","response":"..."},prompt_output={"score":0.9},# Actual metric outputedited_output=None,# Or corrected output if needed)# Create sample with annotationssample=SampleAnnotation(metric_input={"user_input":"...","response":"..."},metric_output=0.9,# Ground truth scoreprompts={"faithfulness_prompt":prompt_annotation},is_accepted=True,# Whether to use in optimization)# Create datasetdataset=SingleMetricAnnotation(name="faithfulness",samples=[sample,...]# Need 20-50+ samples for best results)

高级配置

优化参数

控制 MIPROv2 行为:

optimizer=DSPyOptimizer(num_candidates=20,# More candidates = better prompts, higher costmax_bootstrapped_demos=10,# Auto-generated few-shot examplesmax_labeled_demos=10,# Human-annotated examples to useinit_temperature=1.0,# Exploration temperature (0.0-2.0))

参数指南

参数默认值描述成本影响
num_candidates10要尝试的提示词变体数量高 - 线性扩展
max_bootstrapped_demos5自动生成的示例数量中 - 增加 LLM 调用
max_labeled_demos5使用的人工标注数量低 - 使用现有数据
init_temperature1.0探索随机性无 - 仅算法层面
成本优化

MIPROv2 优化的成本可能很高。可通过以下方式降低成本:

# Budget-conscious configurationbudget_optimizer=DSPyOptimizer(num_candidates=5,# Fewer candidatesmax_bootstrapped_demos=2,# Fewer generated examplesmax_labeled_demos=3,# More reliance on annotationsinit_temperature=0.5,# Less exploration)# Use cheaper LLM for optimizationcheap_llm=llm_factory("gpt-4o-mini",client=client)config=InstructionConfig(llm=cheap_llm,optimizer=budget_optimizer)

成本估算

  • 每个候选提示词约 10-50 次 LLM 调用
  • 每个自举示例约 5-10 次调用
  • 总计 : num_candidates * 30 + max_bootstrapped_demos * 7 次调用(近似值)

与 GeneticOptimizer 比较

何时使用 DSPyOptimizer

✅ 使用 DSPyOptimizer 的情况:

  • 您拥有 50+ 高质量标注示例
  • 您需要最佳的指标准确性
  • 您可以承担 100-500 次 LLM 调用来进行优化
  • 您正在优化关键的生产指标
何时使用 GeneticOptimizer

✅ 使用 GeneticOptimizer 的情况:

  • 您的标注数据有限(<20 个示例)
  • 您需要更快、更便宜的优化
  • 您正在进行初始原型开发
  • 简单的指令优化已足够
并排比较
fromragas.optimizersimportGeneticOptimizer,DSPyOptimizer# Genetic optimizer - simpler, faster, cheapergenetic_config=InstructionConfig(llm=llm,optimizer=GeneticOptimizer(max_steps=50,# Evolution stepspopulation_size=10,# Population per generation))# DSPy optimizer - advanced, better results, more expensivedspy_config=InstructionConfig(llm=llm,optimizer=DSPyOptimizer(num_candidates=10,max_bootstrapped_demos=5,max_labeled_demos=5,))# Compare resultsmetric_genetic=Faithfulness(llm=llm)metric_genetic.optimize_prompts(dataset,genetic_config)metric_dspy=Faithfulness(llm=llm)metric_dspy.optimize_prompts(dataset,dspy_config)# Evaluate on holdout settest_scores_genetic=metric_genetic.batch_score(test_set)test_scores_dspy=metric_dspy.batch_score(test_set)

典型结果:

指标GeneticOptimizerDSPyOptimizer改进幅度
忠实度(Faithfulness)0.820.89+8.5%
答案相关性(Answer Relevancy)0.750.84+12%
上下文精确度(Context Precision)0.780.86+10%

处理多个指标

使用相同方法优化多个指标:

fromragas.metrics.collectionsimport(Faithfulness,AnswerRelevancy,ContextPrecision)metrics={"faithfulness":Faithfulness(llm=llm),"answer_relevancy":AnswerRelevancy(llm=llm),"context_precision":ContextPrecision(llm=llm),}# Optimize each metricforname,metricinmetrics.items():print(f"Optimizing{name}...")# Load metric-specific datasetdataset=load_annotated_dataset(name)# Optimizemetric.optimize_prompts(dataset,dspy_config)# Savemetric.save_prompts(f"optimized_{name}.json")

故障排除

导入错误

如果您遇到 ImportError: DSPy optimizer requires dspy-ai :

# Install the DSPy extrauv add"ragas[dspy]"# orpip install"ragas[dspy]"
优化耗时过长

减少 LLM 调用次数:

fast_optimizer=DSPyOptimizer(num_candidates=3,# Minimum viablemax_bootstrapped_demos=1,max_labeled_demos=3,)
结果不佳

常见原因:

  • 数据不足 :需要 20+ 高质量标注
  • 标注质量低 :确保真实分数(ground truth)准确
  • LLM 选择错误 :使用 gpt-4o 或更好的模型进行优化
  • 配置不当 :先尝试默认参数
内存问题

MIPROv2 在处理大型数据集时可能会占用大量内存:

# Process in smaller batchesfromragas.dataset_schemaimportSingleMetricAnnotationdefoptimize_in_batches(dataset,batch_size=20):# Split datasetbatches=[dataset.select(range(i,min(i+batch_size,len(dataset.samples))))foriinrange(0,len(dataset.samples),batch_size)]# Optimize on first batch for speedbest_batch=batches[0]metric.optimize_prompts(best_batch,dspy_config)

最佳实践

数据质量
  1. 多样化示例 :覆盖边缘情况和常见场景
  2. 准确标注 :仔细检查真实分数(ground truth)
  3. 足够数量 :生产指标需要 50+ 示例
优化策略
  1. 从小规模开始 :先使用 3-5 个候选提示词测试
  2. 迭代优化 :根据需要逐步增加参数
  3. 验证 :始终在保留集(holdout set)上测试
  4. 缓存 :保存优化后的提示词以避免重新运行
生产部署
# 1. Optimize offlinemetric=Faithfulness(llm=optimization_llm)metric.optimize_prompts(training_dataset,dspy_config)metric.save_prompts("production_faithfulness.json")# 2. Load in productionproduction_metric=Faithfulness(llm=production_llm)production_metric.load_prompts("production_faithfulness.json")# 3. Use for evaluationresults=production_metric.batch_score(production_samples)

另请参阅

  • 优化器 API 参考 - 完整的 API 文档
  • 指标自定义 - 创建自定义指标
  • DSPy 文档 - 了解更多关于 DSPy 的信息
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 23:53:25

3步解锁你的iOS设备:AppleRa1n激活锁绕过完全指南

3步解锁你的iOS设备&#xff1a;AppleRa1n激活锁绕过完全指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经遇到过这样的尴尬情况&#xff1a;购买了一部二手iPhone&#xff0c;却因为前任…

作者头像 李华
网站建设 2026/7/2 3:06:54

反射使用详解

一、反射(主要用于框架的开发)反射&#xff1a;加载类&#xff0c;并允许以编程的方式解剖类中的各种成分&#xff08;成员变量、方法、构造器等&#xff09;1、反射第一步&#xff1a;加载类&#xff0c;获取类的字节码&#xff1a;Class对象获取Class对象的三种方式Class c1 …

作者头像 李华
网站建设 2026/7/2 3:06:59

阿里云盘Refresh Token获取:3分钟扫码授权完整指南

阿里云盘Refresh Token获取&#xff1a;3分钟扫码授权完整指南 【免费下载链接】aliyundriver-refresh-token QR Code扫码获取阿里云盘refresh token For Web 项目地址: https://gitcode.com/gh_mirrors/al/aliyundriver-refresh-token 你是否曾为阿里云盘API集成而烦恼…

作者头像 李华
网站建设 2026/7/2 3:25:34

敦煌壁画“活”了?AIGC绘画,正在批量生产“数字飞天”

“甘肃文创IP AIGC绘画&#xff0c;不是简单的技术叠加&#xff0c;而是文化价值与数字生产力的深度融合&#xff0c;选对策略才能让IP真正‘活’起来。”当前&#xff0c;文创行业正面临内容同质化严重、创作效率低下、文化表达难以精准触达用户等痛点。甘肃作为文化资源大省&…

作者头像 李华
网站建设 2026/7/2 3:06:59

数字孪生+机器人联动:C#上位机实现产线机器人虚拟仿真控制

核心摘要 在柔性制造与快速换型需求下,“先实物调试再上线”的传统模式已成为产线OEE的最大杀手。碰撞风险、节拍瓶颈与逻辑验证的滞后,导致现场调试周期动辄数周。本文提出一套基于C#/.NET 8的轻量级工业数字孪生架构:以Unity/Unreal为渲染前端,C#上位机为统一控制中枢,通…

作者头像 李华
网站建设 2026/7/2 3:07:01

移动端 App 测试入门(3)----Charles使用

1. 什么是Charles Charles&#xff08;俗称青花瓷&#xff09;是一款跨平台 HTTP/HTTPS 代理抓包调试工具&#xff0c;支持 Windows、macOS、Linux&#xff0c;是前端、移动端、测试工程师最常用的接口调试工具。 本质是本地代理服务器&#xff08;默认监听 8888 端口&#xf…

作者头像 李华