模型不知道你公司昨天改了什么。它的知识停在一个固定的时间点,而且从来没看过你的内部文件。 不知道的时候它不会说不知道,它会编一个像样的答案——这是最危险的部分。 这一节用十三道题把「凭记忆」和「查资料」摆在一起,两边都不是全对。
上一章讲怎么把能力串成流水线,这一章讲往流水线里放什么料。 第 1 章说智能体的四件要素里,「工具」解决的是能动手,这一章解决的是「知道事」。 两件事不一样:能查股价不等于知道你们公司的报销规定。 这一章是第 8 到 16 章所有案例的前置——那些案例里凡是要答业务问题的,背后都挂着一个知识库。
一、模型的知识停在一个时间点
大模型的训练是一次性的。训练截止那天之后发生的事,它一概不知道。 这不是版本问题,是原理问题——权重里装的是那一天的快照。 更关键的是:你的内部文件它一份都没看过。 员工手册、产品手册、报价单、故障处理流程, 这些东西从来没进过它的训练集。 所以问它「我们公司年假几天」,它只有两条路:说不知道,或者编一个。 而它倾向于编——因为它的训练目标就是「给出一个通顺的回答」,不是「给出一个真的回答」。
这两件事合起来,构成了企业用大模型的第一道坎:它对你的业务一无所知,却答得很自信。
二、十三道题,两种答法
演示里把问题分成三组,每组都能看出一点东西。
| 问题的类 | 题数 | 凭记忆答对 | 查资料答对 |
|---|---|---|---|
| 通用常识 | 4 | 4 / 4 | 0 / 4 |
| 公司内部 | 6 | 0 / 6 | 6 / 6 |
| 昨天刚改 | 3 | 0 / 3 | 3 / 3 |
第一组是常识:首都在哪、水沸点多少。模型全对,资料库里全查不到——公司手册不会写「首都是北京」。 第二组是内部规定:年假、报销、试用期。模型全编,资料全对。 第三组是最近改的:年会地点、新版报销单、食堂开饭时间。模型连「有这回事」都不知道。
十三题合起来:凭记忆 4 题对,查资料 9 题对。两边都不是全对。
三、三条路合起来才够
演示最后还留了一类题:「入职两年半能休几天年假」。 检索能拿到那一整段制度——满一年 5 天、满三年 10 天、满五年 15 天,最高分 0.14,是命中的。 但「两年半算哪一档」这一步,资料里没有,得推。检索把料摆上桌,算那一步归生成。
所以完整的答案拼的是三样:常识靠模型、事实靠资料、推算靠生成。 少了哪一样都出问题:只靠模型会编,只靠资料答不了常识也答不了需要算的,只靠生成容易算错。
四、企业知识库到底解决什么
它不解决「模型笨」。它解决三件事。 一、让答案有出处。 答完能指到第几段资料,人可以核。 二、让更新变快。 改一份文档,几分钟后答案就变了,不用重训模型。
三、让权限有地方管。 谁能看哪份资料,在库这一层就能拦住。 三条里第一条最容易被低估。企业场景里「答对」不重要,「能证明为什么这么答」才重要。
五、什么该进库,什么不该
该进:员工手册、产品手册、售后政策、常见问题、历史工单里反复出现的那些。 不该进:一次性的会议记录、还没定稿的方案、随时会变的临时通知、 以及任何一份你没有权限管好的资料。 有一条经验:能公开给新员工看的,才适合放进公共库。其余的要分库、分权限, 这一条第 5.6 节会展开。
还有一条:先把「最常被问的二十个问题」对应的资料整理好,比把整个网盘倒进去有用得多。 库不是越大越好,是越准越好。
六、动手 Demo:模型知道什么,不知道什么
九份内部制度、四道常识题、六道内部题、三道时效题。同一个问题问两遍:一遍凭记忆,一遍查资料。 最后再看一道「资料够但需要算一步」的题。
def memory(q): # 只凭模型记忆:会的就会,不会的就编
if q in GEN_MAP:
return GEN_MAP[q], True
for _q, _e, fake in INNER + TIMED:
if q == _q:
return fake, False # 编一个像样的
return '(不会答)', False
def lookup(q, expect): # 查资料:检索三段,答案在里头就算命中
hits = Q.retrieve(q, DOCS, top=3)
if not hits:
return '资料里查不到', False, 0.0
joined = ' '.join(d for _s, d in hits)
if expect in joined:
return expect, True, hits[0][0]
return '资料里查不到', False, hits[0][0]
实跑输出:
--------------------------------------------------------------------
模型知道什么,不知道什么
--------------------------------------------------------------------
① 三组问题,两种答法
--------------------------------------------------------------------
| 问题的类 | 题数 | 凭记忆答对 | 查资料答对 |
|---|---:|---:|---:|
| 通用常识 | 4 | 4 / 4 | 0 / 4 |
| 公司内部 | 6 | 0 / 6 | 6 / 6 |
| 昨天刚改 | 3 | 0 / 3 | 3 / 3 |
合计 13 题:凭记忆 4 题对,查资料 9 题对。两种都不是全对。
② 各挑一句,看它答成什么样
--------------------------------------------------------------------
问:员工年假有几天
凭记忆:年假 15 天(编的)
查资料:满一年 5 天(对,最高分 0.09)
问:报销多久到账
凭记忆:7 个工作日(编的)
查资料:5 个工作日(对,最高分 0.19)
问:今年的年会在哪办
凭记忆:武汉光谷酒店(编的)
查资料:宜昌国贸酒店(对,最高分 0.18)
③ 常识题反而查不到
--------------------------------------------------------------------
问:中国的首都是哪里
凭记忆:北京
查资料:资料里查不到
公司手册里不会写「首都是北京」。资料里没有的,查资料这条路就断了。
④ 还有一类:资料够,但要算一步
--------------------------------------------------------------------
问:入职两年半能休几天年假
检索最高分 0.14,命中:年假:入职满一年 5 天,满三年 10 天,满五年 15 天,
需提前三天在系统提交。
资料是齐的(满一年 5 天、满三年 10 天),但「两年半算哪一档」要推一步。
检索把料摆上桌,算那一步归生成。这一步算错,就是 RAG 最典型的错法。
! 三条路合起来才够:常识靠模型、内部靠资料、推算靠生成。
很多人以为上了知识库就万事大吉,第一步就踩空——资料里没有的东西,检索是查不出来的。
①第一张表是三组问题的成绩。常识那行凭记忆 4 / 4、查资料 0 / 4;内部与时效那两行正好反过来。 ②「年假」那题凭记忆答「15 天」,查资料答「满一年 5 天」。 注意 15 天这个数在资料里也有——只是属于「满五年」那一档。 编的答案往往不是瞎编,是把别的档位的数搬过来了。 ③常识题那段是本节的关节:公司手册里不会写「首都是北京」,所以查资料这条路会断。 上了知识库不是万事大吉。 ④最后那道「入职两年半」的题,检索最高分 0.14,料是齐的,但「两年半算哪一档」要推一步。 这一步算错,就是 RAG 最典型的错法。 ⑤三条路合起来才够:常识靠模型、事实靠资料、推算靠生成。少哪一样都出问题。
30 秒实验
- 挑十个你同事最常问的问题,逐个问一遍模型。答错的那些,就是该进库的资料。
- 把你们最常被问的一条规定问三遍,看它三次答的是不是同一个数。不一样就说明它在编。
- 数一下你打算放进库的文档里,有多少是「随时会变」的。那些要单独分库。
常见误区
- 「模型够强就不需要知识库。」它再强也没看过你们的文件。这是训练数据的问题,不是能力问题。
- 「上了知识库就什么都能答。」资料里没有的它照样答不了,该算的那一步它照样可能算错。
- 「它说不知道才危险。」反过来。它编一个像样的答案才危险,因为你分不出来。
自测三问(点开对答案)
1. 模型为什么答不了公司内部规定? —— 两件事:时间上它停在一个固定日期,范围上它一份内部文件都没看过。所以它只能编。 2. 为什么常识题上了知识库反而答不出? —— 因为公司手册不写常识。查资料这条路只对「资料里有的东西」有效。 3. 「入职两年半能休几天」这类题难在哪? —— 检索能把制度段落拿到,但「两年半算哪一档」要推一步。料齐不等于答对。既然模型不懂,那把它训懂行不行?下一节算这笔账:微调到底贵在哪、慢在哪,以及它会拿什么去换。
- ☐ (本篇完,下一篇 5.2 大模型微调真的有必要吗)
相关笔记
- 认识 Agent:智能体的四件要素
- 工作流及其分类:把能力串成流水线
- 38 AI训练师手册 · 索引
- 🐦 扣子开发 AI Agent · 索引