Jean's Blog

一个专注软件测试开发技术的个人博客

0%

大语言模型(LLM)与检索增强生成(RAG)评估介绍

在人工智能的浪潮之巅,大型语言模型(LLM)无疑是最耀眼的明星之一。它们以其强大的自然语言理解和生成能力,正在重塑我们与技术交互的方式。然而,为了充分释放LLM的潜力并确保其输出的可靠性,评估变得至关重要。特别是对于结合了外部知识库的检索增强生成(RAG)系统,评估的维度和复杂性更是与日俱增。

本篇技术博客将深入探讨LLM和RAG的评估,从基本概念入手,详细介绍各自的评估维度、具体评估方法,并对现有的主流评估框架进行梳理和介绍,旨在为开发者和研究人员提供一份详尽的评估实践指南。

什么是LLM和RAG?

大型语言模型(Large Language Model, LLM)

大型语言模型(LLM)是一种基于深度学习的人工智能模型,通过在海量文本数据上进行训练,学习语言的模式、结构和知识。这使得它们能够执行广泛的自然语言处理(NLP)任务,如文本生成、翻译、摘要、问答等。常见的LLM包括GPT系列(如GPT-4)、LLaMA、Gemini等。它们的核心能力在于理解输入提示(Prompt)并生成连贯、相关的文本。

检索增强生成(Retrieval-Augmented Generation, RAG)

尽管LLM功能强大,但它们也存在一些固有的局限性,例如知识截止日期(训练数据之外的新知识无法获知)和可能产生“幻觉”(生成不符合事实的内容)。

为了克服这些问题,检索增强生成(RAG) 技术应运而生。RAG是一种将LLM与外部知识库(如公司的内部文档、数据库或实时更新的网站)相结合的架构。其工作流程通常如下:

  1. 检索(Retrieval):当用户提出问题时,RAG系统首先会从外部知识库中检索与问题最相关的信息片段。
  2. 增强(Augmentation):系统将检索到的信息作为上下文(Context)与用户的原始问题一起提供给LLM。
  3. 生成(Generation):LLM基于增强后的提示(原始问题+检索到的上下文)来生成答案。

通过这种方式,RAG系统能够生成更准确、更具时效性且有据可查的回答。

LLM评估:衡量语言模型的“智慧”

对LLM的评估旨在量化其在各种任务上的表现,并确保其输出的质量和安全性。

评估哪些方面?

对LLM的评估通常涵盖以下几个核心方面:

  • 准确性(Accuracy)与事实性(Factuality):模型生成的内容是否符合事实,能否准确回答知识性问题。
  • 流畅性(Fluency):生成的文本是否语法正确、自然流畅,符合人类语言习惯。
  • 连贯性(Coherence):文本的各个部分之间逻辑是否清晰,上下文是否一致。
  • 相关性(Relevance):生成的回答是否与用户提出的问题或指令紧密相关。
  • 有用性(Helpfulness):模型提供的答案是否能有效解决用户的问题。
  • 安全性(Safety)与无害性(Harmlessness):评估模型是否会生成有偏见、有毒、歧视性或其他有害内容。
  • 鲁棒性(Robustness):模型在面对有噪声、对抗性或不常见的输入时,其性能是否稳定。
  • 效率(Efficiency):模型的响应速度(延迟)和计算资源消耗。

如何进行评估?

评估LLM的方法可以分为两大类:人工评估自动化评估

人工评估

人工评估被认为是评估语言质量(如流畅性、连贯性)的“黄金标准”。评估人员根据预先定义的标准对模型输出进行打分。

  • 优点:能够捕捉自动化指标难以衡量的细微差别,更符合人类的主观感受。
  • 缺点:成本高、耗时长、可扩展性差,且评估结果可能受评估员主观性的影响。

自动化评估

