RAGAS 是什么
RAGAS 是面向 RAG 管线的自动化评估框架。给它一批「问题、模型答案、检索上下文、可选标准答案」,它用大模型与嵌入模型计算忠实度、答案相关性、上下文精度与上下文召回等指标,把「效果好不好」变成可横向对比的数字,让改动的收益可被验证。
基本信息
| 输入字段 | question、answer、contexts,可选 ground_truth |
|---|---|
| 计算依赖 | 裁判用 LLM + 嵌入模型,需显式配置 |
| 输出 | 0 到 1 的分数,越高越好 |
| 使用前提 | 跨批次比较时固定裁判模型与评测提示词版本 |
| 典型用途 | 回归测试、对比不同切分与检索策略 |
最小示例(Python)
最小示例(Python)
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
ds = Dataset.from_dict({
"question": ["如何选择向量数据库?"],
"answer": ["按数据规模与过滤需求选择……"],
"contexts": [["选型要考虑……", "Milvus 定位于……"]],
"ground_truth": ["按规模、过滤、运维成本综合选择"],
})
result = evaluate(ds, metrics=[faithfulness, answer_relevancy, context_precision])
print(result)常用指标
- faithfulness:答案中的事实性陈述有多少能被检索上下文支撑,用来发现幻觉
- answer_relevancy:答案是否切题,对答非所问敏感,但不检查事实正确性
- context_precision:相关片段是否排在前部,反映排序质量
- context_recall:标准答案所需信息是否都被上下文覆盖,反映召回完整性
- answer_correctness 一类指标:需要标准答案,更接近人工判分
使用要点
- 先攒评测集:从真实问题里挑 50 至 200 条,覆盖不同文档与问法
- 上下文要与线上一致:用检索返回的切片,而不是把原始文档整段丢进去
- 指标要成组看:只看忠实度会漏掉「每句都有据但答错问题」的情况
- 结果要固化:把分数与当时的链路配置一起存档,才知道是哪次改动带来的变化
常见坑与做法
| 现象 | 原因 | 正确做法 |
|---|---|---|
| 分数波动大 | 裁判模型或提示词版本变了 | 固定版本并向评分结果里记录配置 |
| 指标普遍偏高 | 评测集太简单或与线上分布不同 | 按业务场景分层抽样建集 |
| context_recall 报错 | 缺少 ground_truth 字段 | 补标准答案或改用标注片段集合 |
评估结果依赖所用裁判模型:跨批次对比时固定模型与提示词版本,指标才可比。