前情提要: 在和 gemini 搏斗之后,我选择了重启 zettelkasten 插件
不知今昔是何年……
卢曼的卡片盒模型出现很多年了,但是似乎没有更学术一点的角度总结其思想,确定在现代软件重构实现的样子。
想一下,卢曼的卡片盒,是记忆系统,归档工具,还是思考系统?
记忆系统旨在让人记住东西,而卢曼的卡片盒显然没有为此做优化设计,有些东西是真的编写后变成死档,强行为他建立连接我觉得才是违反设计意图的。
归档工具需要让人方便检索,同时减少重复操作。但我觉得卢曼的编号系统最多方便遍历一个卡片的上下文,而不是检索这条内容是否真的已经编写了,卢曼的卡片盒重复编写是必然存在的事情。
所以,卢曼的卡片盒必然只是一个思考工具,它起到的作用跟草稿纸没什么区别,是一个思想上比较连续的草稿纸,允许你漫无边际思考的时候通过切换上下文的形式实现伪多进程思考。
卡片需要链接,是因为每个思考必然有其前置,新的思考必然是一系列原有思考 + 新的材料碰撞得到的结果。所以,一个理论上最优的卢曼卡片盒,应该是一个脑机形式,检查大脑的任意活动,尝试为所有内容编制目录和索引,允许以多种路径遍历到同一个内容。同时在进行新的思考时,自动把当前思考的全部上下文列举出来,从而能够知道这个想法实际上构成的全部路径,受到了什么内容的影响……本质上就是记录一切输入内容和运行步骤的无限进程影子副本。
举例来说,当我看到一个新闻,产生一个想法,这种理论最优卡片机能立刻提取到我产生这个想法的所有前置思考,还能进一步遍历这些前置思考受到什么材料的影响,前置思考的前置又是什么——一直遍历到无知无觉的婴儿状态,在本能下摄取最初的教育内容,并产生最初想法的那一刻。
这种东西在本质上是大脑的全集副本,因为大脑的运作形式会得到结论后,在长期记忆中抹除上下文,让我们只能清晰的回忆结论,并不自觉地将其作为不需反驳的公理作为前提来进行思考。而一个最优卡片机,会记录下所有“公理”的流变过程。
那么,一个卢曼的现代化实现应该是什么样的?我认为这个实现应该尽可能的接近理论最优卡片机的实现。
首先一点是,这东西应该尽可能减少手动建立链接的过程,或者让其简化。这是因为,思考它应该链接到哪里,这本身就是一种思考,它一方面受到一些当前固有“公理”的影响,另一方面也不可靠。我们真的能清晰列举出一个思考内容的全部前置吗?假如我们做得到,也就不需要外置的思考工具了。
另一方面是,他应该尽可能的摄取思考的当前输入内容。虽然有些思考内容是一种纯粹的反刍运动,只是基于原有思考内容的推理,但更多的情况下是接收到了新的材料。因此,这个工具应该尽可能以方便的形式摄取、保存材料。
在建立链接方面,必须承认完全准确的链接是不可能的:
- 我们不能准确的知道大脑的全部思考活动
- 我们不能准确知道大脑的全部接受内容。
但是,建立近似的链接是可以的,这基于以下可能的原理:
- 时间局部性。当前的思考总是基于稍早一点时间的思考。现在的思考基于一个小时前的思考的可能性高于一天前思考的可能性。
- 低熵性。同一进程的思考内容总是线性的,换而言之,从之前的思考内容延续到现在的思考内容,熵的值应该是最低的。
- 内容相似性。我们总是在不自觉的重复或反驳,要么是思考内容或接受内容与之前思考相似,要么相反。
而在摄取内容上,这就是纯粹的工程方案了,虽然直接收集大脑通过感官获取的内容在现在是不实际的,但尽可能简便的收集当前电脑上让人产生思考的内容还是有可能的。
技术尝试,我希望以现代技术来尝试实现自动抓取文档的上下关联性,这主要的想法是借助信息量的熵,准确来说是条件熵。也就是,给定前文的情况下,出现后文的概率是多少?
这在过去完全是不可能的,但现在,LLM 模型实际上就是这样的一个机器。它吃进去前文,然后吐出一个概率分布表,使用 TopK 从里面挑选出概率最高的几个字符,然后再用概率随机选一个输出。
因此,我只需要将前文输入,让后逐个输入后文,得到实际后文每一个字符的概率,我就实际上得到了一个上下文的条件概率。很显然,一个连续的文段,它的字符平均概率是高于不相干的文段的。
我在 qwen3 0.6b 模型上进行了测试,效果还行:
B = 周末陈彬总喜欢来我家吃饭,借着我和我妈在厨房里忙碌的空闲,陈彬会陪着我爸下象棋。本来胜券在握的棋局,陈彬会故意走错一步棋,旗开得胜的爸爸自然对陈彬大加赞赏。一来二去,爸妈渐渐喜欢上了陈彬,总是有意无意地想要撮合我和陈彬在一起,而我每次都是及时将话题转移。这个问题陈彬自己也跟我提过,但我自始至终没有在意过,因为我只把他当“闺蜜”。
log p(B|A) = -446.00, perplexity = 41.13
B = 梁波整整比我大一轮,年过四旬的他看上去依然意气风华。初次见面是在单位的庆功宴上,他是公司老总的朋友,在公司最近拿下的项目中做出了很大的贡献。
log p(B|A) = -200.12, perplexity = 77.60
B = 庆功宴之后,我对梁波一直念念不忘,可是萍水相逢,我想以后都没有机会再见到他了吧。就在我为止痴狂的时候,接到了领导的通知,让我去梁波的单位送一份资料。接过领导交代的重任,我的小心脏差点激动的蹦出来。
log p(B|A) = -290.00, perplexity = 86.57
B = 可是随后,我接受了和梁波一起吃晚餐的邀请。他带我去了自己一直想吃,却没舍得吃的法国大餐。那晚我知道了梁波曾经有过一段婚姻,离异后妻子带着孩子远飞美国,他现在只想重新找一个人生伴侣,他觉得我就是那个他要找的人。
log p(B|A) = -305.50, perplexity = 74.05
B = 两年之后,昊天因为工作能力突出,已经坐到了销售总监的位置,不仅守护着身边这份美丽的爱情,也拥有着金钱带给他的光环,他相信一定会带给珍珍一辈子的幸福。谁知,当他正沉浸在幸福的生活中时,爱情却来了一段意外的插曲。
log p(B|A) = -301.50, perplexity = 119.72
B = 珍珍的姐姐善雅30岁了,一直还没有找物件,说实话,善雅比珍珍长得还漂亮,如果说珍珍是一个可爱的小女生,那么善雅就是成熟而又有气质的女人。这么多年,家人着急把她嫁出去,她却一直不肯,每次都是以“我要等待生命中的‘白马王子’”为由拒绝家人为她安排的相亲物件。
log p(B|A) = -346.25, perplexity = 68.21
B = 善雅不甘心,晚上经常到珍珍的房间里,找她聊天,而聊天的话题都是昊天。每次谈到昊天的时候,珍珍脸上都洋溢着幸福的表情。而善雅却从珍珍的口中了解昊天的一点一滴。
log p(B|A) = -233.25, perplexity = 59.96
B = 就这样,他帮我修好了车子。我说:“你把你的电话号码给我吧,我回去请你吃饭。”他说:“电话号码可以留下,吃饭,就不用那么客气了吧!”我笑了笑说:“那是应该的!”我们互换了电话号码,他就是奇睿。
log p(B|A) = -235.25, perplexity = 62.11
=== 各阶段耗时 ===
tokenization: 0.0248 秒
masking: 0.0052 秒
to_device: 0.0005 秒
model_inference: 0.6877 秒
compute_logp: 0.3159 秒
总耗时: 1.0344 秒,平均每样本: 0.1293 秒
但是……太慢了。如你所见,每个样本都需要 0.13s,而且样本量一大、文本一长还没办法批量推理,会爆显存。
我尝试了下据说对内存友好的 RWKV,内存占用确实少了,效果也还能接受,但是……
### RWKV-7 "Goose" enabled ###
Loading ./rwkv7-g1a-0.1b-20250728-ctx4096 (cuda fp16)
namespace(MODEL_NAME='./rwkv7-g1a-0.1b-20250728-ctx4096', head_size=64, vocab_size=65536, n_embd=768, n_layer=12)
[1/5] B 片段计算完成,用时 0.860 秒
[2/5] B 片段计算完成,用时 0.518 秒
[3/5] B 片段计算完成,用时 0.493 秒
[4/5] B 片段计算完成,用时 0.517 秒
[5/5] B 片段计算完成,用时 0.517 秒
>>> 全部 5 个片段计算完成,总用时 3.911 秒
B = 周末陈彬总喜欢来我家吃饭,借着我和我妈在厨房里忙碌的空闲,陈彬会陪着我爸下象棋。本来胜券在握的棋局,...
log p(B|A) = -2.70
B = 梁波整整比我大一轮,年过四旬的他看上去依然意气风华。初次见面是在单位的庆功宴上,他是公司老总的朋友,...
log p(B|A) = -3.30
B = 陈彬是只猫,这没错。但他觉得自己更像个喜剧演员,只不过舞台是这个五十平米的家,而观众,永远只有下班回...
log p(B|A) = -3.06
B = 卡片需要链接,是因为每个思考必然有其前置,新的思考必然是一系列原有思考+新的材料碰撞得到的结果。所以...
log p(B|A) = -3.28
B = 珍珍的姐姐善雅30岁了,一直还没有找物件,说实话,善雅比珍珍长得还漂亮,如果说珍珍是一个可爱的小女生...
log p(B|A) = -3.59
这可是 0.1b 模型!比 qwen 0.5b 还慢了 5 倍!
真的只能说接受不了。
发此文的目的也是看看各位有什么比较好的想法,能够比较高性能且快速地判断文段关联性。使用嵌入计算相似性还是作为最后选择吧……毕竟文本内容相似不意味着连续。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于