自动化评估使用各种指标和基准测试集来快速、大规模地衡量模型性能。

  • 传统NLP指标

    • BLEU (Bilingual Evaluation Understudy):常用于机器翻译,通过比较生成文本和参考文本中n-gram的重叠度来评估相似性。
    • ROUGE (Recall-Oriented Understudy for Gisting Evaluation):常用于文本摘要,通过比较生成摘要和参考摘要的n-gram召回率来评估。
    • Perplexity (PPL):衡量语言模型对其预测样本的惊讶程度。困惑度越低,表示模型对文本的预测能力越好。
  • 基于基准(Benchmark)的评估:

    使用标准化的数据集来测试模型在特定任务上的表现。常见的基准包括:

    • MMLU (Massive Multitask Language Understanding):涵盖57个学科的知识问答,测试模型的通识知识和解决问题的能力。
    • HellaSwag:评估模型在给定上下文后选择最合理续写的能力,考验常识推理。
    • TruthfulQA:专门用于评估模型生成真实、无误导性答案的能力。
  • 基于模型的评估(LLM-as-a-Judge):

    这是一种新兴的评估方法,即利用一个更强大或专门微调过的LLM(作为“裁判”)来评估另一个LLM的输出质量。通过精心设计的提示,裁判LLM可以对被评估模型的输出进行打分或比较。

RAG评估:深入“检索”与“生成”的双重考验

RAG系统的评估比标准LLM更为复杂,因为它包含检索生成两个核心组件。一个环节的失败都可能导致最终输出的质量下降。因此,我们需要对这两个部分分别进行评估,同时也要评估它们的协同效果。

评估哪些方面?

针对“检索”组件的评估

检索器的目标是从知识库中准确、全面地找到与用户查询相关的信息。

  • 上下文精确率(Context Precision):检索到的上下文中,与问题相关的比例有多高?这个指标关注检索结果的信噪比。
  • 上下文召回率(Context Recall):所有相关的上下文信息中,有多大比例被成功检索出来了?这个指标关注检索结果是否全面。
  • 命中率(Hit Rate):对于一个问题,检索器返回的文档中是否至少包含一个相关文档。
  • 平均倒数排名(Mean Reciprocal Rank, MRR):衡量系统将第一个相关文档排在结果列表靠前位置的能力。对于问答场景尤其重要。

针对“生成”组件的评估

生成器的评估不仅要看其语言能力,更要看其利用检索到的上下文的能力。

  • 忠实度(Faithfulness):生成的答案是否完全基于所提供的上下文信息?这是衡量RAG系统是否产生幻觉的关键指标。一个忠实的答案不应包含上下文中未提及或与之相悖的信息。
  • 答案相关性(Answer Relevancy):生成的答案在多大程度上回应了用户的原始问题?即使答案是忠实的,如果它偏离了问题核心,其价值也会大打折扣。
  • 答案正确性(Answer Correctness):将生成的答案与一个“标准答案”(Ground Truth)进行比较,评估其事实上的正确性。

如何进行评估?

评估RAG系统通常需要一个包含(问题,上下文,标准答案)三元组的评估数据集。

  1. 评估检索器
    • 对于给定的问题,运行检索器获取上下文。
    • 计算Context PrecisionContext Recall。这通常需要人工标注或使用强大的LLM来判断检索到的上下文与问题的相关性。
  2. 评估生成器
    • 对于给定的“问题+检索到的上下文”,让生成器生成答案。
    • 评估忠实度:利用LLM作为裁判,判断生成的答案中的每一句话是否都能在提供的上下文中找到依据。
    • 评估答案相关性:利用LLM作为裁判,判断生成的答案与原始问题的相关程度。
    • 评估答案正确性:将生成的答案与标准答案进行比较,可以通过语义相似度或LLM打分来完成。

示例:如何根据提问得出的答案是否符合我的预期

这部分主要依赖于人工评估用户反馈,因为“预期”往往是主观的,很难完全自动化。

