RAG 怎么评估呢?RAG 评估体系5 个指标让你的知识库从盲飞到可量化
RAG系统告别“感觉不错”,5个指标实现量化评估,让知识库从盲飞到精准可控。核心内容:1. RAG系统“盲飞”的四大根本原因与评估挑战2. 从检索、生成到答案的三维度评估框架3. 5个核心指标(如Context Precision、Faithfulness)的算法级拆解
找到正确的内容了吗?
→ Context Precision(检索到的内容有多少是有用的)
→ Context Recall(需要的内容有多少被检索到了)
第二层:生成忠实性
有没有基于检索内容诚实作答?
→ Faithfulness(回答里有多少是有上下文支撑的)
第三层:答案质量
答案有没有真正回答问题?
→ Answer Relevancy(切题程度)
→ Answer Correctness(事实正确性,需要 ground truth)
from ragas.metrics import (
faithfulness, answer_relevancy,
context_precision, context_recall,
)
from datasets import Dataset
# 准备你的评估数据
eval_data = {
"question": ["退款政策是什么?", "如何申请售后?"],
"answer": [
"退换货期为 14 天,需保持商品完好...",
"可以通过官网我的订单页面申请...",
],
"contexts": [
["退换货政策文档:14 天退货期,商品需保持完好..."],
["售后流程:登录官网 → 我的订单 → 申请售后..."],
],
"ground_truth": [
"MacBook Pro M4 支持 14 天退换货,商品需保持完好。",
"通过官网或苹果授权服务商均可申请售后。",
]
}
results = evaluate(
Dataset.from_dict(eval_data),
metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(results)
# {'faithfulness': 0.92, 'answer_relevancy': 0.87,
# 'context_precision': 0.83, 'context_recall': 0.79}
from ragas.testset.evolutions import simple, reasoning, multi_context
generator = TestsetGenerator.from_langchain(llm, critic_llm, embeddings)
testset = generator.generate_with_langchain_docs(
documents, # 你的知识库文档
test_size=100,
distributions={
simple: 0.4, # 40% 简单事实问题
reasoning: 0.4, # 40% 需要推理的问题
multi_context: 0.2, # 20% 跨文档问题
}
)
Step 2: 先查语料质量(成本最低,最常被跳过)
→ 知识库覆盖高频问题了吗?
→ 有没有过时或错误的文档在参与检索?
→ 分块后抽样,信息是否完整?
「语料腐化 = 修 10 倍检索也救不回来」
Step 3: 优化分块
→ Recall 低:chunk 是否切断了关键信息?
→ Precision 低:chunk 是否太大混入了无关内容?
Step 4: 优化检索
→ 混合检索 + Reranker 上了吗?
→ top-K 和相关度阈值合理吗?
Step 5: 优化生成侧
→ Prompt 约束够强吗?
→ Temperature 是否已调低到 0.2-0.3?
Step 6: 到这里才考虑换模型、上进阶方案
"faithfulness": 0.85,
"answer_relevancy": 0.80,
"context_precision": 0.80,
"context_recall": 0.75,
}
defrun_ci_evaluation(rag_pipeline) -> bool:
# 跑一次黄金测试集评估
results = evaluate(dataset, metrics=[...])
passed = True
for metric, threshold in QUALITY_GATES.items():
score = results[metric]
status = "✓ PASS"if score >= threshold else"✗ FAIL"
print(f" {metric}: {score:.3f} {status}")
if score < threshold:
passed = False
return passed # False = 阻止部署
B. 有跑过 RAGAS,但没有自动化
C. 接进了 CI/CD,每次部署都有门控
D. 正在搭,这篇来得及时
登录查看剩余 70% 内容
相关资讯
-
07.18
冒险小分队悠斯提娅角色详解:技能机制、强度分析与实战搭配指南
-
07.18
剑隐侠踪录是单机游戏吗 剑隐侠踪录游戏类型与玩法介绍
-
07.18
守住宗门好玩不 守住宗门玩法简介
-
07.18
《轮回之兽》流程曝光 主线约40小时 全成就时间翻倍
-
07.18
暑期特别返场:5款星铸宝箱高票回归啦
-
07.18
神秘玩法即将开启!
游戏推荐
推荐专题
热门阅读
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