Spring-AI Model Evaluator模型评估

为什么需要模型评估

  • 传统的软件测试是“确定性”的(输入 A 必得 B),但 AI 的输出是“概率性”的。你改了一个 Prompt 或者换了一个 Embedding 模型,效果到底是变好了还是变差了?靠人工盲测是不可能的。这就是 Evaluator 存在的意义。

Spring-AI是如何进行评估的

  • 在 Spring AI 中,Evaluator 的核心逻辑遵循 “LLM-as-a-Judge”(大模型即裁判)模式。

评估相关的代码

@FunctionalInterface
public interface Evaluator {
	EvaluationResponse evaluate(EvaluationRequest evaluationRequest);
}

public class EvaluationRequest {
	private final String userText;
	private final List<Document> dataList;
	private final String responseContent;
}

public class EvaluationResponse {
	private final boolean pass;
	private final float score;
	private final String feedback;
	private final Map<String, Object> metadata;
}
  • Evaluator对应的实现
    • RelevancyEvaluator:它主要评估 “回答(responseContent)”是否真正解决了“问题(userText)”
    • FactCheckingEvaluator:它主要评估 “回答(responseContent)”与“上下文(dataList)” 之间的一致性。

执行流程如下:

  1. 构造上下文:EvaluationRequest 包含了三类关键数据:
    • userText: 用户的原始问题。
    • responseContent: AI 生成的回答。
    • dataList(Context): 检索到的原始文档片段(用于 Fact-checking)。
  2. 内置 Prompt 模版:每种 Evaluator 内部都持有一个精心编写的系统提示词(System Prompt)。这些提示词会命令“裁判模型”以批判性的视角审查输入。
  3. 调用裁判模型:Spring AI 将上述数据和评估 Prompt 发送给一个高性能模型(通常建议用 GPT-4o 或 Qwen-Max 这种逻辑能力强的模型作为裁判,哪怕你业务模型用的是更便宜的模型)。
  4. 结构化解析:裁判模型返回结果(通常是 JSON 或特定格式),Evaluator 将其解析为 EvaluationResponse,其中包含:
    • pass: 是否通过(布尔值)。
    • score: 评分(通常 0-1 或 1-5)。
    • feedback: 裁判给出的具体理由(这对调试 Prompt 极其有用)。

FactCheckingEvaluator和RelevancyEvaluator区别

FactCheckingEvaluator

核心关注点:事实核查(FactChecking)

  • 原理:它主要评估 “回答(responseContent)”与“上下文(dataList)” 之间的一致性。
  • 裁判逻辑:裁判模型会检查:回答中的每一个事实陈述,是否都能在提供的参考文档中找到依据?
  • 判定为“失败”的情况
    • 回答中包含了文档里没有提到的数字、人名或结论。
    • 回答与文档内容发生了冲突(文档说 A 是对的,回答说 A 是错的)。
  • 实战场景:主要用于 RAG 系统 的安全性检查,确保 AI 没在瞎编。

RelevancyEvaluator

核心关注点:相关性 (Relevancy)

  • 原理:它主要评估 “回答(responseContent)”是否真正解决了“问题(userText)”
  • 裁判逻辑:裁判模型会忽略参考文档,只看用户问了什么,以及 AI 答了什么。它评估的是回答是否切题、是否完整、是否简洁地满足了用户意图。
  • 判定为“失败”的情况
    • 答非所问(用户问天气,回答了股价)。
    • 回答虽然是正确的,但过于笼统,没有解决问题的核心需求。
  • 实战场景:用于优化 意图识别Prompt 的引导效果

避坑指南

  • 裁判模型的等级必须高于(或等于)被评估模型
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