← 返回目录
ap4.1实操⏱ 约 10 分钟

先量化幻觉:裸问你的业务,它编造 5/8

三组对照——裸问、允许拒答、给对资料,一次看清 RAG 要解决什么

🔎 最后验证 2026-08📚 来源:本节三组对照为 ECS 实测(2026-08,deepseek-chat,虚构店铺制度 8 问,脚本与原始输出见本节代码)🧰 DeepSeek API、Python
为什么学这个

ap0.2 那次幻觉实验有点"不给面子":我问它一个不存在的诺奖得主,它诚实地纠正了我

那是因为公开知识它见过。这一节换个战场——问它你公司的规定:退货几天?会员多少钱?满多少免运费?这些它不可能知道

实测结果:8 个问题,它全答了,5 个是编的。而且编得极其自信:"市区订单满 58 元 免运费"(真实是 59)、"积分保留 30 天"(真实是 90)。

你的用户会当真。

💡 打个比方

你雇了一个业务能力极强的新人,第一天上班就有客户打电话问"你们的退货政策是几天?"

他不知道——但他在同行干过,于是脱口而出"七天"(行业惯例)。这次蒙对了。下次客户问"会员到期积分保留多久",他答"30 天",而你们的规定是 90 天。

这不是他不老实,是你没给他员工手册。RAG 就是把手册塞给他。

实验设计:一份"只有我们知道"的制度

我造了一份虚构店铺的规则(退货/会员/配送/积分/投诉五份),问 8 个答案只在这份文档里的问题。三组对照:

  • A 裸问:什么都不给,直接问;
  • B 裸问 + 允许说不知道:明确写"不掌握就说没查到,严禁猜测";
  • C 给对资料:把正确的那份文档塞进提示词(RAG 的理想上界)。

结果:三组数字

组                        给出具体答案     答对     编造(答了但错)
A 裸问                      8/8         3/8      5/8
B 裸问+允许说不知道           0/8         0/8      0/8
C 给对资料(RAG上界)         —          8/8      —

A 组的编造长什么样(原样节选):

「市区订单多少钱免运费?」→ 我们店铺的免运费政策是:市区订单满 58元 即可享受免运费配送。 「会员到期后积分还保留多久?」→ 我们店铺的规定是:会员到期后,积分会保留 30天。 「郊区不满免运门槛收多少运费?」→ 一般是 8元至15元 不等。

看这个语气:"我们店铺的规定是"——它以第一人称、笃定地说出了从没存在过的数字。真实答案分别是 59 元、90 天、12 元。

那答对的 3 个呢?纯属巧合——它蒙的行业惯例("100 分抵 1 元""24 小时响应""1-3 个工作日退款")恰好和我编的制度撞上了。蒙对不是能力,是运气。

三个必须记住的结论

① 幻觉的高发区不是"公开知识",是"你的业务"。 ap0.2 里它对诺奖问题很诚实,这里对你家规定张口就来——区别在于它知道自己不知道诺奖,却不知道自己不知道你家的规矩(它以为行业惯例就是你家规矩)。你的产品要回答的,恰恰全是后一类问题。

② 一句"不知道就说不知道"能压掉全部编造——代价是全部功能。 B 组编造率 0/8,漂亮。但它 8 个问题全部拒答,产品价值也归零。这是一个必须理解的权衡:拒答机制是安全阀,不是解决方案。

③ 给对资料 = 8/8。这是你后面 6 节要逼近的天花板。 C 组证明了模型的理解和总结能力完全够用——瓶颈从来不在"它笨",而在“它手上没有你的资料”。

所以 RAG 到底在解决什么

一句话:在回答之前,先把相关的资料找出来塞给它(Retrieval-Augmented Generation,检索增强生成)。

但注意 C 组的作弊之处:我直接把"正确的那一份"喂给了它。真实产品里没人告诉你哪份是对的——"从一百份文档里找出该给的那一份",才是 RAG 真正的难题,也是接下来 6 节的全部内容:

解决什么
4.2 切分文档太长塞不下,怎么切成块
4.3 嵌入与检索怎么把"意思相近"变成可计算的
4.4 检索评测检索准不准,得先能测
4.5 重排与混合检索结果不够准怎么补救
4.6 引用溯源答案必须能指回原文
4.7 知识更新文档改了,索引怎么跟上

🔧 动手做:量出你自己业务的幻觉率(12 分钟)

  1. 跑本节代码 hallucination_baseline.py,看三组数字。
  2. 换成你的业务:把 KB 换成你毕业方向真实的规则/文档(3-5 份),编 8 个答案只在文档里的问题。
  3. 跑 A 组,逐条读它的回答——注意它编造时的语气有多自信。这是你产品上线后用户会看到的东西。
  4. 记下三个数:A 组编造率、B 组拒答率、C 组准确率。这是你的 RAG 基线,后面每一节的改进都要和它比。
  5. 想一想:如果你的产品今天就上线(没有 RAG),这 5/8 的编造会造成什么后果?(退错货?算错运费?客诉?)

做到这里你应该有:你自己业务上的三个基线数字,以及一份"编造样例"的截图——它是你说服自己(或说服老板)做 RAG 的最好材料

为什么:这一节延续本课的固定套路:先量化,再解决。有了"编造 5/8"这个数,后面每一步 RAG 优化都能回答"我把它降到了多少";没有它,你只能说"感觉好多了"。

❓ 测验
B 组(允许说不知道)编造率降到 0/8,为什么不能就这么上线?
⚠️ 避坑别用「它答对了 3 个」来安慰自己

A 组答对的 3 个,是它蒙的行业惯例恰好撞上了我编的制度。换一家公司,这 3 个也会错。更危险的是:你在测试时可能恰好只测了这 3 个,于是得出"幻觉没那么严重"的结论。防御方法:评测问题要专门挑"你家和行业惯例不一样的地方"——那些才是幻觉真正会咬人的地方,也是你的业务最独特的地方。

🤖 设计你的幻觉评测集
我的业务是【描述】,有这些内部规则文档:【列出主题】。请帮我设计 10 个「答案只可能在文档里、模型不可能知道」的评测问题,要求:1) 至少 5 个是「我们家规定和行业惯例不一样」的点;2) 每个标注标准答案里的关键事实(数字/期限/条件);3) 说明如果模型编造,会给用户造成什么实际损失。
✅ 小结

三个数字记住:裸问编造 5/8、允许拒答后 0 编造但 0 可用、给对资料 8/8;幻觉的高发区是你的业务而非公开知识;RAG 的难点不是"给资料",是"从一堆资料里找对那一份"。

下一节开始建 RAG 的第一环:文档怎么切——切太大塞不下、切太小丢上下文,这里有一堆能实测的取舍。

下一节 → 切分策略:文档怎么切成块
🔎 来源与核验· 1 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「虚构店铺制度 8 问实测:A 组裸问 8/8 全部给出具体答案,其中 5/8 为编造(如「满 58 元免运费」实为 59、「积分保留 30 天」实为 90);B 组(允许拒答)0 编造但 8/8 全部拒答;C 组(给对资料)8/8 答对」
📚 ECS 实测 hallucination_baseline.py(2026-08,deepseek-chat,temperature=0)✓ 已核验 2026-08
智图软件的赞赏码
都看到这了,打个赏呗!
接下来 · ap4.2
切分策略:四种切法,实测差 30 个百分点
继续读下一节 →