评估知识库检索质量
知识库评估用一组固定问题和参考答案检查 RAG 链路。它适合比较嵌入模型、分块策略和检索参数的变化,不能代替真实用户场景的人工验收。
本页只介绍知识库评估。要评估智能体是否能完成编程、研究或工具调用任务,请看智能体评估。
评估会测什么
每条评估样例可以包含两类参考数据:
gold_chunk_ids:期望命中的文档块 ID,用于计算检索指标。gold_answer:参考答案,用于在配置评判模型后计算答案准确性。
系统提供以下指标:
| 指标 | 含义 |
|---|---|
recall@K | 前 K 个结果覆盖参考文档块的比例 |
f1@K | 前 K 个结果的精确率和召回率的调和平均 |
answer_correctness | 评判模型认为生成答案与参考答案在核心事实上的一致比例 |
overall_score | 有答案评估时取 answer_correctness,否则取 recall@10 |
这些指标没有适用于所有数据集的固定“及格线”。请在同一批样例、同一评估配置下比较结果,并同时查看逐题结果;平均分上升不代表每个问题都变好了。
1. 准备评估数据
手动上传 JSONL
每行一个 JSON 对象,query 必填,其他字段按需要填写:
{"query":"什么是人工智能?","gold_chunk_ids":["chunk_001"],"gold_answer":"人工智能是……"}
{"query":"机器学习有哪些类型?","gold_chunk_ids":["chunk_005"],"gold_answer":"主要包括监督学习……"}gold_chunk_ids 必须是知识库实际的文档块 ID,不是文件 ID。只有提供该字段的样例才会参与检索指标;只有提供 gold_answer 且配置了评判模型的样例才会参与答案指标。
在知识库详情页打开“评估基准”,点击上传并填写名称。系统会校验 JSONL 并把数据集、题目和元数据保存到 PostgreSQL;JSONL 文件只承担导入和导出作用。
准备数据时,问题应覆盖真实用户会问的主题,参考块和答案应由人检查。可以使用 EasyDataset 辅助生成问答,但导入前请把字段整理为 query、gold_chunk_ids 和 gold_answer。
自动生成
在“评估基准”中选择自动生成,填写问题数量、参考邻近块数量、生成模型和并发数。系统从当前知识库的文档块采样,用相似检索选择上下文,再由模型生成问题、参考块和答案。
问题数量支持 1–100 条,并发数支持 1–20,默认并发数为 10。复杂模型或供应商限流时,把并发数调低。自动生成的结果仍需要抽查;模型生成的参考答案不天然正确。
如果选择图增强生成,当前知识库需要先完成图谱索引;没有可用图谱时,生成请求会被拒绝。
2. 运行评估
在知识库详情页依次打开“评估基准”→“RAG 评估”:
- 选择一份已完成的数据集。
- 按需填写答案生成模型。配置后,系统会用检索到的文档块生成答案。
- 如果数据集包含
gold_answer,按需填写评判模型;没有评判模型时不会计算答案准确性。 - 点击“开始评估”,在任务中心等待后台任务完成。
评估会读取知识库当前的检索配置,并逐题保存检索结果、生成答案和指标。任务完成后,以评估运行记录和逐题结果为准,不要只看任务中心的成功提示。
3. 读取和比较结果
先看运行的总体指标,再打开逐题结果定位问题:
recall@1低,说明正确块很少排在第一位;检查查询表达、嵌入模型、分块和重排设置。recall@5或recall@10低,说明候选结果整体没有覆盖参考块;检查检索数量和召回策略。f1@K低,说明结果覆盖率和噪声之间的平衡较差。answer_correctness低,先查看生成答案、参考答案和检索片段,再判断是召回问题还是生成/评判模型问题。
比较两次配置时保持数据集和问题顺序不变,并记录使用的模型、分块策略和检索参数。知识库内容或参考块发生变化后,旧分数不能直接与新分数比较。
常见限制
- 评估只能使用已经完成的数据集;自动生成失败时,可以查看已保存的题目,但完成前不能导出或发起评估。
- 任务失败、取消或服务重启后,任务状态不等于每个文档或每道题的最终状态,需要打开运行记录核对。
- 评估使用后台 Tasker,不会自动把失败任务当作成功,也不会替你修改知识库配置。