收益:
- 定义分别衡量保留率和发电质量的指标
- 设置黄金问题集并以法学硕士为评委进行自动评估
- 通过生产中的反馈、监控和回归测试来保持质量
“我安装了助手,看起来运行良好”这句话不是工程声明。 RAG 系统悄无声息地崩溃了:新的文档类型欺骗了检索,迅速的更改降低了准确性,索引变得陈旧。实现这一点的唯一方法是测量。在本单元中,我们将介绍如何测量 RAG 质量(分别检索和生成)、自动评估(法学硕士作为评判)以及维护生产质量(监控、回归)。 “如果不衡量,就无法改进”是该单位的座右铭。
测量两个不同的事物
RAG 有两条腿,必须单独测量,因为问题可能出在其中一条腿上:
- 检索质量:正确的零件是否到达?
- 生成质量:输入的数据是否产生了正确的答案?
如果答案不好,你需要先知道哪条腿不好。如果正确的部分永远不会到达,即使是最好的提示也无法保存(检索问题)。如果正确的部分到达但模型误读了它,那么改进检索是徒劳的(生成问题)。
检索指标
检索是一个排序/访问问题;通过经典信息检索指标来衡量。为此,您必须拥有黄金簇:了解每个问题的哪一部分是“正确的”。
公制
采取什么措施
简单定义
回忆@k
正确的棋子是否位于前 k 中?
正确的零件捕获率
精度@k
返回的 k 件中有多少件是相关的?
清洁所带来的物品
MRR(平均倒数排名)
正确的部分是什么顺序?
排名前列的奖励
命中率
至少有一件正确的作品到达了吗?
衡量成功的最基本标准
实际评论:如果 Recall@k 较低,则应重新设计分块或搜索策略(混合、k、重新排名)。如果精确率低但召回率高,那么添加重新排名是一个不错的举措。
一代指标
当正确的部件到达时,我们会测量模型产生的响应的质量。三个基本维度:
- 忠实度:答案中的每项主张都有上下文支持吗?有合适的吗?它是幻觉的直接测量。
- 答案相关性:答案是否真正回答了问题还是偏离了主题?
- 完整性:上下文中的所有相关信息是否已使用或是否缺失?
这些通常按等级评分(例如 1-5),而不是像“对/错”那样的二元评分。
提示:将忠诚度作为单独的指标进行跟踪。如果忠诚度随着准确度的降低而降低,那么问题就出在生成上;如果忠实度很高但答案是错误的,问题就出在错误的棋子上(检索)。这两个指标一起构成一个显示故障位置的指南针。
建立黄金问题集
每个测量都需要一个黄金集/评估数据集:现实问题+预期正确答案+正确的源数据。从 30-50 个精心挑选的问题开始比 500 个随机问题要好。包括以下内容:常见的真实问题、已知的困难问题、没有答案的陷阱问题(应该说“我不知道”)、来源相互矛盾的问题。
# 黄金簇示例(概念)[ {"question": "年假多少天?", "expected_answer": "1-5年工龄14天", " Correct_part_id": "two-part-3", "category": "leave"}, {"question": "公司火星办公室在哪里?", "expected_answer": "NO_INFORMATION", # trap: 我不知道知道“正确的部分 ID”:空,“类别”:“陷阱”}]
法学硕士法官:自动评估
手动获得数百个答案是很累人的。 LLM 作为评判模型是指一个模型根据特定标准对另一个模型的答案进行评分并证明其合理性。好的评委提示会明确定义标准,给出示例并要求理由。
# LLM-as-judge 提示(概念性)您是一位公正的评估者。根据给定的上下文和预期答案评估下面的答案。评分 (1-5) 并证明:- 忠实性:答案中的每个主张是否得到上下文支持?- 准确性:答案是否符合预期答案?- 完整性:相关信息是否完整?特别是:如果答案包含上下文中没有的信息,请给出忠实度 1 并指出哪个主张是捏造的。上下文:{上下文}预期:{预期}答案:{答案}输出:{忠实性、准确性、完整性、合理性}
注意:LLM作为法官并不完美;他们可能有自己的偏见(答案很长,更喜欢自己的风格)。还要验证法官:让法官和人类对一些答案进行评分,并衡量他们之间的一致性。如果 Judge 与人类的分数一致,你就可以信任他。
弱/强评级
弱(“这对我有好处”):
我问了几个问题,答案似乎不错。我已经上线了。# 问题:没有测量,回归难以察觉,改进是盲目的。
强大(黄金集群+离散指标+自动判断+回归):
40 个问题的黄金簇。每次更改时,recall@5、忠实度和准确性都会自动测量。如果分数下降,则回滚更改。在生产中,收集用户反馈并将其添加到集合中。
生产中的监控和回归
评估不是一次就完成的。三个不变的练习:
- 回归测试:在每次提示/检索/模型更改时自动运行黄金集群。如果分数减少,则更改相反。这可以防止“在试图使其变得更好的同时打破它”。
- 生产监控:监控真题“找不到信息”率、平均延迟、成本、用户反馈(👍/👎)。 “我不知道”的突然增加通常是索引或检索故障的第一个迹象。
- 反馈循环:用户👎提供的真实问题经过审核并添加到黄金堆中;因此,随着时间的推移,集合变得更加丰富,系统的盲点也被封闭。
三个迷你箱
案例 1 — 静默回归。一个团队修改了提示以“改进”它;一般准确率有所提高,但陷阱问题的忠实度下降了 30%(模型开始变得更加拟合)。如果不是金簇里的陷阱题根本不会被注意到;回归测试恢复了更改。
案例 2 — 伸直错误的腿。一位助理的回答很糟糕;该团队花了数周时间来研究提示。当我们测量检索指标时,recall@5 只有 48%——问题在于检索,而不是生成。当添加混合 + 重新排名时,召回率增加到 89%,准确率也增加。
案例 3 — 生产警报。有一天,支持助理的“我找不到信息”比率从 6% 跃升至 34%。触控板警告;原因是夜间运行的索引作业悄然失败,新文章未上传。如果没有监控,错误的“我不知道”陈述将会持续数天。
常见错误
- 满足于“它对我来说效果很好”:如果没有测量,回归就会被忽视。
- 不分离检索和生成:您将纠正错误的部分并浪费时间。
- 不问陷阱问题:编造事情的倾向不会出现在黄金星团中。
- 不核实法官:有偏见的陪审团给予虚假信心。
- 不监控生产:指数失效,成本爆炸继续悄然进行。
综上所述
- 在RAG中,检索和生成质量是分开测量的;必须首先确定哪条腿受损。
- 召回率@k、精度@k、检索的 MRR;信、适、全用于生成。
- 每次测量都需要一个金簇;把真实的、困难的、陷阱的、矛盾的问题放进去。
- LLM作为法官大集自动评分;但法官本人对人的审判必须是公正的。
- 回归测试、生产监控和反馈循环可以长期保持质量。
应用任务
(1) 为你自己的助手创建一套至少 15 个问题的黄金套:包括至少 3 个陷阱(没有答案)、3 个困难问题、2 个矛盾的来源问题。写下每个问题的预期答案和正确部分。 (2)手动将两个不同的提示版本与该集合进行比较;对每个答案的忠实性和准确性给予 1-5 分。 (3) 根据您自己的标准调整上面的法学硕士法官提示。 (4) 确定您将在生产中跟踪的 3 个指标,并针对每个问题“我在什么阈值时发出警报?”写入值。
清单
- [ ] 我可以使用单独的指标来衡量保留率和生成质量。
- [ ] 我知道recall@k、忠诚度等指标的含义。
- [ ] 我可以构建一个包含真实问题、困难问题、陷阱问题和矛盾问题的黄金簇。
- [ ] 我可以设置自动评估并通过LLM-as-judge来验证法官。
- [ ] 我可以操作回归测试、生产监控和反馈循环。