首页/AI/RAG 与向量库速查/上下文精度与召回指标

上下文精度与召回指标

context_precision 衡量检索上下文中相关条目排在前部的程度;context_recall 衡量标准答案所需信息被上下文覆盖的比例;两者分别对应「排得好」与「找得全」。

RAG 与向量库速查AI更新于 2026-10-13

上下文精度与召回

两项指标分工明确:context_precision 衡量检索到的上下文里相关条目是否排在前部,反映排序质量;context_recall 衡量标准答案所需信息是否都被上下文覆盖,反映召回是否完整。前者对应「排得好」,后者对应「找得全」,联合看才能判断该调检索还是调排序。

基本信息

context_precision相关片段是否位于前部,受排序与截断影响
context_recall答案要点是否都出现在上下文中,受召回影响
依赖字段recall 需要标准答案,precision 只需要问题与上下文
取值范围0 到 1,越高越好
用途区分检索侧问题与生成侧问题

两项一起跑

两项一起跑
from ragas.metrics import context_precision, context_recall
from ragas import evaluate

res = evaluate(dataset, metrics=[context_precision, context_recall])
print(res)

指标对照

指标回答的问题
context_precision相关片段是否排在前位(受排序影响)
context_recall答案要点是否都出现在上下文中(受召回影响)

使用要点

  • recall 必须配标准答案,没有标注时不要硬跑,结果没有意义
  • 两项指标一起看:precision 高而 recall 低说明排序好但召回不全
  • 上下文条数变化时两项都会动,比较时要固定条数
  • 按问题类型分组统计,专名类与概括类的短板往往不同
  • 把指标与召回池大小一起记录,便于解释波动

常见误读

  • 把 precision 低当成生成问题,实际是排序或截断把好片段压到后面
  • 只看 recall 就加大召回池,结果是上下文变长、答案质量并未提升
  • 评测时塞入全部候选而不按线上截断,两项指标都偏离真实情况
  • 标准答案写法与文档表述差异过大,recall 被系统性低估
context_recall 依赖标准答案:没有标注的场景可改用「标注片段集合」来近似,但要明确这类结果的解释边界。

两个指标怎么配合用

排查时先看 recall:标准答案的要点如果根本没进上下文,问题在检索侧,此时优化排序不会有收益;recall 达标后再看 precision,判断是否把相关片段排得太靠后或在上限处被截断。两者都达标而答案质量仍然差,才把注意力转到生成约束与提示词上。按这个顺序推进,可以避免在错误的环节反复调参,也能让每次改动的效果有明确的方向。

组合结论读法

  • recall 低、precision 低:召回不足,先扩候选池或修切分
  • recall 高、precision 低:找得到但排得后,优先加重排
  • recall 低、precision 高:候选少而准,说明召回深度不够
  • 两项都高但答案差:转向生成约束、拒答策略与提示词

易错点

  • 没准备标准答案就硬跑 context_recall,报错或得到无意义的结果
  • 只优化 precision 不补 recall,答案要点仍然缺失
  • 评测上下文用全部候选而非线上截断后的条数,指标与实际表现脱节
  • 把标准答案与文档表述差异当成召回不足,反复调整检索参数

数据来源与参考

  • RAGAS 官方文档(Context Precision / Context Recall)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