上一篇速通 AI(八):Agent 开发与生产部署 — PEFT 微调、量化、MCP、LangGraph、多智能体。

目标:掌握 RAG 和 Agent 系统的评估方法论——RAGAS 框架、Agent 评估五维度、幻觉检测。

前置要求:第七篇(RAG 流程、检索指标)、第八篇(Agent 概念、工具调用)


本阶段知识依赖图

flowchart TD
    A["RAG 系统(第七篇)"] --> B["RAGAS 评估框架"]
    A --> C["检索指标回顾"]
    D["Agent 系统(第八篇)"] --> E["Agent 评估五维度"]
    D --> F["幻觉检测"]
    B --> G["评估体系落地"]
    E --> G
    F --> G

1. 为什么评估是面试必问

面试官问"你怎么评估你的 RAG 系统效果",其实是在考察三个维度:

  1. 有没有真正上过线——上线的系统都需要评估,“让同事试了几个问题感觉还行"是最大减分项
  2. 能不能识别系统的薄弱环节——知道哪里好、哪里不好,才能有针对性地优化
  3. 有没有数据驱动的优化思维——用数据说话,而非凭感觉

评估不是"锦上添花”,而是"地基"。没有评估的 RAG 系统就像没有仪表盘的飞机——你不知道它在往哪飞。


2. RAGAS 评估框架

RAGAS 是目前最主流的 RAG 评估框架,由 Es et al.(2023)提出。

2.1 四大核心指标

指标 1:Faithfulness(忠实度)——模型的回答是否忠实于检索到的上下文?有没有"编"上下文中不存在的信息?

计算方式:LLM 将回答拆分为若干独立声明(claims)→逐一验证每个声明是否能在上下文中找到依据→Faithfulness = 有依据的声明数 / 总声明数。

数值示例

上下文:“LLaMA 3 于 2024 年 4 月发布”

回答:“LLaMA 3 于 2024 年 4 月发布,参数量为 700 亿”

  • 声明 1:“LLaMA 3 于 2024 年 4 月发布”→上下文中有依据
  • 声明 2:“参数量为 700 亿”→上下文中找不到依据
  • Faithfulness = 1/2 = 0.5

指标 2:Answer Relevancy(回答相关性)——回答是否切题?是否直接回答了用户的问题?

计算方式:用 LLM 从回答中反推可能的问题→计算反推问题与原始问题的相似度→相似度越高,说明回答越切题。

指标 3:Context Precision(上下文精确度)——检索到的上下文中,相关内容是否排在前面?衡量检索的精确度。

指标 4:Context Recall(上下文召回率)——回答所需的所有信息是否都被检索到了?衡量检索的召回率。

指标衡量对象核心问题取值范围
Faithfulness生成质量回答有没有编造?[0, 1],越高越好
Answer Relevancy生成质量回答切不切题?[0, 1],越高越好
Context Precision检索质量相关文档排在前面吗?[0, 1],越高越好
Context Recall检索质量所有信息都检索到了吗?[0, 1],越高越好

2.2 RAGAS 代码示例

from ragas import evaluate
from ragas.metrics import (
    faithfulness, answer_relevancy,
    context_precision, context_recall
)
from datasets import Dataset

eval_data = {
    "question": ["什么是 LoRA?"],
    "answer": ["LoRA 是一种低秩适应方法,通过添加低秩矩阵来微调大模型。"],
    "contexts": [[
        "LoRA(Low-Rank Adaptation)通过在冻结的预训练权重旁边注入低秩分解矩阵来实现高效微调..."
    ]],
    "ground_truth": [
        "LoRA 是参数高效微调方法,使用低秩矩阵分解在不修改原始权重的情况下适应下游任务。"
    ]
}

dataset = Dataset.from_dict(eval_data)

# RAGAS 需要配置 LLM 用于指标计算(如拆分声明、验证依据)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision, context_recall],
    llm=llm,
)
print(result)
# {'faithfulness': 1.0, 'answer_relevancy': 0.92,
#  'context_precision': 0.95, 'context_recall': 0.88}

RAGAS 的局限性:RAGAS 的指标计算依赖 LLM(如拆分声明、验证依据),因此评估结果本身也有噪声——LLM 可能漏拆声明或误判依据。此外,RAGAS 主要评估单轮问答,对多轮对话和 Agent 场景覆盖不足。实际使用时建议结合人工抽检验证评估结果的合理性。

2.3 检索评估指标回顾

第七篇介绍了检索评估的基础指标,这里做一个快速回顾:

指标公式含义
Recall@k$\frac{\text{检索到的相关文档数}}{\text{全部相关文档数}}$召回率——找到了多少
Precision@k$\frac{\text{检索结果中相关的数}}{k}$精确率——找的准不准
MRR$\frac{1}{\|Q\|}\sum\frac{1}{\text{rank}_i}$第一个相关文档排多高
NDCG$\frac{\text{DCG}}{\text{IDCG}}$排名位置的加权得分

3. Agent 评估

Agent 评估比 RAG 更复杂,因为 Agent 会做决策、使用工具、多步执行。

3.1 Agent 评估的五个维度

维度衡量什么评估方式
任务完成率Agent 最终是否完成了用户的目标?最直观但最粗粒度的指标
工具调用准确率选对了工具吗?参数传对了吗?对比"正确工具调用序列"
规划质量拆解任务的步骤是否合理?有没有多余或遗漏的步骤
推理正确性即使最终结果正确,推理过程是否合理?正确的结果可能来自错误的推理(运气好)
资源效率花了多少 token / API 调用 / 时间?两个都能完成任务的 Agent,效率差 10 倍

3.2 评估方法