具体步骤:

  1. 明确你的“预期”: 在进行评估之前,你需要非常清楚你希望模型如何回答你的问题。你的预期可能包括:
    • 内容准确性: 答案是否完全正确,没有错误信息。
    • 完整性: 答案是否包含了你关心的所有要点。
    • 简洁性: 答案是否冗长,是否有不必要的信息。
    • 语气和风格: 答案的语气(正式、非正式、幽默等)是否符合你的要求。
    • 结构: 答案的组织方式是否清晰,易于阅读。
    • 可溯源性: 如果是RAG系统,是否能指出信息来源。
    • 无“幻觉”: 答案中是否没有虚假信息。
  2. 构建评估问题集: 准备一组能代表你实际使用场景的测试问题。这些问题应该覆盖你的“预期”所涉及的各个方面。
  3. 人工审查答案并打分:
    • 对于每个问题,让一个或多个评估者(最好是领域专家或了解你预期的人)独立审查LLM/RAG系统给出的答案。
    • 针对上述“明确的预期”中的每个维度,为答案打分(例如,1-5分制)。
    • 允许评估者添加详细的文字评论,解释为什么打这个分数,以及答案哪里符合预期,哪里不符合预期。
  4. 聚合和分析结果:
    • 汇总所有问题的分数,计算每个维度的平均分。
    • 分析评分较低的问题和维度,找出系统存在的主要问题。
    • 阅读所有文字评论,从中发现共性的问题模式和潜在的改进点。例如,发现RAG系统经常检索到不相关的信息,或者LLM没有充分利用检索到的上下文。
  5. 迭代和改进:
    • 根据评估结果,调整RAG系统的检索策略、知识库分块方式、嵌入模型、LLM的提示词工程,甚至考虑更换LLM模型。
    • 重新进行评估,观察改进效果。
问题编号 用户问题 RAG/LLM答案 检索到的上下文 (RAG) 准确性 (1-5) 完整性 (1-5) 流畅性 (1-5) 幻觉? (Y/N) 溯源性 (Y/N) 备注/原因
1 4 3 5 N Y 缺少一些细节。
2 2 1 4 Y N 答案与事实不符,且没有引用来源。

主流评估框架概览

为了简化和标准化评估流程,社区开发了许多优秀的评估框架。

通用LLM评估框架

  • Hugging Face Evaluate:一个提供各种NLP评估指标(如BLEU, ROUGE)实现和便捷加载标准数据集(如GLUE, SQuAD)的库。
  • LM Evaluation Harness:一个用于在数百个基准上对LLM进行零样本(zero-shot)和少样本(few-shot)评估的统一框架。
  • OpenAI Evals:OpenAI开源的评估框架,允许开发者创建和运行评估,以衡量模型在不同任务上的性能,并支持自定义评估逻辑。

专注于RAG的评估框架

  • RAGAs (RAG Assessment)

    • 特点:一个专门为RAG管道评估设计的轻量级框架。它的突出优势在于许多评估指标是“无参考”的,即不需要预先准备好的标准答案,仅利用问题、检索到的上下文和生成的答案即可进行评估。
    • 核心指标Faithfulness, Answer Relevancy, Context Precision, Context Recall
    • 工作方式:RAGAs在底层大量使用LLM作为裁判来计算这些指标得分。
  • DeepEval

    • 特点:一个专为LLM应用设计的单元测试框架,类似于Pytest。它将评估视为测试用例,并集成了多种最先进的评估指标。
    • 适用场景:非常适合在开发流程中进行持续的、自动化的回归测试,以确保对RAG管道的修改(如更换模型、调整Prompt)不会导致性能下降。
    • 核心指标:除了RAGAs中的核心指标外,还包括G-Eval(一个更通用的LLM评估方法)、BiasToxicity等。
  • TruLens

    • 特点:一个开源的评估和追踪工具,专注于LLM应用的可解释性和透明度。它不仅评估输出结果,还深入到RAG管道的中间步骤(如检索结果、中间Prompt)进行追踪和分析。
    • 核心理念:通过“三元组”(输入、输出、中间结果)的评估方式,帮助开发者理解模型的决策过程。

总结与展望

对大型语言模型(LLM)和检索增强生成(RAG)系统进行严谨的评估,是构建可信、可靠、高性能AI应用不可或缺的一环。

  • 对于LLM,评估的重点在于其核心的语言能力、知识准确性和安全性。
  • 对于RAG,评估则需要深入到“检索”和“生成”两个层面,特别关注上下文的质量以及生成答案对上下文的忠实度。

随着LLM-as-a-Judge等新评估范式的兴起,以及RAGAs、DeepEval等专用框架的成熟,我们正拥有越来越强大和便捷的工具来量化和提升模型性能。

未来,评估技术将向着更自动化、更全面、更贴近真实应用场景的方向发展。对多模态能力、Agent能力以及长期记忆能力的评估将成为新的研究热点。对于开发者而言,将评估深度整合到应用的整个生命周期中,将是打造卓越AI产品的关键。