Agent Engineering 课程阅读

在 GitHub 查看原文

本页目录

Lesson 08 练习

code.py 里的代码,运行 python lessons/08_evaluation/code.py 观察变化。 本课每个评估题要调用多次 LLM(检索+生成+3次打分),5 题约 20 次调用,成本稍高,可用 glm-4-flash。


练习 1:诊断一道"低分题"并优化

跑完后,找一道三维分数最低的题。根据它的诊断,针对性优化:

  • 如果是检索相关性低 → 调整 top_k、或给那条文档补充更清晰的表述
  • 如果是忠实度低 → 加强 generate_answer 里的防幻觉 prompt
  • 如果是答案相关性低 → 改进 prompt 要求更切题

优化后再跑一次,看那道题的分数有没有提升。

思考:这其实就是真实 RAG 迭代的过程——评估→诊断→优化→再评估的闭环。


练习 2:对比不同 chunk_size 的评估分数

回顾 Lesson 04,把 DOCUMENTS 改成更长的段落(比如把年假、病假合并成一条长文档),用不同 chunk_size 切分后建库,再跑评估。

对比:chunk_size 大 vs 小,三维分数有什么差异?

思考:评估能帮你数据化地选 chunk_size,而不是拍脑袋定一个值。这也是为什么评估体系是生产级 RAG 的标配。


练习 3:扩充评估集,覆盖更多场景

EVAL_SET 里加几道题:

# 多意图题
{"question": "年假和病假有什么区别?", ...}
# 需要推理的题
{"question": "我入职 6 年了,比入职 2 年的多几天年假?", ...}
# 否定式问题
{"question": "试用期员工不能做什么?", ...}

跑评估,看哪些类型的问题 RAG 表现差。

思考:评估集要覆盖各种题型,才能暴露系统的真实短板。只测简单题会给你"系统很好"的错觉。


练习 4:换用真正的 RAGAS 框架(进阶)

本课是手写简化版。试试业界标准框架:

pip install ragas

然后用 RAGAS 跑同样的评估(它内部也是 LLM-as-a-Judge,但指标定义更精细)。

思考:对比手写版和 RAGAS 的分数差异。理解了原理后用框架,你会知道每个分数背后的含义,而不是把框架当黑盒。


✅ 完成本课后,你应该能回答

  1. 为什么不能凭感觉判断 RAG 好不好?
  2. RAGAS 的三个核心指标分别评估哪个环节?(检索/生成)
  3. 忠实度这个指标为什么能区分"检索的锅"还是"生成的锅"?
  4. 怎么构造一个评估集?需要标注哪些东西?
  5. LLM-as-a-Judge 是什么?它的优缺点?
  6. 评估→诊断→优化的闭环是怎么运作的?