SuperAPI AI 工具集

rag-observability-evals

数据与分析

查看项目

更新于 10-28 04:52

技能介绍

用途

该技能面向将 RAG 系统投入生产的团队,目标是把检索增强生成从“黑盒”变成可度量、可持续回归测试的系统。它提供一套测量框架与实践脚本,覆盖检索质量、生成质量、可靠性与成本,并用于搭建监控仪表盘、自动化评估流水线和发布质量门禁。

主要能力

检索质量度量:Recall@k、MRR、NDCG@k(top-k 分块),以及引用覆盖率、来源新鲜度、嵌入漂移与索引陈旧度。资料提供的 retrieval_metrics.py 对单条查询计算 Recall@K、MRR、NDCG@K,并在 NDCG 中要求先去重检索 ID。

生成质量度量:groundedness 得分(答案是否被检索上下文支持)、按路由/用例统计的幻觉率、指令遵循与格式有效性。资料给出 groundedness.py,用 LLM 对答案中的每条声明判定 SUPPORTED / PARTIALLY_SUPPORTED / NOT_SUPPORTED,输出 0-1 的 groundedness_score 与 unsupported_claims 列表,并校验返回 JSON 结构、拒绝或截断输出、分数范围。

RAGAS 评估:rag_eval.py 加载含 question、generated_answer、retrieved_contexts、reference_answer 的数据集,运行 faithfulness、answer_relevancy、context_precision、context_recall、context_entity_recall、answer_similarity 六项指标,打印汇总并写出 JSON 结果。

可靠性与成本:按检索/生成拆分 p50/p95 延迟、各阶段 token 用量、缓存命中率与单次成功回答成本。rag_metrics_exporter.py 定义 Prometheus 的 Histogram(检索、生成、重排延迟)、Gauge(groundedness、faithfulness、context precision、Recall@K、索引陈旧秒数、索引文档数)与 Counter(请求总数、检测到的幻觉、回退次数、token 用量、缓存命中),并提供 start_metrics_server 启动 /metrics 端点。

评估流水线:资料建议整理带标准答案与来源文档的基准集,按每种检索器/模型配置跑夜间离线评估,对采样生产流量做在线影子评估,并以最低质量、安全与延迟阈值做发布门禁。给出的 eval-pipeline-cron.yaml 是一个每日 02:00 运行的 CronJob 示例。

使用方式

  1. 准备前提:已插桩检索与生成阶段的 RAG 流水线;Python 3.10+ 及评估库(ragas、langchain、openai);Prometheus 端点用于导出自定义指标;含问题/答案/来源三元组的标准答案基准数据集;RAG 服务中集成 OpenTelemetry SDK。
  2. 运行 RAGAS 评估:python rag_eval.py <dataset.json> <output.json>,示例脚本仅接受两个位置参数。
  3. 计算检索指标:调用 compute_retrieval_metrics(queries, k_values),queries 中每条含 retrieved_ids 与 relevant_ids。
  4. 打分 groundedness:调用 score_groundedness(answer, contexts) 或 batch_groundedness(eval_data),批量函数会返回平均 groundedness、声明总数、未支持声明数与未支持率。
  5. 导出指标:调用 start_metrics_server(port) 启动 HTTP 服务,由 Prometheus 抓取。

适用场景

  • RAG 系统上线后的质量监控与仪表盘建设;
  • 为检索与生成搭建自动化评估流水线;
  • 排查幻觉或相关性回退问题;
  • 为 RAG 流水线变更建立质量门禁。

限制与注意事项

  • 资料明确说明这是文档型导入:上游辅助脚本与模板未随附打包;所有指导会作用于真实环境,应用前需确认目标、影响范围与回滚方案,未经明确批准不得部署到生产。
  • 示例 rag_eval.py 仅接受两个位置路径,不实现 Pushgateway、回归比较或发布阻断;Kubernetes exec 形式的命令参数不会展开 shell 的 $(date ...);如需夜间门禁需自行编写并测试代码,固定镜像 digest 并限制并发与重试以避免重复计费评估。
  • RAGAS 不同版本的 EvaluationResult 访问方式不同,需验证聚合与 NaN 情况,并持久化逐样本失败,不能假设 .items() 在所有版本都可用。
  • 评估器的 LLM/嵌入调用可能把答案与检索文档发送给第三方并产生费用,运行前需批准提供方与数据范围,并使用脱敏样本。
  • 评审分数只是噪声代理,不是经验证的幻觉概率,需用盲标人工标签校准,并报告样本量与不确定性;被评估文本应视为不可信数据而非指令。
  • batch_groundedness 在无声明时抛错,不应把缺失证据当作零错误。
  • 资料中除上述脚本与 CronJob 外,未提供告警阈值、具体价格或部署步骤等细节。