总目录[第 1 章] 你的 RAG 为什么总在「一本正经地胡说」[第 2 章] 一张图看懂 RAGAS核心概念与 7 大指标[第 3 章] 数据构建——样本、数据集与模型接入[第 4 章] Faithfulness、Context Recall…RAGAS 核心指标怎么算[第 5 章] 生成侧指标与指标选型别再乱用 Faithfulness[第 6 章] 把指标真正跑起来执行、质控与回归闸门[第 7 章] 没标注数据用 RAGAS 自动合成测试集[第 8 章] 让评估贯穿研发实验追踪与 experiment/Dataset 工作流[第 9 章] 从笔记本到 CI把 RAGAS 做成生产级流水线[第 10 章] 内置不够用手搓 RAGAS 自定义指标含 SQL/MultiHop[第 11 章] RAGAS 不是唯一6 大评估工具横向对比功能篇[第 12 章] 怎么选不同团队画像的选型决策矩阵[第 13 章] 团队落地 RAGAS 的五阶段路线图可直接抄作业在上一篇文章《Faithfulness、Context Recall…RAGAS 核心指标怎么算检索侧》中我们拆解了检索侧指标测什么、怎么算、怎么读分。本篇接着讲生成侧指标Faithfulness、Answer Relevancy并给你一张别再乱用指标的选型清单。4.3 生成侧指标生成侧回答“基于上下文生成的答案本身质量如何” 两个核心指标Faithfulness忠实度核心与Answer Relevancy答案相关性。4.3.1 Faithfulness忠实度核心指标测什么衡量答案里的每一个声明是否都能从检索到的上下文中推导出来。它是抑制幻觉的第一指标——答案只要出现了上下文里没有的内容就会被扣分。怎么算事实把response拆成若干声明claims逐条用 NLI 判该声明是否被retrieved_contexts支撑分数 被支撑的声明数 / 总声明数Faithfulness (被上下文支撑的声明数) / (response 中声明总数)范围 0–1越大越好不需要 referencereference-free。代码怎么跑scorerFaithfulness(llmllm)resultscorer.score(user_input(哈利·波特最好的朋友是谁),response(哈利·波特最好的朋友是罗恩·韦斯莱。),retrieved_contexts[(罗恩·韦斯莱是哈利·波特最亲密的朋友之一。),],)print(result.value)# 取分数# print(result.reason) # 可选# 查看逐条判定依据MetricResult 同时携# 带 .reason事实返回的result是MetricResultresult.value为分数result.reason为可读判定依据部分指标/版本提供。全章统一以print(result.value)取分排错时再打印result.reason见 4.5。怎么解读分数高接近 1答案基本不幻觉句句有出处 → 可信。分数低答案混入上下文没有的内容编造、过度推断、张冠李戴→ 优先查生成 prompt 是否要求仅依据上下文、检索是否漏了关键上下文低 Context Recall 常导致低 Faithfulness。观点这是我最建议默认纳入门禁的生成侧指标——它直接对应别瞎编这一用户最在意的体验。把它和Context Recall一起看Recall 低导致的 Faithfulness 低靠改生成 prompt 救不了得先修检索。4.3.2 Answer Relevancy答案相关性含 with_reference 变体说明测什么衡量答案是否切题、是否直接回应了用户问题不评价事实对错对错看 Faithfulness。注意它就是 4.2.5 的Response Relevancy——同一指标在生成侧视角下称为 Answer Relevancy。怎么算事实与 4.2.5 完全一致——从response逆向生成问题、与原始user_input算余弦相似度均值。只需user_inputresponse Embedding不需要 referencereference-free。代码怎么跑scorerAnswerRelevancy(llmllm,embeddingsembeddings)resultscorer.score(user_input(第一届超级碗是什么时候举行的),response(第一届超级碗于 1967 年 1 月 15 日举行。),)print(result.value)关于with_reference 变体的澄清事实 观点事实RAGAS 的AnswerRelevancy本身不接收reference因此不存在真正的 with_reference 变体。它的输入只有user_input与response。事实如果你想要结合标准答案来判断回答质量那是另一个指标——AnswerCorrectness结合事实正确性与语义相似度或FactualCorrectness它们才接收reference。请勿把AnswerRelevancy误当成需要参考的指标。观点审稿中若要求Answer Relevancy 含 with_reference 变体更准确的表述是相关性用AnswerRelevancy无参考正确性用AnswerCorrectness/FactualCorrectness有参考二者职责不同、不可互相替代。本章聚焦教程核心 8 指标AnswerCorrectness留待进阶章节。怎么解读分数高回答切题、信息密度合适。分数低答非所问、过于笼统或夹带无关内容 → 查问题理解/检索命中意图。与 Faithfulness 的配合观点高分组合 “既切题又不幻觉”Answer Relevancy 高 Faithfulness 高“切题但瞎编”Answer Relevancy 高 Faithfulness 低同样危险。4.3 生成侧小结Faithfulness核心、无参考、越大越好专治幻觉。Answer Relevancy无参考、越大越好专治答非所问与 4.2.5 的 Response Relevancy 同源。二者都 reference-free可上生产做回归监控正确性需参考的指标AnswerCorrectness等属进阶。4.4 指标选型表与决策建议必补把全章 8 个指标整理成选型速查表再给何场景用何指标的决策建议。4.4.1 选型速查表指标所属侧是否需要 reference必需输入分数方向典型用途Context Precision检索是user_input,reference,retrieved_contexts越大越好离线衡量检索精确率/重排质量Context Recall检索是user_input,reference,retrieved_contexts越大越好离线衡量检索召回覆盖Context Entities Recall检索是reference,retrieved_contexts越大越好实体密集场景的召回校验Noise Sensitivity检索是user_input,response,reference,retrieved_contexts越小越好抗噪鲁棒性测试ContextUtilization检索否user_input,response,retrieved_contexts越大越好无参考时的检索有用性Response Relevancy检索否user_input,response越大越好相关性闸门切题校验Faithfulness生成否user_input,response,retrieved_contexts越大越好幻觉检测核心门禁Answer Relevancy生成否user_input,response越大越好答非所问检测4.4.2 决策建议观点离线有黄金集CI 门禁优先上Context PrecisionContext RecallFaithfulness。前两者给你检索准不准/全不全的绝对值后者守住不幻觉底线。线上无标注流量生产监控只用 reference-free 指标——Faithfulness、ContextUtilization、Response/Answer Relevancy。切勿试图在生产里再跑一个 LLM 造标准答案来套用 reference 类指标会自相矛盾且成本高。实体敏感业务医疗/法律/金融在门禁里加Context Entities Recall与Context Recall并列。检索刚引入重排/混合搜索对比实验用Context Precision看精确率和ContextUtilization无参考对照配合Noise Sensitivity看是否更抗噪。答案看起来对但出错同时看Faithfulness是否编造与Answer Relevancy是否切题二者高才是真的好。方向别搞反Noise Sensitivity越小越好汇总报告时单独列出或取反后再平均。事实上述离线用 reference / 线上用 reference-free的划分依据是各指标的必需输入字段见 4.1 与官方指标文档。生产环境强行跑 reference 类指标既无标注来源也无意义社区多篇实践文章均强调这一点见 4.7 来源。4.5 指标解读陷阱分数不是银弹。三个最容易踩的坑陷阱一高分 ≠ 系统好事实Noise Sensitivity是越小越好若你把它和其他越大越好的指标直接求平均会系统性地低估系统质量——必须取反或单列。事实 观点Context Precision高但Faithfulness低是典型检索干净、生成幻觉组合答案只用了相关上下文的一部分却编了其余内容。单看 Precision 会误判为系统很好。观点永远交叉看检索指标 生成指标不要只报一个最高分。陷阱二低分先复核reason别急着改系统事实collections 指标返回的MetricResult常带result.reason人类可读的判定依据如答案第 3 条声明未在上下文中出现。低分时先读 reason区分是系统真有问题还是裁判 LLM 误判/输入脏数据。观点很多低分来自样本本身reference 写错、contexts 截断、标注口径不一致而非系统缺陷。建立低分 → 先人工抽检 reason → 再决定是否改代码的流程能省下大量无效调参。陷阱三LLM 裁判有随机性事实基于 LLM-as-a-judge 的指标不具确定性——同一数据集跑两次分数不会完全一致温度、采样、API 波动都会带来方差。观点别用if score 0.85: 失败这种硬阈值门禁会频繁误报、很快被人关掉。建议先测基线、用区间/趋势而非单点阈值、关键回归用多次运行取均值、并把随机性写进门禁说明里。4.6 小结与动手实验必补4.6.1 全章小结检索侧 6 指标与生成侧 2 指标各自回答了上下文好不好与答案好不好的不同切面。选型先分 reference-free / 需要 reference线上用前者离线黄金集用后者。统一用 collections 类式 APIX(llmllm)→result scorer.score(...)→print(result.value)。解读时警惕方向反例Noise Sensitivity、高分组合误判、低分先查 reason、LLM 裁判随机性。4.6.2 动手实验分步可勾选目标用一份小样本把本章 8 个指标各跑一遍并练习看 value 读 reason 交叉解读。步骤 1 · 装环境pip install ragas0.4.3 openai并确认pip show ragas版本为 0.4.3。步骤 2 · 准备 5 条样本每条含user_input、retrieved_contexts、response并额外为其中 3 条准备reference用于 reference 类指标。样本建议取自你的真实日志并故意混入 1 条上下文无关/答案幻觉的坏样本以便观察低分。步骤 3 · 跑 reference-free 指标对全部 5 条跑Faithfulness、ContextUtilization、Response Relevancy/Answer Relevancy打印result.value。步骤 4 · 跑 reference 类指标对有reference的 3 条跑ContextPrecision、ContextRecall、ContextEntitiesRecall、NoiseSensitivity打印result.value。步骤 5 · 读 reason 排错对任一个低分样本打印result.reason判断是系统问题还是样本/标注问题并记录结论。步骤 6 · 交叉解读挑一条Context Precision 高但 Faithfulness 低的样本写下你对检索干净但生成幻觉的改进假设如加仅依据上下文作答约束。步骤 7 · 验证随机性可选用同一数据集连跑两次Faithfulness对比result.value直观感受 LLM 裁判的方差。步骤 8 · 出一张分指标小表把 8 个指标的 value 汇总成一张表标注每个指标的分数方向检查Noise Sensitivity是否被正确当作越小越好。动手检查点你能不看文档默写出哪些指标需要 reference、哪些不需要吗对照 4.1 速查表自检。你能解释Context Precision 高但 Faithfulness 低意味着什么、先改哪一段吗你的实验输出里Noise Sensitivity是否被正确解读为越小越好4.7 来源与迁移指南必补官方仓库与镜像当前官方仓库vibrantlabsai/ragas注1由早期explodinggradients/ragas重命名/迁移而来并非分叉旧地址会重定向。旧镜像DeepWiki 指向此处内容与新仓库一致explodinggradients/ragas注2。官方文档docs.ragas.iov0.4.3 现行指标总览Metrics 概念索引注3Context Precision / ContextUtilizationcontext_precision注4Noise Sensitivitynoise_sensitivity注5Answer/Response Relevancyanswer_relevance注6v0.3 → v0.4 迁移指南含evaluate()弃用、ragas.metricsv1.0 移除、MetricResult 说明migrate_from_v03_to_v04注7DeepWiki指向旧镜像 explodinggradients/ragas内容一致指标体系总览3-metrics-system注8RAG 评估指标详解4.2-rag-evaluation-metrics注9Metrics API 参考12.2-metrics-api注10论文Es et al.,RAGAS: Automated Evaluation of Retrieval Augmented Generation, 2023. arXiv:2309.15217注11版本与 API 状态事实提醒evaluate()legacy在 v0.4.3 触发DeprecationWarning官方对移除版本表述不一以实测为准。ragas.metrics小写单例如ragas.metrics.faithfulness官方明确v1.0 移除新代码用ragas.metrics.collections。ContextUtilization在 v0.4.3 是ContextPrecisionWithoutReference的兼容包装ContextPrecision是ContextPrecisionWithReference的别名。中文文档镜像可选参考docs.ragas.org.cn注12内容与 docs.ragas.io 一致。参考资料vibrantlabsai/ragas— https://github.com/vibrantlabsai/ragasexplodinggradients/ragas— https://github.com/explodinggradients/ragasMetrics 概念索引 — https://docs.ragas.io/en/stable/concepts/metrics/context_precision — https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/context_precision/noise_sensitivity — https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/noise_sensitivity/answer_relevance — https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/answer_relevance/migrate_from_v03_to_v04 — https://docs.ragas.io/en/latest/howtos/migrations/migrate_from_v03_to_v04/3-metrics-system — https://deepwiki.com/explodinggradients/ragas/3-metrics-system4.2-rag-evaluation-metrics — https://deepwiki.com/explodinggradients/ragas/4.2-rag-evaluation-metrics12.2-metrics-api — https://deepwiki.com/explodinggradients/ragas/12.2-metrics-api2309.15217 — https://arxiv.org/abs/2309.15217docs.ragas.org.cn — https://docs.ragas.org.cn/en/stable/concepts/metrics/available_metrics/context_precision/前一章《Faithfulness、Context Recall…RAGAS 核心指标怎么算检索侧》后一章把指标真正跑起来执行、质控与回归闸门