在AI技术飞速发展的当下,如何准确评估大型语言模型(LLM)的性能成为了一个关键问题。本文将带你走进“LLM-as-a-Judge”的奇妙世界,这是一种创新的评估方法,通过让LLM自身来评估其他LLM的输出,从而实现高效、客观的质量把控。上一篇文章分析了AI产品经理做好评测的重要性,并以本人所在的AI+医疗场景为例,示例了评估标准的构建以及测评了相关大模型在此任务上的能力。从这篇文章起,将开启LLM-as-a-Judge的系列文章,包含从评估方法到实战应用的全流程。这是一种用魔法打败魔法的神奇方法体系,以本人曾在某厂子做过智能客服的经验来看,里面的方法极其实用,甚至不只是在评估环节用得到,很多方法都可以融到产品设计中,以保证AI产品的可靠性。里面的绝大多数内容我都曾在工作中或多或少用到过,现在终于被梳理成了一个完整的体系。在此强烈安利给各位AI产品经理以及算法伙伴。一、什么是LLM-as-a-judgeLLM-as-a-Judge 是一种评估方法,用于根据评估提示词中定义的自定义标准评估任何 LLM产品(包括聊天机器人、问答系统或代理)生成的文本质量。它给LLM以评估提示词,让LLM来根据您定义的标准对生成的文本进行评级。LLM可以对两个输出进行比较,也可以直接对一个输出进行评分(评估正确性和相关性)。LLM 将按照您的指示返回分数、标签甚至描述性判断。假设您有一个聊天机器人。您可以要求外部LLM 评估其输出,类似于人工评估员的方式,查看以下内容:礼貌 :回应是否尊重和体贴?偏见 :回应是否显示出对特定群体的偏见?语气 :语气是正式的、友好的还是对话的?情感 :文本中表达的情感是积极的、消极的还是中性的?幻觉 :这种反应是否符合所提供的上下文?值得注意的是,LLM 作为裁判并不是准确度、 精确度或 NDCG 等意义上的评估指标 。在机器学习中,指标是一种定义明确、客观的衡量标准:它们精确量化模型的预测与真实情况的匹配程度。相比之下,LLM as-a-judge 是一种用来近似人工标记的过程。当要求 LLM 评估“忠实于来源”、“正确性”或“有用性”等品质时,需要在提示词中定义这些术语在的含义,且依赖于 LLM本身从训练数据中学到的语义关系。使用 LLM judges 的成功在很大程度上还取决于实现细节:使用的模型、提示词设计和任务复杂性。还需要根据特定的评估者 LLM 调整评估提示词:单词和格式都很重要。二、几种类型LLM评估器可以要求 LLM 在两个输出之间选择最佳答案,评估简洁或礼貌性等特定品质,或使用额外的上下文评估答案,例如检测幻觉或确定相关性:成对比较 :给LLM两个回答,并要求LLM根据特定标准选择更好的一个。这使您可以比较模型、提示或配置,以查看哪个性能最佳。按标准评估(无参考):要求 LLM 根据语气、清晰度、正确性或其他维度评估回复或对话。按标准评估(基于参考文献):提供额外的上下文,如源文档或参考文献,并要求 LLM 对回答进行评分。1、成对比较简而言之,您生成两个响应,并要求 LLM 根据特定质量或因素选择更合适的一个。提示词示例:你将看到对同一问题的两个回答。你的任务是根据其相关性、有用性和详细程度来决定哪个响应更好。如果两个响应都一样好,则声明平局。2、按标准评估你可以要求 LLM 直接按你定义的任何维度对生成的文本进行评分。例如,你可以使用 LLM评委来评估语气、清晰度、格式遵守性、简洁性、礼貌性、个人身份信息 (PII) 的存在等内容。LLM 在专注于语言和语义的分类任务中非常有效。一种常见的方法是将评估视为二元分类问题。或者,你可以使用分级量表来衡量响应满足特定标准的程度,例如使用从 1 到 5 的Likert scale。对话级评估:对包含完整上下文的对话进行评估,如:确定问题是否已解决 :用户的问题是否最终得到解决?检测用户挫败感 :用户是否表达了负面情绪?提示词示例:阅读对话并评估用户的请求是否已解决。“已解决”表示问题已得到解决,并且用户确认或表示满意。返回以下标签之一:“已解决” 或“未解决”。3、基于参考的评估在基于参考的评估中,不仅可以单独评估生成的输出,还可以提供额外的上下文以供查看。以下是提供额外输入的几个示例:1)答案 + 参考答案:适合于有基本事实或正确答案进行比较时。例如,在QA系统中,LLM评委可以检查新的回答是否与之前同一问题的答案是否相似。示例prompt:将生成的 response 与 reference 答案进行比较。评估生成的响应即使措辞不同是否正确传达了相同的含义。返回以下标签之一:“Correct”或“Incorrect”。2)答案 + 问题 :常见于聊天机器人或 Q&A 系统,用于检查响应是否正确解决了问题。完整性 :答案是否完全解决了问题?相关性 :答案是否与所提出的问题直接相关?本人有话说:本人曾在某厂做过智能客服系统,在QA链路中,当大模型基于检索的相关知识生成了答案之后,还要再过一个类似这样的质检模块,判断生成的答案是否能解决用户的问题3)在 RAG 中对上下文相关性进行评分:答案 + 检索到的上下文或问题 + 检索的上下文:用于RAG中,评估根据检索出来的上下文生成的答案情况。RAG的过程是:系统首先在知识库中搜索可帮助回答问题的文档,随后LLM根据它们生成输出。这为 LLM 答案增加了最新的知识。要正确评估 RAG 的性能,需要评估以下两方面:它检索相关文档的能力。最终的答案有多好。对于第一部分 —— 搜索质量评估 —— 可以使用 NDCG 或精确率等排名(ranking)质量指标。这些类型的指标量化了系统查找和排序有助于回答查询的文档的能力。 这些评估通常在迭代不同搜索策略等参数时离线进行。LLM评委可以充当上下文相关性评判员,可以对每个检索到的文本块与query进行相关性评分。4)评估RAG中的幻觉:您可以创建一个忠实度评判来仔细检查 LLM 是否正确处理了检索到的内容。示例:评估以下 response 是否忠实于 context。忠实的回应应该只包括上下文中存在的信息,避免发明新的细节,并且不与上下文矛盾。返回以下标签之一:“忠实”或“不忠实”。还可以使用LLM 评委来评估响应与上下文的连贯性、将摘要与来源进行比较来评估摘要 。这有助于您交叉检查质量并发现不一致之处。三、实践案例1、创建LLM评估器的步骤创建 LLM 评委与开发任何 LLM 驱动的产品非常相似,需要一个提示来告诉LLM 确切该做什么。在本例中,它是一个评估提示词,指示 LLM 评估文本输入并返回标签、分数或解释。问题是:如果你正在使用 LLM 来评估其他 LLM,而结果不是确定性的,你如何确保你的评委符合你的期望?您需要采用迭代方法——像优化LLM产品提示一样优化评委。换句话说,您的评估系统需要自己的评估!Step1. 定义评估方案。首先,确定你到底希望 LLM 法官评估什么。Tip:保持简单!不要试图一次评估太多事情。如果要检查不同的维度(如逾期和准确性),请将它们拆分为单独的评估。尽可能使用清晰的二元选项(例如,“正确”与“不正确”)。Step2. 准备评估数据集。接下来,创建一个小型数据集来测试您的 LLM 判断。这可以包括来自实验或生产数据的示例。如果您没有这些,则可以创建模拟预期输入的合成案例。您的数据集不需要很大,但应该包含各种示例,尤其是那些挑战您的评估标准的示例。Step3. Label此数据集。您需要手动标记此数据集,这个标记的数据集将是您的“基本事实”,并帮助您衡量 LLM 裁判的表现如何。Step4. 撰写评估提示词。以下是一个示例:Step5. 评估和迭代。提示准备就绪后,将其应用于您的评估数据集,并将 LLM 裁判的输出与您手动标记的真实情况进行比较。对于二元分类,可以使用精确率和召回率等指标来衡量 LLM 裁判的表现。请注意,您的 LLM 评委不需要完美——只需“足够好”以达到您的目标即可。即使是人类评估员也会犯错误!最后,引入领域专家。非技术团队成员(如产品或领域专家)在设置评估方面发挥着重要作用。2、LLM评估提示词几种提示技术可以提高 LLM 评估器的准确性和一致性。这些类似于您在开发 LLM 产品时可能使用的那些,例如思维链提示。1)使用二进制或低精度评分。二元评估,如 “Polite” 与 “Impolite” ,对 LLM 和人工评估者来说往往更可靠和一致。通过两个简单的选择更容易获得准确的结果,而不是试图决定特定回答的 “礼貌” 得分是 73 分还是 82 分。您还可以使用三个选项的方法,例如 “相关”、“不相关” 和 “部分相关”,或者在信息不足时包括 “未知” 选项。这避免了在没有足够数据的情况下迫使 LLM 做出决定。2)解释每个分数的含义。不要只是要求 LLM 将某物标记为“礼貌”或“不礼貌”。相反,明确定义“不礼貌”的含义,则更有帮助。如果您更喜欢标记边缘情况,您可以指导 LLM 更加严格地使用指示,例如“如果不确定,请谨慎行事并将其标记为’不礼貌’”。使用 5 分制之类的内容,解释每个类别的含义变得更加重要——3 分和 4 分有什么区别?如果这一点不清楚,LLM 和人工审稿人都将难以保持一致。为了减少可变性,您可以考虑使用多重评估 。然后,您可以使用最大投票或平均等方法组合结果。3)通过拆分标准简化评估。如果你有几个方面需要评估,比如完整性、准确性和相关性,最好将它们分成单独的评估器。这样可以保持专注。4)在提示中添加示例。如果您的标准很细微,您还可以考虑添加输入和判断的示例。您的提示可以从一般说明开始(例如,“Good”表示……“Bad” 的意思是……然后提供良好和不良响应的示例。这些示例可帮助 LLM 更好地了解如何应用您的条件,尤其是对于功能较弱的模型。但是也要注意,避免添加有偏差或有偏见的例子,且如果包含的负面示例多于正面示例,或者如果所有负面示例都列在末尾,则它们的顺序或频率可能会影响评估结果。5)鼓励循序渐进的推理。就像其他任务一样,要求 LLM 在给出最终答案之前“思考”其过程——称为思维链 (CoT) 方法——可以帮助取得更好的结果。您可以在评估提示中执行相同的动作:要求模型解释其推理或逐步思考,从而有效地实施 Zero-Shot-CoT 方法。这样,模型将在一个响应中同时提供推理和结果。6)设置低温。在 LLM 中,温度控制输出的随机性。较高的温度意味着更多的种类,而较低的温度使输出更“可预测”。对于评估,您不需要创造力 – 设置一个低温,以便模型为相同的输入提供一致的答案。7)使用功能更强大的模型。在评估时,从更强大的模型开始是有意义的。这通常有助于确保更好地与人类判断保持一致。一旦有了这个坚实的基线,您就可以试验更小或功能更弱的模型,看看它们是否满足您的需求。8)获取结构化输出。最后但并非最不重要的一点是,始终选择结构化输出格式,例如 JSON。它使解析评估结果以进行进一步分析变得更加容易。四、生产环境中LLM的观测与评估系统上线后,真实用户将以您可能意想不到的方式与它进行交互。即使是最彻底的发布前测试也无法涵盖人们使用它的所有不同方式。这就是为什么实时跟踪实际性能如此重要的原因。在生产中,没有完美的答案来比较输出,因此您需要自行监控响应的质量。LLM 评估员使这成为可能。您可以设置一个常规流程,根据所选标准对新一代输出进行评分。这种监控不仅与质量控制有关,还可以深入了解用户如何与您的工具交互第一步:追踪第一步是跟踪 — 从用户交互中收集数据并将其存储以供分析,获得日志后,您可以查看和读取它们,以了解用户与您的应用程序交互时发生的情况。最初,您可能会手动查看输出以发现常见模式或问题。但是,随着数据量的增长,人工审核将无法扩展,因此您需要一些自动化。第二步:安排评估制定评估计划:如果您正在运行客户服务聊天机器人,您可以评估 10% 的对话,以发现用户表达的沮丧、重复的问题或未解决的聊天。定期运行这些评估(例如,每小时、每天或在 X 次对话之后)可以让您了解最新的情况。第三步:构建仪表盘在对最新一批数据进行评估后,您可以将“标记为幻觉的答案比率”或“用户表达沮丧的对话数”等指标添加到控制面板中,并随着时间的推移可视化它们。这有助于跟踪性能趋势并发现问题。您还可以设置警报 ,以便在事情偏离轨道时,您会立即收到通知,并可以在问题影响太多用户之前介入。第四步:查看您的数据监控和调试齐头并进。比如说,如果你注意到用户不满情绪增加,你需要查看特定的问题对话。您可以导出示例以微调模型,或创建测试集以调整提示词以解决问题。本文由 @「爱」原生 原创发布于人人都是产品经理。未经作者许可,禁止转载题图来自Unsplash,基于CC0协议