编注:

本文是少数派 2021 年度征文 活动 #效率 21 标签下的入围文章。本文仅代表作者本人观点,少数派对标题和排版略作调整。

和往年不同,今年文章的数据表现将很大程度上决定征文活动的最终走向,包括「双倍稿酬(由飞书赞助)」活动奖励、最终票选名单以及征文奖品类型。如果你喜欢这篇文章,不妨通过充电或评论的方式支持作者。


题图:Photo by Kelly Sikkema on Unsplash

「卡片笔记写作法」用久了,你总会遇到一个问题,就是卡片太多

这一方面是个效率问题。你要是想把卡片笔记当成严肃的工具,那么底层就得用数据库来组织信息,而非文件系统。Logseq 目前正在做这种迁移。在卡片少的时候,这二者的效率看不出差别,甚至文件组织方式因为直观显得更加友好。但是卡片到了 10 万级别的时候,效率的差别就会显现。效率不达标,随便查找个东西,你都能感受到「卡」。

以我个人的 Roam Research 数据统计为例。虽然「页面」(Page)只有 1 万多,但是别忘了 Roam Research 下的真正卡片单位,是按「块」(block)来计算。

Roam Research 里 Page 的真正含义是什么呢?我觉得是「盒子」,卡片盒嘛。虽不是物理意义上的盒子,有固定形态,但它确实是承载卡片的容器。在 Roam Research 中,如果你的链接都在页面层级,而不是块引用(block reference),那么你其实并没有发挥出它「细粒度」的特性。

效率问题,还只是一个方面。更要命的,是卡片数量庞大之后,你会忘记自己曾经记过某些东西。本文主要讨论的,便是这个恼人的事儿。

最近,「合桃派」团队邀请医学博士 Lan 分享自己的块引用实践。她结合 Cite to write 和 Roam Untangled 两门课程里的方法,利用块引用自底向上构造「问题」,然后用「问题」的块引用来组织论文。她的第一篇综述论文靠着双链笔记工具的加持,超出预期快速写就,且已被录用。 Lan 这种学以致用的精神,很值得钦佩。

讨论环节,我问了她一个问题 —— 若是很久前(一两年前)记录的卡片,内容忘记了怎么办?新的笔记若与之相关,怎么回忆、识别并且链接呢?

Lan 回答,她依靠头脑人工记忆完成链接。

这个回答,很实在。对于她来说,记忆这些卡片,没有感觉到什么负担。但我们考察知识管理系统,不能以个案的主观感受作为依据。在 Lan 的这个系统中,人的头脑所承载的,就不仅仅是思考的功能,还包括了跨越时间的记忆。这样,「第二大脑」就必须靠着「第一大脑」的协助,才能正常工作。对于部分人,尤其是我这样的懒人来说,这个负担就有些繁重了。

很多人曾经提过的,长期笔记(permanent note)一定要精选。笔记盒里不应该放太多内容,否则会变成噪声。原因之一,恐怕也是记多了笔记,头脑回忆不起来某条笔记存在,卡片也就会「沉底儿」了,白费功夫,没有效果。

可是笔记真的是记得「少而精」,便于头脑记忆才好吗?

这恐怕就是「削足适履」了。

我请教过 《卡片笔记写作法》一书作者 Sönke Ahrens 。他说笔记不应该面向项目,否则就失去了卢曼卡片盒的独特价值。一则灵感笔记,可能对当前项目没有用处。但是将来某个项目中,它可能成为重要的一环。所以,我们不应该设置这样一个「是否符合当前项目需求」的门槛。

雪小豹(李娟)也在文章中提过:

独立性要求最低程度的复杂性。卡片盒需要数年时间才能达到临界水平。在此之前,它仅仅是一个容器,我们可以从中获取所放入的内容。但这种情况会随着卡片盒的规模和复杂性的增加而发生改变。

我们一直啧啧称奇的「知识复利」其实都来自于这种卡片规模与网络链接的复杂性。所以,「少记笔记」肯定不是一个好的解决办法。

那糟糕了。卡片笔记,记少了不管用,记多了会忘掉。这可怎么办呢?

周五晚合桃派直播之后,我带着这个疑问,跟吴刚老师聊了聊。他提到《卡片笔记写作法》中最大的一个缺失,就是这里面有一个默认的回顾过程。如果不进行定期回顾,你基本上就会忘记之前记录的内容,无法把久远的记载与新的笔记有效链接起来。可是书的作者 Sönke Ahrens 似乎内化了这种回顾方式,并没有特别强调。

