18.AI Eval系统:让AI能力提升“可量化,而不是凭感觉”

到目前为止,我们已经完成了一个完整 AI 客服系统:

  • Prompt工程
  • RAG系统
  • Memory系统
  • Tools系统
  • AI编排层

项目地址:你也可以去 GitHub 上获取相配套的项目代码。

但有一个关键问题:

❌ 你怎么证明它真的变强了?

一、AI系统最大的误区

很多人做 AI 系统时会说:

  • "加了 RAG 效果好多了"
  • "Prompt优化后更准了"
  • "Memory让体验更好了"

👉 但问题是:

❗ 这些都是"感觉",不是"证据"


二、为什么必须要 Eval 系统?

一句话:

👉 没有评估,所有优化都是玄学

AI Eval 要解决的是:

  • ❌ 不再靠"感觉变好了"
  • ✅ 用数据证明变好了

三、AI能力演进的五个阶段

text 复制代码
BASE      → 基础模型
PROMPT    → Prompt优化
RAG       → 知识增强
MEMORY    → 上下文增强
FULL      → 完整系统

四、评估核心问题设计

统一问题:

"我的订单123为什么还没有发货?"


期望关键词:

  • 订单
  • 发货
  • 物流
  • 状态

五、评估系统架构

text 复制代码
EvaluationRunner
        ↓
AiEvaluator
        ↓
AiService(不同模式)
        ↓
EvaluationReport

六、核心代码设计

🧠 1. AiVersion

java 复制代码
public enum AiVersion {
    BASE,
    PROMPT,
    RAG,
    MEMORY,
    FULL
}

🧪 2. EvaluationCase

java 复制代码
/**
 * 单次评估用例。
 */
public record EvaluationCase(
        String question,
        List<String> expectedKeywords,
        String category
) {
}

📊 3. AiEvaluator(评分器)

java 复制代码
/**
 * 基于期望关键词的简单命中率评分(0--100)。
 */
public final class AiEvaluator {

    private AiEvaluator() {
    }

    public static int score(String answer, EvaluationCase caze) {
        if (answer == null || answer.isBlank()) {
            return 0;
        }
        List<String> keys = caze.expectedKeywords();
        if (keys == null || keys.isEmpty()) {
            return 100;
        }
        int hit = 0;
        for (String k : keys) {
            if (k != null && !k.isBlank() && answer.contains(k.trim())) {
                hit++;
            }
        }
        return (int) Math.round(100.0 * hit / keys.size());
    }

    public static String explain(String answer, EvaluationCase caze) {
        List<String> keys = caze.expectedKeywords();
        if (keys == null || keys.isEmpty()) {
            return "未配置关键词,默认满分逻辑由调用方处理。";
        }
        List<String> hit = new ArrayList<>();
        List<String> miss = new ArrayList<>();
        String a = answer == null ? "" : answer;
        for (String k : keys) {
            if (k == null || k.isBlank()) {
                continue;
            }
            String t = k.trim();
            if (a.contains(t)) {
                hit.add(t);
            } else {
                miss.add(t);
            }
        }
        return "命中 " + hit.size() + "/" + keys.size() + ":" + hit
                + (miss.isEmpty() ? "" : ";未命中:" + miss);
    }
}

🚀 4. EvaluationRunner(核心执行器)

java 复制代码
/**
 * 对 {@link EvaluationCase} 在全部 {@link AiVersion} 上跑通并汇总评分。
 */
public final class EvaluationRunner {

    public EvaluationReport run(EvaluationCase evaluationCase) {
        Map<AiVersion, VersionEvaluation> map = new LinkedHashMap<>();
        for (AiVersion v : AiVersion.values()) {
            RecordingLlmClient llm = new RecordingLlmClient();
            AiChatService svc = CapabilityChatFactory.build(v, llm);
            String answer = svc.chat("eval-session-" + v.name(), evaluationCase.question());
            int score = AiEvaluator.score(answer, evaluationCase);
            String explanation = AiEvaluator.explain(answer, evaluationCase);
            map.put(v, new VersionEvaluation(v, answer, score, explanation));
        }
        return new EvaluationReport(evaluationCase, map);
    }
}

七、关键设计:AI能力对比

BASE

  • ❌ 胡答
  • ❌ 无业务知识

PROMPT

  • ⚠️ 更规范
  • ⚠️ 但不准确

RAG

  • ✅ 出现业务信息
  • ⚠️ 不稳定

MEMORY

  • ✅ 有上下文
  • ⚠️ 仍可能缺知识

FULL SYSTEM

  • 🚀 正确 + 稳定 + 可解释

八、这个系统的真正价值

🧠 1. 从"感觉优化" → "数据优化"

📊 2. 每个模块增益可视化

🧪 3. 支持回归测试(非常重要)


九、AI系统的完整闭环

text 复制代码
开发
  ↓
优化 Prompt / RAG / Memory / Tools
  ↓
Eval验证
  ↓
继续优化

十、这一层的意义(非常关键)

如果说:

  • ai-service = 大脑
  • ai-rag = 知识
  • ai-tools = 手

那么:

👉 ai-eval = 体检系统(让AI变得可衡量)


十一、总结

这一篇你完成了整个 AI 系统的最后一块拼图:

👉 从"能用的系统"升级为"可验证的工程体系"


🚀 下一步建议(非常关键)

你现在其实已经可以进入更高级阶段:

👉 Agent系统(Auto-Router + Tool Chain + Multi-step reasoning)

相关推荐
后端小肥肠17 小时前
公众号漫画卷疯了?我用漫画工厂Skill,3天带群友入池,小白也能抄作业
人工智能·aigc·agent
扑兔AI17 小时前
扑兔AI基于公开数据的B2B客源筛选与意向评分系统设计
人工智能·生活
数智化精益手记局17 小时前
什么是设备维护管理?设备维护管理包含哪些内容?
大数据·网络·人工智能·安全·信息可视化
飞Link18 小时前
iOS 27 开启“AI 开放时代”:Siri 驱动可更换背后的技术范式迁移
人工智能·ios
AllData公司负责人18 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
飞Link18 小时前
GPT-5.5 Instant 震撼发布:Realtime-2 API 如何重新定义多模态交互?
人工智能·gpt·microsoft·交互·语音识别
飞Link18 小时前
具身智能港亮相深圳:从“大脑”到“身体”,开启人形机器人产业新纪元
人工智能·机器人
IT谢彪18 小时前
记录Dify 安装与使用过程
人工智能
飞Link18 小时前
AI 与能源的双向奔赴:深度解读 2026《双向赋能》行动方案
人工智能·能源
机器之心18 小时前
这样问DeepSeek,能「偷」到数据?
人工智能·openai