RAG 评估
作者:Ai Flowi · 发布时间:
RAG 评估检查检索能否找到所需证据,以及生成的答案是否正确使用这些证据。应分别评估段落覆盖、答案的证据支持程度和实用性:看似准确的答案可能掩盖检索不足;即使检索到了相关段落,也仍可能生成缺乏证据支持的回复。在添加自动评估组件之前,先准备已标注的问题和来源段落。
本流程使用 AI Flowi Workflow 目录中的组件来组织拟议的评估运行。这些组件已在组件目录中记载;Ai Flowi 尚未进行生产环境测试。此处描述的评估输出属于接口约定,并非实测质量结果或基准测试分数。
1. 构建带有证据标注的问题语料库
将每个用例保存在 CSV 中,包含稳定的用例标识、问题、可回答性标签、已批准的来源版本、必要段落标识和简短验收备注。根据文档编写标签,不要根据聊天机器人当前的答案编写。应纳入需要同时用到主要规则与例外条件的问题;否则,遗漏例外的系统也可能看起来合格。
导入已标注的语料库时,请遵循Load CSV 接口和Data → DataFrame 转换参考。
用例标识必须同时对应问题和来源版本。如果政策发生变化,应保留旧用例记录,并为其证据标签创建新版本。否则,即使模型正确遵循了新政策,预期答案的变化也可能看起来像模型退步。将检索请求失败的用例保留在数据集中;若暗中删除它们,对比就只会衡量碰巧成功返回的回复。
| 用例类别 | 标准证据标签 | 揭示的失败情况 |
|---|---|---|
| 已覆盖的规则与例外 | 两个段落标识都不可缺少。 | 检索或生成遗漏例外条件。 |
| 无法回答的请求 | 没有已批准的支持段落。 | 根据无关文本编造答案。 |
| 版本冲突 | 两个来源存在分歧,需要审核。 | 流畅的答案掩盖了矛盾。 |
| 看似相关的干扰段落 | 只有与所问主题有关的段落符合要求。 | 措辞相似的干扰段落排在真正适用的证据之前。 |
2. 记录实际检索结果和答案输入
将问题传入 Knowledge Base.search_query,使用固定的 knowledge_base 和 top_k;通过 include_metadata 保留元数据。将 Results 与用例标识一同保存。知识库创建和分块检查见现有检索指南。回答路径可采用另行介绍的基于证据的聊天机器人设计,并记录实际发送给模型的文本。
数据库中的来源段落与提示词中的来源段落并不是一回事。记录检索行、格式化后的上下文和最终答案。如果格式化截断了必要的例外条件,应将其标为上下文构建失败。不能把未传入生成器的信息缺失归咎于生成器,也不要因为某个来源存在于别处,就将一项陈述判为有证据支持。
3. 按用例配置评估输入
逐用例评估设置:示例配置,并非已记录的测试
| 组件 | 组件目录中需设置的输入项 | 继续前的检查 |
|---|---|---|
| Load CSV 和 Data → DataFrame | csv_file:已审核的语料库;随后 data_list:JSON List。 | 确认结果中的每行对应一个可识别的用例。 |
| Batch Run | df:准备好的提示词表;column_name:已审核的提示词列;output_column_name:candidate_answer;model:已配置的 LanguageModel。 | 此组件处理一列数据;这并不能证明检索会自动针对每行运行。 |
| Cleanlab RAG Evaluator | query:用例问题;context:实际提供的证据;response:已保存的答案;model:已配置且受支持的选项;quality_preset:"base";api_key:你的凭据。 | 将 trust_score 和解释与来源标签一同审核。 |
| LangWatch Evaluator | evaluator_name:已配置的提供商评估组件;input:问题;output:答案;contexts:证据;expected_output:已审核的验收文本。 | 导出资料未提供评估组件名称选项;试验前先完成提供商配置。 |
你需要自己的模型和评估服务账号、所有必要的 API 密钥,以及将合成语料库传输到这些服务的权限。提供商另行计费。目录提供了有类型定义的评估输入,但没有完整的检索到批处理编排方案。从一个用例开始,明确映射实际观察到的值,并在尝试运行整个数据集前验证每个边界。
4. 如何区分覆盖、证据支持和实用性?
评估检索覆盖时,将返回的段落标识与标准标识对比。评估证据支持时,检查答案中的每项实质性陈述是否受到实际提供的上下文支持。评估实用性时,检查答案是否回应问题,并保留适用条件。这些检查可能得出不同结论:对于无法回答的用例,拒绝作答是合适的;对于已覆盖的用例,仅拒绝作答则不够。
Cleanlab RAG Evaluator 导出的开关包括 run_context_sufficiency、run_query_ease、run_response_groundedness 和 run_response_helpfulness。启用与你的评估标准相关的检查,并保留 other_scores、trust_explanation 和 evaluation_summary 以供检查。导出资料未定义分数的尺度、校准方式或通用通过阈值;数值输出不是权威的真值标签。
Cleanlab Evaluator 提供 prompt 和 response 输入,用于一般回复评估。它没有 RAG 评估组件中单独命名的 context 和 query 接口约定。选择与待评估证据相匹配的接口;即使自动解释听起来很有说服力,也应保留人工段落检查。
5. 按用例标识对比版本
固定语料库、来源版本和评估标准。改变一项检索或提示词设置,再对比相同用例的新旧结果。在 Table Operations 中,将 operation 设为导出选项 "Merge",将 merge_on_column 设为用例标识列,将 merge_how 设为 "outer"。连接结果前,先验证标识唯一性。
举一个对比示例:假设某用例有基线答案,但由于新的检索请求失败,没有候选答案。外连接对比应保留该用例,供失败审核。内连接对比会将其排除,可能让候选结果看起来更好。这是预期的对比性质,并非已记录的 Table Operations 结果;汇总变化前,应检查实际连接后的行。
每次运行都保存模型选择、检索数量、提示词文本和评估组件设置。即使答案不变,评估组件变化也可能改变判断。审核表现改善或下降的用例,以及失败请求和缺失输出。不要用平均值掩盖无法回答用例中的失败,也不要将评估组件超时视为成功回答。
6. 将合成用例作为候选,而非标准真值
aGenerate 可根据 schema、instructions 和可选的 source 表拟写模拟数据行。让它生成问题的其他表述和干扰项,再根据已批准段落审核,之后才纳入语料库。确保生成的候选用例与人工标注用例可以区分。模型生成的参考答案可能重复被测系统的同一种误解。
平台评估清单涵盖构建工具的选择与测试;本指南则评估一项具体的检索与回答任务。智能体的工具选择需要单独观察,参见AI agent 评估。不要把回复分数转化为关于权限、工具正确性或部署可靠性的声明。
7. 在评估后测试回退处理
Cleanlab Remediator 提供 score、threshold、fallback_text 和 show_untrustworthy_response。只有在了解所选评估组件输出并审核已标注用例后,才使用阈值。其必填 score 输入接受 number;应验证其与实际数值输出的兼容性。回退规则无法修复缺失段落,也不能使错误答案变为正确。
不要让这套拟议测试流程自动决定涉及敏感决策的系统是否可以发布。改变面向用户的流程前,先审核错误、来源覆盖和评估组件之间的分歧。保留先前输出,使回退可被审计,同时避免向用户展示不可信答案。
评估预算
套餐:Go 年付方案每月 USD8 起(月付 USD10),Plus 年付方案每月 USD16 起(月付 USD20),Pro 100 年付方案每月 USD80 起(月付 USD100),Pro 200 年付方案每月 USD160 起(月付 USD200),Pro 500 年付方案每月 USD400 起(月付 USD500),每月包含 5,000 至 250,000 个 Flowi Tokens,并支持充值;每次节点运行消耗 1 个 token;不包含第三方 API 和模型使用费用。
数据集行、重新运行和评估调用会产生独立于生产聊天机器人对话的用量。应根据实际运行路径估算,而非仅根据用例数量估算。