Skip to content

评估知识库检索质量

知识库评估用一组固定问题和参考答案检查 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 必填,其他字段按需要填写:

json
{"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 辅助生成问答,但导入前请把字段整理为 querygold_chunk_idsgold_answer

自动生成

在“评估基准”中选择自动生成,填写问题数量、参考邻近块数量、生成模型和并发数。系统从当前知识库的文档块采样,用相似检索选择上下文,再由模型生成问题、参考块和答案。

问题数量支持 1–100 条,并发数支持 1–20,默认并发数为 10。复杂模型或供应商限流时,把并发数调低。自动生成的结果仍需要抽查;模型生成的参考答案不天然正确。

如果选择图增强生成,当前知识库需要先完成图谱索引;没有可用图谱时,生成请求会被拒绝。

2. 运行评估

在知识库详情页依次打开“评估基准”→“RAG 评估”:

  1. 选择一份已完成的数据集。
  2. 按需填写答案生成模型。配置后,系统会用检索到的文档块生成答案。
  3. 如果数据集包含 gold_answer,按需填写评判模型;没有评判模型时不会计算答案准确性。
  4. 点击“开始评估”,在任务中心等待后台任务完成。

评估会读取知识库当前的检索配置,并逐题保存检索结果、生成答案和指标。任务完成后,以评估运行记录和逐题结果为准,不要只看任务中心的成功提示。

3. 读取和比较结果

先看运行的总体指标,再打开逐题结果定位问题:

  • recall@1 低,说明正确块很少排在第一位;检查查询表达、嵌入模型、分块和重排设置。
  • recall@5recall@10 低,说明候选结果整体没有覆盖参考块;检查检索数量和召回策略。
  • f1@K 低,说明结果覆盖率和噪声之间的平衡较差。
  • answer_correctness 低,先查看生成答案、参考答案和检索片段,再判断是召回问题还是生成/评判模型问题。

比较两次配置时保持数据集和问题顺序不变,并记录使用的模型、分块策略和检索参数。知识库内容或参考块发生变化后,旧分数不能直接与新分数比较。

常见限制

  • 评估只能使用已经完成的数据集;自动生成失败时,可以查看已保存的题目,但完成前不能导出或发起评估。
  • 任务失败、取消或服务重启后,任务状态不等于每个文档或每道题的最终状态,需要打开运行记录核对。
  • 评估使用后台 Tasker,不会自动把失败任务当作成功,也不会替你修改知识库配置。

下一步

本项目基于 MIT License 开源,欢迎使用和贡献。