IuSchrö

开端

认识你自己——因为那是所有真实问题的起点。

—— 德尔斐神庙箴言(ΓΝΩΘΙ ΣΑΥΤΟΝ)

承启

我的语言的界限,即我的世界的界限。

—— 路德维希·维特根斯坦

求索

人工智能能复述人类说过的话,却未必能逼近人类尚未说出的真理。

碳中和智能系统

作品

全球碳中和智能系统 · 基于 Qdrant Cloud

访问作品

News

  • 一个字段,不能装两种意思

    做法规知识库的时候,我碰到一个看上去很小的问题。 系统要判断:一段原文里出现的某个术语,是不是真的在使用法规里对它的定义。光看字面不行。同一个词,这一段在用本法的定义,另一段却是碰巧出现,还有一段明明在说”按另一部法规的定义”。于是我们把判断分成三种结果:确实在引用这个定义;只是碰巧出现在一起;明确指向了别处的定义。 第一版做完,我发现自己掉进了一个很老的坑。判断结果里,同一个字段身兼两职:它既要回答”这算不算引用”,又顺带表达”为什么不算、风险有多大”。比如一条证据因为版本不同而不算数,这个”版本不同”的原因也被塞进了同一个字段。 半个月后,这个字段的含义已经没人说得清。 这是每个做过表格的人都见过的事。一列叫”状态”的东西,既表示审批结果,又表示风险等级,三个月后没人敢动它。 我们最后冻结下来的做法,是分层。第一层只回答一个问题:这条证据有没有真的在用这个定义。第二层单独记录原因和风险,比如”版本不同””跨条约””重复定义”。各司其职,互不借用。一句话总结:一个字段,只承担一种语义。 我不是哲学专业出身,但分析哲学教给我一个朴素的习惯:一个词的意思取决于它在那里干什么,所以先别急着下结论,先问这句话到底断言了什么。罗素式的做法就是把一句含糊的话拆开,逐项问清楚。 这个习惯后来也用在了别的地方。让几个模型各执一词、吵不出结果的时候,我做的只是一件事:找出争论里混在一起的两个问题,把它们拆开。很多争吵之所以没有结论,是因为双方吵的根本不是同一件事。 落到具体规则上,都很琐碎,但每一条都是冻结过的: 目录、页眉、脚注里的字面匹配,一律不算引用。单个的泛用词,比如”法案””公司”,没有明确的引用标记时,默认只算碰巧出现。要判断一个定义是否被”真正使用”,标准是没有它这句话读不懂,而不是话题恰好相近。 琐碎的好处是可复现。规则冻结之后,我能用同一批盲测题反复回归:哪条判断错了,我知道错在哪一层,而不是对着一个含混的字段猜。 如果你也在搭数据系统或者 AI 应用,我只想带走这一条:下次看到一个字段在同时表达两件事,别等到它出事,现在就拆开。

  • 每一个答案都该留下刻痕

    石头上的一道刻痕,首先证明的不是意思,而是有人来过。 甲骨文是个很好的例子。商人占卜,把所问之事刻在龟甲兽骨上,有些卜辞的末尾,还会补记后来发生了什么、应验没有,学者称之为验辞。我每次读到这里都有些惊讶:三千多年前的人,已经明白一个道理,一句话说出口不算完,事后要回来核对,并且把核对的结果也刻上去。 两河流域的泥板走的是另一条路。早期的文字大量用来记账,这块泥板上记着谁欠了多少麦子。没有抒情,没有哲理,只有凭据。 两条路线有一个共同点:最早的文字不是为了漂亮,而是为了留下可以回头查的东西。 后来符号越来越轻,语言越来越流畅。流畅是有代价的,代价是离源头越来越远。一句话传过十个人,没人还记得最早是谁说的、在什么场合说的。人类为此发明了许多补救的办法:脚注、引文、档案、版本号。说穿了,全都是在给语言补刻痕。 现在,机器会说话了。大模型的回答流畅得令人放松,放松到忘了问一句:这话从哪来的?它说”某法规第几条规定如何如何”,你没法分辨,这是它真的读过,还是听起来像。 所以我给自己做的东西定了一条底线:一个答案,应该说得出它从哪里来。来自哪份文件,哪个版本,哪一段原文。说不出,就宁可老实说不知道。 版本这件事,最容易被忽略。同一部法规,2011 年的文本和 2025 年的修订,绝大部分字句一模一样,差别只在几个关键处。流畅的回答最爱把两个版本糅成一个,读起来天衣无缝,实际上谁也对不上。让答案带着版本号,它才有机会老实地告诉你:现行的是这个,以前是那个。 这不是对机器的苛求。人类几千年来养成的老习惯,本来就是这样:话要有刻痕。我只是想把这个习惯,重新交给会说话的机器。