方法 1:Golden Test Cases(黄金测试集)

人工构造 50-100 个典型任务,每个任务有明确的"正确答案"和"正确步骤",自动运行 Agent 并对比。

方法 2:LLM-as-Judge

用 GPT-4 评估 Agent 的推理过程和最终结果。设计评估 prompt:“请评估以下 Agent 的执行过程,从 1-5 打分,评估维度包括:任务理解、工具选择、推理逻辑、最终结果。”

方法 3:A/B 测试

线上两个版本同时跑,对比用户满意度、任务完成率、平均交互轮数。

3.3 面试答题框架

面试官问"你怎么评估 Agent"时的参考回答:

“Agent 评估从五个维度入手:任务完成率、工具调用准确率、规划质量、推理正确性、资源效率。实操上,我们先构建黄金测试集(50-100 个典型任务),自动运行后对比正确答案。对于无法穷举正确答案的任务,用 LLM-as-Judge 做自动评估。线上用 A/B 测试对比用户满意度。”


4. 幻觉检测

幻觉是 LLM 应用最致命的问题——用户信任你的系统,但系统在"编"。

4.1 幻觉的三种类型

类型定义示例
事实性幻觉生成了不符合事实的信息“爱因斯坦获得了 1922 年诺贝尔物理学奖”(实际是 1921 年)
忠实性幻觉回答与检索到的上下文不一致上下文说"A 公司营收 100 亿",模型回答"A 公司营收 200 亿"
推理性幻觉推理过程中引入了不存在的逻辑“因为 A > B,B > C,所以 A < C”

4.2 检测方法

方法 1:RAGAS Faithfulness

检测忠实性幻觉——将回答拆分为声明,逐个验证是否能在上下文中找到依据。这是最直接的检测方式,已经在 §2.1 中详细介绍。

方法 2:SelfCheckGPT

让模型多次回答同一问题,对比一致性。如果模型对自己的回答都不一致,说明大概率在"编"。

原理:对同一个问题,用不同的 Temperature 或不同的随机种子生成 $N$ 次回答→对比这 $N$ 次回答中每个声明的一致性→一致性低的声明很可能是幻觉。

方法 3:事实核查 API

与知识库或搜索引擎交叉验证。适合事实性幻觉的检测——把模型回答中的关键事实提取出来,用搜索引擎验证。

方法检测类型优点缺点
RAGAS Faithfulness忠实性幻觉精确,有上下文依据只能检测与上下文不一致的部分
SelfCheckGPT事实性+推理性不需要参考答案需要多次生成,成本高
事实核查 API事实性幻觉覆盖面广依赖外部服务

5. 评估体系落地实践

5.1 建立评估 Pipeline

评估不是一次性的事,而是一个持续的流程:

flowchart LR
    A["构建评估数据集<br/>(50-100 个典型问题)"] --> B["自动运行<br/>RAG/Agent"]
    B --> C["计算指标<br/>RAGAS + 自定义指标"]
    C --> D["结果可视化<br/>仪表盘 + 趋势图"]
    D --> E["识别薄弱环节<br/>哪个指标最差?"]
    E --> F["针对性优化<br/>Chunk/Embedding/Prompt"]
    F --> B

5.2 持续监控与迭代

线上评估 vs 离线评估

维度离线评估线上评估
数据人工构建的测试集真实用户请求
指标RAGAS、精确率、召回率用户满意度、任务完成率
频率每次模型/Prompt 更新后持续监控
成本低(自动运行)高(需要标注)

评估驱动的优化循环:发现问题→定位原因→优化→重新评估→确认改善。每次只改一个变量,用评估数据验证效果。


幻觉的根本原因

原因描述缓解方法
训练数据噪声训练数据中包含错误或过时信息数据清洗、知识截止日期标注
解码策略采样(Temperature>0)会引入随机性,可能选到低概率但错误的 token降低 Temperature、使用 Top-P 过滤
知识边界模糊模型对不确定的知识不会主动说"不知道"Prompt 中要求"不确定时说不知道"、置信度校准
长上下文信息丢失相关信息在上下文中间被忽略(Lost in the Middle)Rerank、减少上下文长度
训练目标偏差训练目标是"生成流畅文本"而非"生成正确文本"RLHF/DPO 对齐训练

大模型能力评测指标

基准测试内容评估方式
MMLU57 个学科的知识问答多选题准确率
HumanEval代码生成能力生成代码的通过率
GSM8K小学数学推理解题准确率
TruthfulQA生成真实回答的能力人类评估
MT-Bench多轮对话质量GPT-4 评分
Chatbot Arena综合对话能力ELO 排名(人类盲评)

推荐补充资源

知识点推荐资源说明
RAGASRAGAS 论文评估框架原始论文
RAGAS 文档RAGAS 官方文档API 参考
RAGAS GitHubRAGAS GitHub开源实现
SelfCheckGPTSelfCheckGPT 论文幻觉检测方法
ARESARES 论文RAG 自动评估
AgentBenchAgentBench 论文Agent 评估基准
LLM-as-JudgeJudgeLM 论文LLM 评估 LLM

模块小结:RAG 与 Agent 评估体系

你学到了什么为什么重要
RAGAS 四大指标量化 RAG 系统的检索和生成质量
Agent 评估五维度从多个角度评估 Agent 表现
幻觉检测三种方法识别和防范 LLM 最致命的问题
评估体系落地建立持续优化的闭环

下一篇预告:本文建立了评估方法论。在 速通 AI(十):生产环境工程化 中,你将学习如何把 RAG 和 Agent 从 Notebook 阶段推向生产——Langfuse 可观测性、安全防护、错误处理、成本优化。