岂止是没有特别强调啊,Sönke 在文中直接提出,他不认同 ANKI 间隔记忆的方式。

Sönke 对 ANKI 负面看法这个事儿,我问过《卡片笔记写作法》的译者陈琳。他觉得对于卡片笔记来说,类似 ANKI 的回顾是很必要的。虽然他在翻译的时候忠于原作,但是书中对 ANKI 的评价他不认同。

吴刚老师目前在合桃派带着大家做 30 天卡片记录的训练营,「合桃派」视频号里面有群组入口。他在尝试把 Supermemo 这样的 SRS (间隔记忆系统)融入到卡片的记录与回顾中,帮助大家形成回顾笔记的习惯,让卡片笔记系统得以正常运转。

吴刚老师说,大多数人一旦形成了习惯,很多困境(例如写作障碍、拖延症)都迎刃而解。关键是要扫清障碍,尽早迈出第一步

我俩在交流中,各自讲述「偷懒」的事迹,愈加投缘,哈哈。

不过若是比「懒」,我觉得自己更加突出一些。吴刚老师所做的,还是潜移默化帮助你构建习惯;而我则希望更进一步,让你不必作出改变,也能把「偷懒」进行到底。

换句话说,有没有更低成本方式,解决远期卡片的回顾和连接呢?

这个当然可以有。因为我们有人工智能嘛。

很多人揶揄,说现在的「人工智能」不如叫做「人工智障」。对于机器做的很多事情,都不屑一顾。

但我不是这样看。目前机器虽不具备强人工智能,可在某些特定领域,早就把人类这种碳基生物甩得远远的。

不服?你去和 AlaphaGo 下盘围棋试试。

我这篇文章的草稿,是对着 Roam Research 里卡片搭建的纲要,用语音输入自动转换文字生成,识别率很高。背后就是人工智能模型。

我现在做视频已经不用绿幕了,嫌麻烦。随便找个背景录制之后,机器自动视频抠像。效果虽然不能说完美,但是我觉得够用。没有机器学习,这显然无法实现。

我在课上展示几种不同大型猫科动物的图片,让学生来分辨。他们分辨效果不好, 能错1/3,甚至一半儿。同样的问题,拿给迁移学习训练出来的机器模型,准确率都在 99% 以上。

就连考试的时候,不允许你带电子设备,不也是怕你开外挂吗?别人考英语翻译纯凭记忆搜肠刮肚,你这边开个 OCR + DeepL ,那岂不成了碾压?

创作知识不是一场考试。我们应该把所有能开的外挂,都给它开开。

让机器帮忙找寻相关的自然语言内容,其实并不是什么新的功能。Devonthink 就有。

我第一次听说 DEVONthink,就是看到万维钢老师这段文字:

人脑发挥创造力最重要的一个手段,就是把两个不同的想法连接起来。这个连接越是意想不到,创造出来的东西就可能越有意思。想要让想法连接,你得先拥有很多很多想法才行,而现在你可以把想法寄存在一个外部工具里,让计算机帮你建立连接! ……DEVONthink,能用更复杂的算法提供更多的相关内容,而且还有量化的相关度评估。

不过 DEVONthink 更善于英文的相关度评估。中文处理上,尽管 3.x 版本已经有了显著提升,却还有待改进。

我于是就想,干脆把 DEVONthink 的文本近似度计算,直接迁移到 Roam Research 上,不就好了?

目标有了,其实解决起来非常简单。这几年,我的研究一直跟人工智能打交道。

自然语言处理领域,目前研究出的 Transformer 模型是越来越大。咱们个人使用,杀鸡焉用牛刀。 GPT-3 这种规模的模型就别用了,太贵。我直接拿一个几年前的 BERT 基础款模型,就把这事儿干了。

方法很简单。BERT 模型可以吃进文本,突出一串数字(向量)来表示它。我们只需要测量两串数字的近似程度,就能判断两个输入文本之间的关联度。

用 BERT 的好处,主要在于以下两个方面:

第一,见多识广。BERT 训练的时候,采用了大量的语料,因此大部分的通用词汇,都认得;

第二,无需预处理。什么分词、停用词查表、语序、词性…… 全都不用咱们用户考虑,简单粗暴。

靠着这俩优势,写出来的程序也是短小精悍。

为了把工具的不对称优势进行到底,我顺带着还用 Streamlit 做成了个 Web 应用。

你看,这是运行之后的基本界面。

你把最新的一则笔记,放到最上方的文本输入栏里面,然后下面 3 个输入框,提供一些搜寻的范围。

