评估知识库检索质量
知识库评估用一组固定问题和参考答案检查 RAG 链路。它适合比较嵌入模型、分块策略和检索参数的变化,不能代替真实用户场景的人工验收。
开始前,用有管理权限的管理员账号完成文档入库,准备一个已有索引的 Milvus 知识库。完成本页后,可以读取逐题结果,并用同一批题目比较检索配置。完整智能体任务的评估见智能体评估。
评估会测什么
每条评估样例可以包含两类参考数据:
gold_chunk_ids:期望命中的文档块 ID,用于计算检索指标。gold_answer:参考答案,用于在配置评判模型后计算答案准确性。
系统提供以下指标:
| 指标 | 含义 |
|---|---|
recall@K | 前 K 个结果覆盖参考文档块的比例 |
f1@K | 前 K 个结果的精确率和召回率的调和平均 |
answer_correctness | 逐题按核心事实一致记 1、否则记 0,再取平均 |
overall_score | 有答案评估时取 answer_correctness,否则取 recall@10 |
这些指标没有适用于所有数据集的固定“及格线”。请在同一批样例、同一评估配置下比较结果,并同时查看逐题结果。答案评判报错也会记录 0 分,需要结合评判理由区分模型错误与答案错误。
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低,先查看生成答案、参考答案和检索片段,再判断是召回问题还是生成/评判模型问题。
比较两次配置时保持数据集和问题顺序不变,并记录使用的模型、分块策略和检索参数。知识库内容或参考块发生变化后,旧分数不能直接与新分数比较。
常见限制
- 评估只能使用已经完成的数据集;自动生成失败时,可以查看已保存的题目,但完成前不能导出或发起评估。
- 任务失败、取消或服务重启后,任务状态不等于每个文档或每道题的最终状态,需要打开运行记录核对。
- 查看每道题的检索片段、答案和评判理由后,再决定是否修改知识库配置;评估不会自动调整配置。