如何评估 LLM 应用
1. 简介
在使用大型语言模型(LLM)构建应用程序时,评估的思路往往与传统的 AI 开发有所不同。传统 AI 的评估可能依赖于大规模的标注数据集和精细的性能指标,而 LLM 的开发则更注重迭代验证,并在开发过程中不断调整 Prompt 和算法来解决特定问题。LLM 应用的评估思路强调灵活迭代与实用性。开发者可以在开发的任意阶段根据实际效果和需求决定是否继续改进,避免了传统 AI 开发中数据与性能的固有瓶颈。通过这种方法,开发者能够快速构建并部署有效的应用程序,充分发挥 LLM 的强大能力。
1. 小样本迭代与 Prompt 调整
在早期开发阶段,你可以通过对少量样本进行实验和调整 Prompt,来优化模型的表现。这种方式允许你在短时间内验证和改进应用的效果,而不需要大量数据或训练。
2. 处理难题与逐步扩展
随着测试的深入,你会遇到一些难以处理的例子,这些问题可能无法简单通过 Prompt 调整来解决。这时,你需要将这些难题纳入到你的测试集中,逐步扩展开发集,使得模型能够更好地应对复杂场景。
3. 性能评估与适时停止
当你不断地扩展测试集并改善 Prompt 后,你可以开始引入性能指标,如平均准确度等,来量化模型的表现。一旦模型达到了预期效果,你可以选择在合适的时间点停止迭代开发。
4. 灵活的停止点
LLM 应用开发的灵活性在于,你不需要追求“完美”的模型。一些成功的应用程序往往在开发的初期阶段就已经达到了可以部署的状态,而不需要继续进行深入优化。这种思路与传统 AI 开发的精细优化形成鲜明对比,展现了 LLM 开发的独特优势。
5. 评估方法的选思路
-
评估方法的选择:
- 对于简单的任务,可以采用有明确标准答案的评估方法。
- 对于复杂的生成任务,评估难度增加,因为通常没有简单的标准答案。此时需要采用更加灵活和多样的评估方法,以准确反映应用的效果。
-
构建与优化验证集:
- 随着开发的深入,逐步找到并积累
Bad Case
,即表现不佳的例子。通过有针对性的优化,将这些Bad Case
加入到验证集中。 - 对于较大的验证集,逐一手动评估已经不切实际,因此需要设计自动化的评估方法,以整体衡量系统的性能。
- 随着开发的深入,逐步找到并积累
-
基于 RAG 范式的评估与优化:
- 针对大模型应用中的两个核心部分:检索和生成,分别进行性能评估和优化。
- 优化过程需要特别注意:在对
Bad Case
进行优化的同时,确保系统不会在原先表现良好的样例上出现失误。
-
验证迭代的重要性:
- 验证迭代是大模型应用开发的必经之路,通过不断发现和优化
Bad Case
,调整 Prompt 或提升检索精度,最终实现应用的性能目标。
- 验证迭代是大模型应用开发的必经之路,通过不断发现和优化
通过掌握这些评估方法与优化策略,开发者能够在实际应用中更有效地提高大模型的表现,使之更符合业务需求。
2. 大模型评估方法
1. 评估步骤
在具体的大模型应用开发过程中,我们通过寻找和优化 Bad Cases
来提升系统的整体表现。在大模型应用开发中,通过不断寻找和优化 Bad Cases
,并将这些案例纳入不断扩展的验证集中,可以有效提高系统的表现。当验证集规模增大到人工评估不可行时,自动化评估系统将成为必要工具。通过这种迭代优化和评估的方式,开发者可以逐步构建出更稳定和高效的大模型应用。这一过程的核心步骤包括以下几个方面:
1. 寻找和定义 Bad Cases:
Bad Cases
是系统在某些特定情况下表现不佳的实例。这些实例可以通过实际使用中发现,也可以通过针对性测试或边缘案例分析找到。- 找到
Bad Cases
后,需要对其进行详细分析,明确系统在处理这些案例时存在的问题,是由于 Prompt 的不准确、检索过程中的失误,还是其他原因导致的。
2. 针对性优化 Prompt 或检索架构:
- 根据对
Bad Cases
的分析结果,有针对性地优化 Prompt 或调整检索算法,旨在提高系统在这些特定情况下的表现。 - 这种优化可能涉及到调整 Prompt 的语言表述、改变检索的策略或增加更多的训练数据,以提升模型的理解和生成能力。
3. 构建和维护验证集:
- 每当找到一个新的
Bad Case
,就将其加入到一个不断扩展的验证集中。 - 验证集的作用是通过对系统进行全面、持续的评估,确保优化后的系统在所有案例中的表现都得到提升或保持原有水准。
4. 迭代优化和重新评估:
- 每次优化后,重新对验证集中的所有案例进行验证,确保系统在优化后的
Bad Cases
上表现更好,同时不会在原有的Good Cases
上出现性能退化。 - 这种迭代式的评估和优化过程有助于逐步提高系统的整体性能,使其在更广泛的场景下表现稳定。
5. 自动评估系统的必要性:
- 随着验证集的规模不断扩展,逐个案例的人工评估将变得不可行,因为其时间和人力成本会大幅增加。
- 因此,有必要设计和实现自动评估系统,该系统能够自动对验证集中的每个案例输出质量进行评估,并生成系统整体性能的统计数据。
6. 评估方法的设计:
- 自动评估系统可以采用多种方法,例如基于指标的评估、对比测试、或通过机器学习模型自动评分等。设计评估方法时需要考虑其与业务目标的相关性和评估的准确性。
2. 人工评估的一般思路
在系统开发的初期,由于验证集的体量较小,人工评估是最简单、直接的验证方式。然而,为了保证评估的客观性和一致性,人工评估也应遵循一些基本的准则和思路。人工评估虽然在早期开发阶段非常有效,但需要通过量化的方式和明确的评估规范来提高其科学性和可比性。随着系统的复杂化和验证集规模的扩大,人工评估的方法可能会逐步被自动化评估取代,但在开发初期和小规模验证集中,它仍然是不可或缺的一部分。
准则一:量化评估
为了能够有效地比较不同版本系统的性能,量化评估指标是不可或缺的。具体做法是对每一个验证案例的系统输出进行打分,并通过计算所有验证案例的平均分来衡量当前系统版本的整体得分。通过对上述多个维度的量化评估,我们能够更全面地了解大模型在个人知识库问答任务中的表现。这些维度涵盖了从基础的知识查找到高级的语言生成能力,帮助我们识别系统的优势和不足。量化评估的结果不仅能够比较不同版本的系统,还能够为系统的进一步优化提供明确的方向。随着验证集的扩展,这种多维度评估方法可以逐步转化为自动化评估系统,以提高评估效率和准确性。
量化评分的范围
- 评分范围可以根据具体情况选择,如 0-5 或 0-100。
- 评分应尽量细化,以便能够更精确地反映系统的性能差异。
评估规范的设定
- 为确保不同评估员之间的评估结果具有一致性,应该制定明确的评估规范。例如,在满足某一特定条件 A 的情况下,系统的输出可以被评为 Y 分。
- 这些规范不仅帮助统一评估标准,还能降低主观因素对评估结果的影响。
在大模型应用的评估中,尤其是针对生成模型的评估,需要综合多个维度来全面衡量模型的表现。以下是一个针对个人知识库问答项目的多维度评估框架示例,这些维度涵盖了从知识查找到语言生成的各个方面:
准则二:多维度评估
1. 知识查找正确性
- 定义:评估系统从向量数据库中查找到的知识片段是否能够回答用户的问题。
- 量纲:0-1
- 0:查找到的知识片段无法回答问题。
- 1:查找到的知识片段能够正确回答问题。
2. 回答一致性
- 定义:评估系统的回答是否紧密围绕用户的问题展开,避免出现偏题或误解题意的情况。
- 量纲:0-1
- 0:回答完全偏题或误解题意。
- 1:回答完全切题,准确理解了问题。
3. 回答幻觉比例
- 定义:评估系统的回答中是否存在“幻觉”(即模型生成了与知识库不符的内容),以及幻觉的比例。
- 量纲:0-1
- 0:回答全部是模型幻觉,无任何依据。
- 1:回答完全基于查找到的知识片段,无任何幻觉。
4. 回答正确性
- 定义:评估系统的回答是否正确且充分解答了用户的问题,是最核心的评估指标之一。
- 量纲:0-1
- 0:回答完全错误或不完整。
- 1:回答完全正确且完整。
5. 逻辑性
- 定义:评估系统回答的逻辑性是否连贯,是否出现前后矛盾或逻辑混乱的情况。
- 量纲:0-1
- 0:回答中出现明显的逻辑错误或前后矛盾。
- 1:回答逻辑连贯,无任何矛盾。
6. 通顺性
- 定义:评估系统回答的语句是否通顺、合乎语法,是否容易理解。
- 量纲:0-1
- 0:回答中存在明显的语法错误或表达不清。
- 1:回答语句通顺,无语法错误。
7. 智能性
- 定义:评估系统回答的拟人化程度,是否能够体现出智能性,使用户难以区分是人工还是机器生成的回答。
- 量纲:0-1
- 0:回答表现出明显的机械性或低智能性。
- 1:回答高度拟人化,智能性强。
3.简单自动评估
在大模型的评估中,由于生成模型的答案往往是开放式的、主观的,导致评估的复杂性大大增加。为了简化评估过程,尽管这可能会在一定程度上牺牲准确性,我们可以通过将主观题转化为客观题来实现自动化评估。通过构造客观题和计算标准答案相似度,我们可以在一定程度上简化大模型生成结果的评估过程。这种方法的优势在于它可以实现自动化评估,减少人工干预的成本。然而,这些方法的应用也有一定的局限性,尤其是在处理复杂的、没有明确标准答案的问题时。因此,在实际应用中,需要根据具体的业务场景权衡评估的简便性和准确性。以下介绍两种常用的方法:
1. 构造客观题
- 方法概述:
- 为了将主观题转化为客观题,我们可以根据问题的实际内容设计一系列具有明确标准答案的子问题。通过这些子问题的回答来间接评估模型的整体回答。
- 应用示例:
- 假设用户的问题是“为什么天空是蓝色的?”,原本这个问题的回答可能很主观,涉及不同的角度和解释。
- 我们可以设计几个具体的客观子问题,如“天空的颜色是由什么决定的?”、“晴天时天空通常呈现什么颜色?”等。
- 通过评估这些子问题的回答是否正确,来间接判断原问题的回答质量。
2. 计算标准答案相似度
- 方法概述:
- 对于一些没有固定标准答案的问题,可以预先定义一个或多个参考答案。然后,通过计算模型生成的答案与参考答案之间的相似度来进行评估。
- 相似度的计算可以使用多种技术,例如词袋模型、词嵌入(如 Word2Vec)、余弦相似度、语义匹配模型等。
- 应用示例:
- 对于问题“简述水的三种状态”,参考答案可能是“水有三种状态:固态(冰)、液态(水)、气态(水蒸气)。”
- 模型生成的答案如果是“水可以是冰、液体或气体”,我们可以计算它与参考答案的相似度。相似度越高,说明模型回答的正确性和完整性越好。
计算相似度的方法在自然语言处理(NLP)中广泛用于评估模型生成的文本与参考文本之间的相似程度。以下是几种常用的计算相似度的方法:
1. BLEU (Bilingual Evaluation Understudy)
- 简介:BLEU 是一种评估机器翻译或文本生成模型输出与参考文本之间相似度的常用指标。它通过计算生成文本和参考文本之间的 n-gram 重合度来评估文本的相似性。
- 计算方法:
- n-gram:BLEU 使用 n-gram 匹配的方式,即计算生成文本中各个 n-gram(n 个连续词的组合)在参考文本中出现的频率。
- 精确度 (Precision):计算每个 n-gram 的精确度,即生成文本中与参考文本匹配的 n-gram 数量占生成文本中 n-gram 总数的比例。
- 加权:为避免生成短句获得高分,BLEU 会计算不同 n-gram(如 1-gram, 2-gram 等)的加权平均值,并引入一个短句惩罚(Brevity Penalty)。
- 公式:
BLEU = Brevity Penalty × exp ( ∑ n = 1 N w n log p n ) \text{BLEU} = \text{Brevity Penalty} \times \exp \left( \sum_{n=1}^{N} w_n \log p_n \right) BLEU=Brevity Penalty×exp(n=1∑Nwnlogpn)
其中, w n w_n wn 是第 n n n 阶 n-gram 的权重,通常均匀分配, p n p_n pn 是第 n n n 阶 n-gram精确度。
2. ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
- 简介:ROUGE 主要用于评估自动文本系统的性能,它通过计算生成摘要和参考摘要之间的重叠情况来衡量质量。ROUGE 有多个变体,如 ROUGE-N(基于 n-gram)、ROUGE-L(基于最长公共子序列)等。
- 计算方法:
- ROUGE-N:计算生成摘要和参考摘要之间 n-gram 的重叠情况,可以计算精确度、召回率和 F1 分数。
- ROUGE-L:基于最长公共子序列 (Longest Common Subsequence, LCS),评估生成摘要和参考摘要之间的词序和结构相似度。
- 应用:ROUGE 常用于文本摘要、机器翻译等领域。
3. Cosine Similarity (余弦相似度)
- 简介:余弦相似度是衡量两个向量(通常是文本的词向量表示)之间夹角余弦值的指标,用于评估文本内容的相似性。
- 计算方法:
- 先将文本表示为向量(如通过 TF-IDF 或词嵌入模型),然后计算两个向量的余弦相似度:
Cosine Similarity = A ⋅ B ∥ A ∥ ∥ B ∥ \text{Cosine Similarity} = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} Cosine Similarity=∥A∥∥B∥A⋅B
其中, A \mathbf{A} A和 B \mathbf{B} B是两个文本的向量表示, ⋅ \cdot ⋅ 表示向量点积, ∥ A ∥ \|\mathbf{A}\| ∥A∥ 和 ∥ B ∥ \|\mathbf{B}\| ∥B∥ 是向量的模。
- 先将文本表示为向量(如通过 TF-IDF 或词嵌入模型),然后计算两个向量的余弦相似度:
- 应用:余弦相似度广泛用于文本分类、信息检索等任务中。
4. Jaccard Similarity (杰卡德相似度)
- 简介:Jaccard 相似度用于衡量两个集合之间的相似度,特别是词集的重合度。
- 计算方法:
- 计算两个集合交集的大小与并集的大小的比值:
Jaccard Similarity = ∣ A ∩ B ∣ ∣ A ∪ B ∣ \text{Jaccard Similarity} = \frac{|A \cap B|}{|A \cup B|} Jaccard Similarity=∣A∪B∣∣A∩B∣
其中, A A A 和 B B B 是两个集合, ∣ A ∩ B ∣ |A \cap B| ∣A∩B∣ 是交集的大小, ∣ A ∪ B ∣ |A \cup B| ∣A∪B∣ 是并集的大小。
- 计算两个集合交集的大小与并集的大小的比值:
- 应用:用于文本的相似度计算,特别是在短文本和标签匹配中。
3. 使用大模型进行评估
在大模型评估中,传统的人工评估和自动评估各有优缺点:人工评估虽然准确、全面,但耗时费力;自动评估则速度快、成本低,但在复杂性和准确性上有所欠缺。为了结合两者的优点,我们可以利用大模型自身的能力来进行评估,这种方法不仅快捷,而且可以在一定程度上保留人工评估的全面性和准确性。
1. 利用大模型进行评估的优势
- 速度与规模:大模型可以快速处理大量的验证案例,实现与自动评估相似的速度和规模优势。
- 多维度评估能力:通过设计合理的 Prompt,大模型可以执行多维度的评估,类似于人工评估的量化方式。例如,可以要求大模型从正确性、一致性、逻辑性、通顺性等多个维度对答案进行打分。
- 灵活性与智能性:大模型可以根据不同的评估任务动态调整评估标准和维度,具有高度的灵活性。同时,模型的语言理解能力使得它能够评估复杂的主观题,并给出合理的反馈。
2. 实施方法:Prompt Engineering
为了让大模型充当评估者,我们需要精心设计 Prompt,使其能够准确理解评估任务并执行相应的评估操作。以下是实现这一目标的几个步骤:
-
定义评估标准:
- 明确需要评估的维度和指标,例如正确性、逻辑性、语法通顺性等。
- 确定评分标准和范围,例如每个维度的评分可以是0-1或0-10不等。
-
构建评估 Prompt:
- 在 Prompt 中,明确要求大模型对给定的答案进行多维度评估。例如:
请对以下答案从正确性、逻辑性、语法通顺性和智能性四个维度进行评估,每个维度的评分为0-1,并给出相应的理由。
问题:{问题内容}
答案:{模型生成的答案} - 大模型会根据给定的标准对每个维度打分,并提供简要的评估理由。
- 在 Prompt 中,明确要求大模型对给定的答案进行多维度评估。例如:
-
分析与反馈:
- 收集大模型给出的多维度评估结果,计算总体得分或平均分,以此作为系统性能的衡量标准。
- 根据评估结果,进一步优化模型或 Prompt,以提高生成结果的质量。
4 混合评估
在大模型的评估过程中,各种评估方法各有优缺点。为了实现评估的全面性、准确性和高效性,我们推荐将多种评估方法结合起来,针对不同维度选择最适合的评估方式。这种混合评估方法能够兼顾不同评估目标的特性,从而获得更加可靠的评估结果。
以下是一个针对个人知识库助手项目的混合评估方案示例:
1. 客观正确性
- 定义:评估模型在面对有固定正确答案的问题时,是否能够提供正确的回答。
- 评估方法:使用构造客观题的方式。例如,将复杂的问题分解为可以验证的子问题,每个子问题都有标准答案,通过模型对这些子问题的回答来评估客观正确性。
2. 主观正确性
- 定义:评估模型在处理没有固定正确答案的主观问题时,是否能够提供正确、全面的回答。
- 评估方法:利用大模型进行评估。通过精心设计的 Prompt,让大模型对生成的答案进行自我评估,从而判断其正确性和全面性。
3. 智能性
- 定义:评估模型的回答是否具有拟人化特征,是否能够使用户感受到回答的智能性。
- 评估方法:由于智能性评估较为主观,且难以通过自动化手段完全准确地判断,推荐少量抽样案例并通过人工评估来进行。人工评估员可以从回答的自然流畅程度、对话的连续性等方面来判断智能性。
4. 知识查找正确性
- 定义:评估模型从知识库中检索到的知识片段是否正确且足以回答用户的问题。
- 评估方法:使用大模型进行评估,要求大模型判定检索到的知识片段是否足以回答问题。此过程可以结合主观正确性的评估结果,进一步分析是否存在“幻觉”现象(即主观回答正确但知识查找不正确)。
参考
https://datawhalechina.github.io/llm-universe/#/C5/1.如何评估 LLM 应用?id=_1-验证评估的一般思路