第一个输入框,是标签的白名单

假如你喜欢把长期笔记都叫做 #evergreen ,那么就可以把这个标记放到其中。我不喜欢 #evergreen ,因为太长,懒得敲那么多字儿。于是我用的是 #zk

我这里包含的默认标签列表都是依照自己使用习惯设置的,逗号分隔。其中甚至包括一些 Readwise 自动导入的 Highlights ,以及 Cubox 链接。这样一来,即便你当初高亮的时候没有做任何批注和回顾,它也依然会因为高相似度关联过来。这样你再也不用漫无目的地回顾所有笔记,而是以「输入新的笔记内容」作为触发,唤起对应的久远记忆。

第二个输入框,是标签的黑名单

我平时就把日记都放在 Roam Research 里面,检索的时候我不希望这些内容进来捣乱,直接通过标签排除掉它们即可。

第三个输入框,是你主动检索的关键词

需要扩大搜寻范围,不局限上述标签涵盖内容时,你可以用这些关键词伸出「钩子」,把全库中包含这个关键词的所有笔记(block)都「捞进来」一起分析。

这个例子里,我这里选择默认的方式,不扩展关键词。

好了,点一下 start ,开始执行。

因为调用 Transformer 模型还是需要一些时间上的开销的。所以程序首先分析并且提示,这一轮你新加入了多少条笔记作为候选。

如果你看到数字过大,可能需要考虑重新调整一下过滤器的设置。不然为了看结果,可能得等上一段时间了。

确认要执行,点击一下 「Just do it」 按钮就行了。

将近 50 条新内容加入,分析过程大概持续 30 多秒。注意我做的这个应用有缓存机制。你这一轮已经分析过的卡片(block)内容,下次分析的时候,就不需要额外花时间调用 BERT 模型处理了。换句话说,你用得越久,这个工具执行速度就越快。不错吧?

如上图所示,结果提供的是一个字典。这个字典里,Roam Research 里面的 block id 作为键(key),而取值(value)是对应的块文本内容。

从结果来看,筛选出来的内容相关度挺高。

这个工具并非直接帮助你去建立链接,而是给你找寻一些候选卡片,由你自行决定是否连接起来。链接方法很简单,block id 都在这里呢,拷贝过来加两个括号(例如本例中((71qLjxnbS))),就建立块链接了,对吧?这样保证了笔记之间细粒度的关联性。

之后我换一段内容输入,这次是历史相关内容,讲「佟佳氏」的记载。

你会看到,检索出来的相关内容,画风立刻为之一变。

结果大部分都是我平时阅读并且同步到 Readwise 里面的「历史」主题内容。可见,本应用基于 BERT 语义近似度的计算,确实能够根据输入文本的特征,钩沉不同类别的卡片内容。

注意这里分析的对象,并非直接调取 Roam Research 数据库。每隔一小时,Github Actions 会替我自动更新导出 Roam JSON 文件。我就是用这个一直更新的 JSON 文件做分析。

为什么不直接分析 Roam Research 数据库呢?因为没必要。我每天重度使用 Roam Research ,这个数据本身,就是不断变化的,读取的时候需要考虑太多细节。而静态 JSON 文件,分析起来要简单很多。不抄近道儿,还算是懒人吗?

这样分析静态的内容,会不会有功能欠缺?

我觉得不会。

因为你要关联的,是时间上的远距离记录,是你大概率已经忘掉的部分卡片。我想,你还不至于把一个小时以内写的东西,都忘记了吧?

对于 Roam Research 来说,只考虑文本语义相似度,图数据库的真实威力还远远没有发挥出来。下一步,应该加上块引用构成的网状结构,做图机器学习(Graph Machine Learning)。但是,相对于人工强制性定期回顾卡片,这种基于自然语言处理模型的自动化辅助方式,已经往前迈进了一大步。

讲到这里,有人可能又要开黑了。什么「机器准确度不到百分之百,只能做个参考」,「关键还得看人的能力」云云。

这些陈词滥调一点儿也不新鲜。最近总有人宣传「工具无用论」,说什么最重要的是头脑,而不是方法,更不是工具。

这话我同意一半。这一半,就是头脑的重要性。没办法,老天爷并没有给每一个人相同的智商。爱因斯坦那脑子,在专利局当办事员,也遮掩不住光芒万丈。

但是,工具没有用吗?

近视的人,可以通过戴眼镜来矫正视力。

不会四则口算的收银员,也可以按计算器来得出正确结果。

