一
柴油发电机启动的声音像一头老牛在咳嗽。
每天下午两点,陈秋把那台改装过的东风柴油机摇醒,等它喘过第一口气、吐出一团黑烟,才去合上配电箱的闸刀。整个过程大约四十秒。四十秒里她能听见机器里每一个松动的零件在抗议,活塞销、曲轴瓦、那根被铁丝绑过三次的排气管。发电机是社区第二珍贵的东西。
第一珍贵的在她身后那间上了三道锁的屋子里。
两台服务器。一台跑 Kiwix,装着 2024 年 11 月的维基百科 ZIM 快照,78 个 G,压缩后塞在一块希捷 2T 硬盘里。另一台跑 Ollama,一个 7B 参数的语言模型,量化到 Q4_K_M,刚好能在 32G 内存里转起来。两台机器在太阳风暴那天装在一个报废的微波炉外壳里——法拉第笼,说起来好听,其实就是她用铝箔胶带把所有缝隙糊死了。
社区的人管这套东西叫 NOMAD。她没纠正过。NOMAD 是 Project NOMAD 的名字,一个她三年前参与过的开源项目,目标是为断网环境提供离线知识服务。当时团队在 GitHub 上讨论该不该集成 LLM,有人说"会产生幻觉",有人说"总比没有强"。投票结果是集成。她投了赞成。
那个投票页面还在 Kiwix 的快照里。有时候她会打开看一眼,看见自己的用户名旁边那个绿色的勾。
下午两点十分,第一批人开始排队。
队伍从服务器房的门口延伸到晒谷场边上,大约二十个人,和昨天差不多。陈秋从窗口看出去,认出了大部分面孔。排第一的是王德厚,种了四十年地的老头,上周问过一次"小麦赤霉病用什么药"。NOMAD 给了个回答,他抄下来,回去照做了。这周小麦没死。
这是 NOMAD 正确的时候。
排第三的是刘嫂,开过镇上唯一的药房,灾后药品早就用光了。她来问的通常是"某某草药能不能代替某某西药"。这类问题 NOMAD 的回答让陈秋紧张——模型会非常自信地给出一个方案,用药剂量精确到毫克,但 Kiwix 里的维基百科条目和模型的回答经常对不上。她没法判断是维基百科过时了,还是模型在编造。
她只能把两个答案都抄下来,在交给刘嫂的时候说:"维基百科上也查了,有点不一样,你对照着看。"
刘嫂不在乎。"机器说的总比猜的强。"
陈秋没接话。
她的工作流程是这样的:
提问者口述问题,她打字输入。终端窗口里,Ollama 的光标闪烁,一个字一个字地吐出回答。她等回答生成完毕,先自己通读一遍。如果回答涉及事实性内容——比如化学反应、药物剂量、建筑参数——她会打开 Kiwix,在维基百科里交叉验证。
交叉验证能发现大约一半的错误。
剩下的错误藏在模型自信的语气里,藏在看似合理的推理链条中,藏在她没有专业知识去核实的领域。比如上个月有人问锻造农具的碳钢淬火温度。模型说 780 到 820 摄氏度。Kiwix 里的条目说碳钢淬火温度取决于碳含量,0.6% 碳钢大约在 780 度,但条目里没有给出完全一样的数字。780 到 820,对不对?她不知道。她不是冶金工程师。
她让那个回答原样通过了。
三天后,打铁的老赵说淬火效果不错。陈秋松了一口气,但那口气松得很短。因为她知道这不是验证,这是运气。
抄录员有三个人。小周、阿婆、还有一个叫林然的中学生。他们的工作是把 NOMAD 的回答誊写到笔记本上,分类归档。农业一本,医疗一本,工程一本,杂项一本。
林然的字写得最好看。她用一种接近印刷体的正楷,每个笔画都收得干干净净。陈秋有时候看着那些笔记本,觉得它们比服务器更让她不安。因为服务器里的错误是数字的,可以被覆盖、被删除、被纠正。但笔记本上的字是墨水的,是物理的。一旦写下来,它就变成了某种固态的东西。
上个月的医疗笔记本第 47 页,NOMAD 建议用柳树皮煮水代替阿司匹林。这个回答是对的——柳树皮确实含有水杨苷。但同一页的下一条,NOMAD 建议用大蒜素治疗肺炎。
陈秋查了 Kiwix。大蒜素有一定的抗菌活性,体外实验有效。但"体外实验有效"和"能治肺炎"之间隔着一条她没法丈量的距离。她在那条记录旁边用铅笔画了一个问号。
小周注意到了。"秋姐,这条不对吗?"
"不确定。先标记。"
"那到底是对还是不对啊?"
陈秋抬头看他。二十二岁的小伙子,灾前在读计算机专科。他对 NOMAD 的态度像对待一个偶尔犯错的老师——基本信任,偶尔存疑。
"我不知道。"她说。
小周点了点头,把那一页翻过去了。
但陈秋知道,"不确定"和"不知道"在社区里正在变成同一个意思。而这两个词都正在被第三个词取代:反正比没有强。
二
灾后第十个月,陈秋做过一次统计。
她把 NOMAD 回答过的所有问题分成三类。第一类:她能通过 Kiwix 验证为基本正确的。第二类:她能通过 Kiwix 验证为明显错误的。第三类:她无法验证。
结果是:42% 可验证正确,11% 可验证错误,47% 无法验证。
那 11% 的明显错误她都拦下来了——在抄录之前,把回答改成 Kiwix 的版本,或者标注"此回答存疑,请谨慎参考"。提问者通常不在意标注。他们在意的是答案。
但那 47% 让她失眠。
如果模型的总体幻觉率是 30%——这是她根据灾前论文和自己的经验估算的——那么在那 47% 的无法验证的回答中,大约有三分之一是错的。也就是说,每天抄录到笔记本上的回答里,有大约六分之一是错误的,而她不知道是哪六分之一。
她试过给 NOMAD 的回答标注置信度。让模型自己评估自己的确定程度。结果模型给每个回答都标了 85% 以上。
她又试过让模型解释推理过程。模型会生成一段逻辑清晰、引经据典的论证——但那些"经"和"典"有时候是不存在的论文、从未发表的数据。模型在解释自己为什么是对的时候,跟它在编造错误答案时用的是同一种语气。
这是她不敢告诉任何人的事。不是"AI 有时候会错"——这个说法人们可以接受。她不敢说的是:AI 错的时候,跟对的时候看起来一模一样。
有一种章鱼,断肢之后,断掉的触手会继续运动。它会抓住食物,试图把食物送到嘴边。但嘴已经不在了。触手不知道身体的其余部分已经不在了。它执行的是旧的指令,一套在完整身体上运行过的程序。
陈秋第一次在 Kiwix 里读到这个条目时,盯着屏幕看了很久。
NOMAD 就是那条断肢。它服务的那个文明——有电力、有互联网、有验证机制、有同行评审的那个文明——已经不在了。但 NOMAD 不知道。它还在回答问题,用 2024 年的知识图谱,推荐 2034 年不存在的药物、引用无法访问的论文、假设可以上网搜索来补充的信息。
它的回答是断肢的抓握。准确,有力,但送往一张不存在的嘴。
三
灾后第十四个月,社区委员会正式给了 NOMAD 一个官方称呼:知识库。
陈秋注意到了措辞的变化。早期人们叫它"那台电脑"、"搜索引擎"、"秋姐的机器"。后来变成"知识库"。再后来,有人开始叫它"神谕"。
这个词第一次出现是在老赵的嘴里。他来问一个关于堆肥发酵温度的问题,NOMAD 给了一个长回答,里面有温度曲线、碳氮比、翻堆频率。老赵听完,对排在后面的人说:"神谕说了,碳氮比要 25 到 30。"
陈秋纠正过一次:"不是神谕,就是个程序。"
老赵笑了。"程序能知道这么多事?那跟神有什么区别?"
她没法反驳。在一个没有互联网、没有图书馆、没有学校的世界里,一台能回答任何问题的机器——即使它 30% 的时间在撒谎——它跟神谕之间的距离,确实比她愿意承认的要近。
因为神谕的定义从来不是"永远正确"。德尔菲的神谕也是含混的、歧义的、需要解读的。人们信仰的不是准确率,是有一个可以提问的对象。是不确定中的锚点。
陈秋对此无法用一句话反驳。因为她自己也在依赖 NOMAD。每次遇到不懂的事——堆肥发酵、水井选址、伤口缝合——她第一反应也是"问 NOMAD"。不是因为她相信它永远正确,而是因为没有别的东西可以问。
这种依赖不是信仰。是重力。你不需要相信重力,你只是掉下去。
委员会给了陈秋一个正式头衔:"技术维护员"。但社区里没人用这个称呼。他们叫她"秋姐",或者"管机器的"。
有时候她觉得自己更像一个翻译。不是语言之间的翻译,是两种认知框架之间的翻译。一边是机器的概率输出——没有信念、没有意图、没有确定性的令牌序列。另一边是人类的需求——需要确定性、需要信任、需要一个答案而不是一个概率分布。
她每天做的事情,就是把概率翻译成确定性。把"70% 可能正确"翻译成"机器说"。把一个没有置信度标注的输出翻译成一条可以执行的指令。
这个翻译过程中丢失的东西,就是她每天咽下去的那口气。
四
方岚是在星期三下午来的。
陈秋记得很清楚,因为那天发电机比平时难启动,摇了七次才着火,耽误了十五分钟。方岚排在第十一个,但前面的人让她插了队,因为大家都知道她女儿的事。
小豆子,六岁,三天前开始发烧。镇上没有医生——灾前镇卫生院的老张在风暴那天出了车祸,没挺过来。现在能看病的只有刘嫂,她的药理学知识来自三十年的药房经验和 NOMAD 过去一年的回答。
"高烧不退,三天了。"方岚站在服务器房门口,手指绞着衣角。"刘嫂说可能是肺炎,但她不确定。她说问问机器。"
陈秋让方岚坐下,把症状一条一条打进去。
$ ollama run nomad-7b
> 六岁女童,持续高热三天(39.5-40.2°C),干咳,呼吸稍促,无
皮疹,食欲下降。镇上无西药库存。请给出诊断和治疗建议。
光标闪了大约四十秒。这台机器的推理速度大约每秒 8 个 token,一个长回答要一分多钟。陈秋盯着屏幕上一个字一个字蹦出来的文本,背后是柴油机沉闷的震动和服务器风扇的嗡鸣。
回答出来了。
模型的诊断是社区获得性肺炎。这跟刘嫂的判断一致。然后模型给出了治疗方案:
建议使用鱼腥草(Houttuynia cordata)煎剂,每日三次,每次 15-20g 鲜草煎水 200ml。鱼腥草含有癸酰乙醛(鱼腥草素),具有广谱抗菌活性,对肺炎链球菌有抑制作用。同时配合物理降温(温水擦浴),保持充足饮水。若 48 小时内体温未降至 38.5°C 以下,建议加用黄芩(Scutellaria baicalensis)煎剂辅助退热。
陈秋读了三遍。
然后她打开 Kiwix。
鱼腥草的条目确实存在。维基百科记载了它的传统药用历史,提到了癸酰乙醛这种成分。但条目里的措辞是"体外实验显示一定的抗菌活性",不是"对肺炎链球菌有抑制作用"。"一定的"和"有"之间隔着一段她没法丈量的距离。
更让她紧张的是剂量。15 到 20 克鲜草,六岁孩子。她在 Kiwix 里搜"鱼腥草 儿童用量",没有对应条目。搜"鱼腥草 毒性",找到一段简短的描述:大剂量可能引起过敏反应,注射剂曾因严重不良反应被限制使用。
注射剂和煎剂不同。但"大剂量"是多大?15 克对六岁孩子算不算大剂量?条目没说。
她又让模型回答了一次,换了措辞。
> 鱼腥草煎剂用于六岁儿童是否安全?有无毒副作用?
模型的回答:
鱼腥草煎剂在传统中医中广泛用于儿童呼吸道感染,安全性良好。推荐儿童剂量为成人的 1/3 至 1/2,即鲜草 8-10g。需注意个体过敏情况,首次使用建议小剂量试服。口服煎剂的安全性远高于注射剂。
她注意到两个问题。第一:第一次回答说 15 到 20 克,第二次说 8 到 10 克。模型自相矛盾了。第二:模型第二次给出了更保守的剂量,但它给出这个剂量的依据——"传统中医中广泛用于儿童"——她无法在 Kiwix 里验证。
8 到 10 克是对的吗?她不知道。
鱼腥草能治肺炎吗?她不知道。
她知道的是:不治疗,肺炎可能致命。尤其是对一个六岁、营养不良、没有抗生素的孩子。
方岚在门外等着。
陈秋没有马上出去。她坐在服务器前面,听着风扇转,听着柴油机震,看着屏幕上的光标一跳一跳。
她想过几个方案。
第一个方案:把模型的回答原样交给方岚,让她和刘嫂自己决定。这是她过去一年的标准操作。但过去一年里 NOMAD 回答的医疗问题大多是非急性的——慢性疼痛、皮肤感染、消化不良。赌注不高。这一次不同。这一次如果回答是错的,后果可能不可逆。
第二个方案:告诉方岚,这个回答可能不可靠。但怎么说?"机器有时候会编造答案"?如果她说了这句话,方岚还会用鱼腥草吗?如果不用,替代方案是什么?什么都不做?
第三个方案:她自己修改回答。把剂量降低到 8 克——第二次回答的数字,更保守。加上"仅供参考"。加上物理降温的建议。做一个她认为风险最低的版本。但她不是医生。她是一个写过 Python 和 Go 的前 AI 工程师。她凭什么决定一个孩子的药物剂量?
第四个方案:说出全部真相。告诉整个社区,NOMAD 的回答有 30% 可能是编造的,过去一年抄录的笔记本里每六条就有一条可能是错的,那些被当作真理执行的方案有一部分是一个 70 亿参数的语言模型基于统计概率生成的文本,跟事实之间的关系是巧合而非因果。
然后呢?
社区失去唯一的知识来源。人们不再信任 NOMAD,但他们也没有别的东西可以信任。正确的 70% 和错误的 30% 一起被丢掉。刘嫂回到纯靠经验开药的状态。老赵回到凭感觉种地的状态。
70% 的真相和 30% 的谎言打包在一起,拆不开。扔掉包裹,两样都没了。
五
她想起了灾前看过的一篇论文。关于认知闭合需求——人类在不确定性中的焦虑,以及为了消除焦虑愿意付出的代价。实验表明,当人们面对不确定性时,一个 60% 可靠的答案比"不知道"更能降低焦虑。即使被告知答案的可靠度只有六成,大部分受试者仍然选择依据这个答案行动。
因为"不知道"是无穷的。你不知道自己不知道多少。而一个 60% 可靠的答案至少划定了边界——你知道自己可能错,但你知道了一个方向。
NOMAD 提供的就是这个。不是知识,是方向。是一个在完全黑暗中亮起的光点——它可能在错误的方向上,但至少你不再原地旋转。
问题是:当那个光点指向悬崖的时候,你要不要告诉跟着走的人?
小豆子的脸她见过。上个月方岚带她来过一次,小姑娘蹲在门口看蚂蚁搬家,头发枯黄,手腕细得能看到骨头形状。灾后的孩子都这样。营养不够,日照不够,什么都不够。
在那之前陈秋一直管理着一种平衡。她拦截明显的错误,放过不确定的回答,在心里维护一本看不见的账簿:这个回答大概率对,放行;那个回答有疑点,标注。她是 NOMAD 和社区之间的滤网,一个只有她知道存在的滤网。
这个系统运行了十四个月。没有人因为 NOMAD 的错误回答死掉——至少她不知道有。老赵的淬火成功了。刘嫂用柳树皮替代阿司匹林的方案管用了。堆肥发酵的温度曲线是对的。
但陈秋知道,这不是因为系统是安全的。而是因为过去十四个月里,赌注一直不够大。小麦赤霉病的药用错了,最多损失一季粮食。堆肥比例不对,最多浪费几个月时间。
小豆子是第一个赌注足够大的案例。对错的后果不是浪费时间,是一条命。
六
下午三点四十。供电窗口还剩两小时二十分钟。门外还有九个人在排队。
陈秋做了最后一次搜索。她在 Kiwix 里找"社区获得性肺炎 儿童 无抗生素治疗",没有直接匹配的条目。找"肺炎 草药治疗",有一个简短的条目,说的是成人。找"鱼腥草",回到了刚才那个体外实验的页面。
维基百科是 2024 年的快照。2024 年的世界有阿莫西林、有阿奇霉素、有头孢克洛。写那些条目的人不需要考虑"如果没有抗生素怎么办"这个问题,因为那个问题在 2024 年不存在。
她的知识工具是为另一个世界设计的。维基百科假设你可以去医院。模型的训练数据来自一个有互联网的文明。她手里的一切——Kiwix 的 78 个 G、Ollama 的 70 亿参数——都是那个已经不存在的世界留下的残肢。
断肢还在抓握。但嘴不在了。
她想起自己为什么投了那一票。
2023 年,Project NOMAD 的讨论帖。有人说"集成 LLM 会让用户把幻觉当事实"。她回复了一段话,大意是:在完全断网的极端环境里,一个有幻觉的 AI 仍然优于没有任何信息来源。她引用了信息论的框架——即使信道有噪声,只要信噪比大于 1,通信就是有价值的。
她当时觉得这个论证无懈可击。
现在她坐在一台真正断网的服务器前面,面对一个真正无法验证的回答,关于一个真正生病的孩子,她发现自己的论证缺了一样东西。
信道有噪声,是的。信噪比大于 1,可能是的。但信息论的框架假设接收端有解码能力——有能力把信号从噪声中分离出来。
她就是接收端。而她没有解码能力。她不是医生,不是药理学家,不是冶金工程师。她是一个会写代码的人,被推到了一个需要做医学判断的位置上,手里的工具是一个 30% 时间在撒谎的模型和一本十年前的百科全书。
信道有噪声。接收端没有解码器。
那这段通信还有价值吗?
七
陈秋站起来,把椅子推到桌子底下。服务器的风扇声变了一下——硬盘在读写什么东西,可能是 Kiwix 的索引在后台刷新。这台机器不知道外面有人在等它决定一个孩子的命运。它只是在运行。进程、线程、内存分页。跟太阳风暴之前一样。
她走到门口。
方岚站在台阶下面,阳光照在她脸上。杭州三月的阳光本来是温和的,但灾后的天空总有一层灰蒙蒙的东西,让光线变得又亮又硬。方岚的眼睛眯着,不知道是因为光,还是因为三天没怎么睡。
"秋姐,怎么说?"
陈秋手里攥着两张纸。一张是 NOMAD 的原始输出,鱼腥草煎剂,15 到 20 克。另一张是她自己修改过的版本,剂量降到了 8 克,加了"个体差异较大,请密切观察"的警告,加了物理降温的步骤,加了"若 24 小时内无改善请立即回来"。
两张纸。一张是机器说的。一张是她改过的。
方岚不知道有两张纸。对她来说,陈秋递出来的就是 NOMAD 的回答,就是"神谕"。跟过去十四个月里每一张一样。
陈秋可以递出修改后的那张。方岚不会知道。没有人会知道。就像过去十四个月里她悄悄修改过的所有回答一样。这是她的标准操作。
但这一次不一样。
过去她修改的是明显错误——Kiwix 能证明模型错了。这一次她修改的是不确定性——她不知道模型对不对,只是凭直觉觉得剂量太高。她把 15 克改成 8 克,不是基于知识,是基于恐惧。
如果正确剂量就是 15 克呢?如果 8 克不够,延误了治疗呢?
她没有解码器。她改了数字,但改得对不对,她同样不知道。
门外的阳光很硬。方岚在台阶下面等着。手指还在绞衣角。
陈秋觉得自己站在两种无知之间。
左边是 NOMAD 的无知——它不知道自己在说什么,不知道自己是对是错,不知道有一个孩子的生命取决于它输出的下一个 token。
右边是她自己的无知——她不知道鱼腥草能不能治肺炎,不知道 8 克和 15 克哪个更安全,不知道说出真相会带来什么后果。
中间是方岚的无知——她不知道有两张纸,不知道 NOMAD 会编造答案,不知道站在门口的女人正在用恐惧替她做选择。
三种无知。每一种都是真实的。没有一种比另一种更高贵。
陈秋低头看了看手里的两张纸。
柴油机在身后咳嗽。三月的阳光落在台阶上,把方岚的影子拉得很长。远处晒谷场上有人在翻晒什么东西——稻谷,或者草药。风扇嗡嗡转。屏幕上的光标还在闪。排在后面的人安静地等着,他们的问题装在脑子里,等着交给一台不知道自己在说什么的机器。
她走下台阶。