Lesson 01 练习
改
code.py里对应的代码,在仓库根目录运行python rag-lessons/01_getting_started/code.py观察变化。 没有标准答案,重点是建立"改动→观察→理解"的直觉。
练习 1:换一个问题(热身)
把 QUESTION 改成下面这些,逐个运行,观察检索到的材料和回答:
"公司中午能休息多久?""我生病了怎么请假?""请告诉我公司的 wifi 密码"← 文档里没有的信息
观察重点:第三个问题,模型应该回答"我不知道"。这正是提示词里"没有就说不知道"在起作用。
练习 2:增删知识
在 KNOWLEDGE 列表里加一条新知识,比如:
"ACME 公司茶水间位于 3 楼东侧,提供免费咖啡和零食,每天 15:00 供应下午茶。",
然后问 "下午茶几点?",看模型能不能答对。
再把这条删掉,问同样的问题,看模型这次回答什么(应该回到"我不知道")。
思考:这说明 RAG 的回答质量本质上取决于什么?
练习 3:调检索数量
把 TOP_K 从 2 改成 4(甚至 5),再问 "我在公司干了 4 年,能休几天年假?"。
观察:检索到的材料变多了,回答有没有变得更好?还是混入了无关内容?
思考:Top-K 是不是越大越好?(提示:后面 Lesson 03 会讲)
练习 4:对比"不开 RAG"
临时把 generate_answer 里的 prompt 换成只发问题、不给材料:
prompt = QUESTION # 直接问,不给任何材料
同样问 "我在公司干了 4 年,能休几天年假?",对比有材料和无材料的回答差异。
思考:没有材料时,模型会怎么回答?(提示:它可能会编,因为它不知道"ACME 公司"的真实制度)
✅ 完成本课后,你应该能回答
- RAG 解决了直接问大模型的哪三个问题?
- 完整的 RAG 流水线有哪几步?每步分别用什么技术?
- 为什么"检索"这一步能让模型少产生幻觉?