你从三岁练武,学了一身「五虎断魂枪」的上乘功夫。我手无缚鸡之力,但是手里端着把上膛的手枪,你也得忌惮三分不是?

都赛博格时代了,为什么还有人无视技术与工具的威力,甚至公开宣扬「工具无用论」呢?

因为技术和工具的进步,埋没了部分人先天的优势,甚至抵消掉后天的努力,让他们没有了可以炫耀的资本。

他们寒窗苦读很多年,才能无障碍阅读英文文献。

你往浏览器里装了个插件,英文文献瞬间变成了中文,看得津津有味。

他们拍废了无数胶卷,才知道如何处理摄像的景深,获得专业的画面质感。

你直接买了个 iPhone 13 Pro,抬起手来就拍得像大片。

换位思考一下,他们的气能顺吗?

他们徒劳地高呼,试图把人们拉回到那样一个必须付出高昂成本才能有所收获的时代。这样他们先天的优势,才能显露;他们付出过的辛苦,才没有白费。如果你没有那样的天赋,又不愿意付出同样的辛苦,他们能站在鄙视链的高处,笑着俯视你。

我能理解他们的心境,但是不赞同他们的做法。「工具无用论」的大力宣扬,会给很多知识管理的初学者,带来不必要的心智负担,甚至引入迷途。

知识创造的目的,不是为了勋章,而是为了满足好奇心,为了把世界变得更美好一点儿。

应该「万类霜天竞自由」,而不是所有生物一起去比爬树。这才是打破内卷的有效方式。

这些高呼「工具无用论」的人,出远门儿也愿意坐飞机高铁。交通工具也是工具,他咋不走着去呢?

如果你也是个懒人,请相信 ——「懒」是我们的特性,不是一种罪错。工具如果能让我效率更高,我就充分使用,不需有丝毫的负罪感。

只是注意「以物养己」,而不要「以物役己」,就好。

我做的这个人工智能辅助卡片回顾工具,你想不想试试?

我用 Streamlit 的 Cloud Sharing 功能,做了一个在线演示版本。请你访问这个链接,即可执行。

这里我提供了一个 demo.json 文件,包含了我自己发布的 6 篇文章,作为样例。

你可以尝试改写几次新输入内容,看看应用分别会给你反馈哪些卡片。

如果你想尝试自己的 Roam JSON,请私信联系我,并提供以下内容:

  1. 你的样例 Roam JSON 文件。里面至少包括 3 个不同方向主题,每个 5 个 block,每个 block 标签请打上 #zk 字样,block 内容不要有重复;
  2. 你想输入的几条新笔记内容,最好分别指向不同的主题方向。长度不限;
  3. 你的邮箱地址。

请你把这些内容放到百度网盘或者 notion 页面,然后通过把链接分享给我。如果你的数据通过了我的本地测试,我会把允许上传自己 JSON 版本的应用链接地址发给你。你就可以自己操作,继续使用了。

因为读者众多,而 Streamlit Share 平台并发能力有限。我反馈联系到前10名读者后,本测试自动终止,不再回复新邮件。如果你的样例数据构造有问题,本地测试没有通过,恕不能给你回复邮件详细解释原因。敬请知悉。

测试结束并迭代改进后,我会发布一个公开的在线版本,以及相应的源代码。

注意传给我的内容,和后续上传到应用的内容,不要包括任何隐私信息

给你说一个我的教训。前几天我在直播里面,讲如何用 Telegroam 插件移动端输入内容到 Roam Research 。因为提到了我自己建立的机器人(bot)名称,Roam Research 里,就出现了下面这些 block 。让我哭笑不得。

这显然是观众没有按照流程操作去建立自己的机器人,而是直接在我的机器人这儿试上了。害得我赶紧关闭掉这条输入路径,重新建立了新的机器人。

所以你看,隐私保护一定得注意啊。

我做的这个小应用,只是抛砖引玉。希望更多的双链笔记工具,能把这样的人工智能辅助功能添加集成进来。让用户(包括你我)记笔记的时候少一些顾虑,联想的时候多一些惊喜

祝笔记愉快!

本文参与「少数派 2021 年度征文」活动。如果你觉得本文有用,请帮我「充电」投一票。谢谢!

如果本文可能对你的朋友有帮助,请转发给他们。

欢迎关注我的专栏「科研利器」,以便及时收到后续的更新内容。

 

延伸阅读

> 下载少数派 客户端、关注 少数派公众号,找到数字时代更好的生活方式 🎊

> 年度回顾、好物推荐…… 更多精彩尽在 少数派 2021 年度盘点 🎉