用 LLM 判定召回是什么
在没有完整人工标注时,可以请大模型充当评审:给定查询和召回的若干候选片段,让它逐条判断「该片段是否包含回答问题所需的关键信息」,再抽样统计命中率,近似估计召回质量。它替代的是昂贵的逐条人工标注,适合迭代期快速判断「改一版切分或换一次模型,召回有没有变好」。需要注意这是近似指标:模型有长度偏好、位置偏好与自我一致性偏差,关键版本仍要人工复核抽样对齐。
基本信息
| 输入 | 查询 + 带 id 的候选片段 |
|---|---|
| 输出 | 每片段是否含答案 + 一句话理由 |
| 成本 | 每个查询一次模型调用,批量评测要控预算 |
| 对齐方式 | 抽样 50~100 条与人工标注比对一致率 |
| 结论强度 | 近似指标,用于趋势与回归比较 |
| 搭配 | 与 recall@k、相似度分布互相对照 |
典型使用场景
- 切分策略对比:同一查询集下判断哪套切分召回更全
- 模型升级验证:换 embedding 后确认召回没有掉点
- 召回缺陷清单:把「未命中」的查询导出给内容团队补文档
- 上线前卡口:新版本必须通过在评测集上的召回判定
- 人工标注的预筛:先用模型粗判,人工只复核有争议的样本
判定提示词骨架
判定提示词骨架
系统:你是检索质量评审。
输入:问题 + 若干候选片段(带 id)。
任务:逐片段判断是否包含回答该问题所需的关键信息。
输出 JSON:{"judgments": [{"id": "…", "contains_answer": true|false, "why": "一句话"}]}
约束:只依据片段文本判断,不引入外部知识;片段不足时判 false。
提示:把判定提示词与模型名一起写入版本号,历史结果才可比。判定结果字段
| 字段 | 含义 | 使用注意 |
|---|---|---|
| id | 候选片段标识 | 必须回写,才能定位是哪一段没被承认 |
| contains_answer | 是否含回答所需信息 | 布尔值便于汇总命中率 |
| why | 一句话理由 | 抽样人工复核时判断模型是否讲理 |
| 整体命中率 | 含答案片段占比 | 趋势比绝对值更可靠 |
先与人工对齐再放大使用:抽 50~100 条算一致率,对齐率不达标就改判定提示词,而不是先跑全量。
判定提示词要版本化:提示词改动会使历史评测不可比,版本号与模型名必须一并记录在评测报告里。