缘起

Roam Research(简称 RR),作为电子笔记领域第一款正式推出双向链接(简称双链)的革命性知识管理工具——RR 的核心在于非线性的笔记组织方式。

问世之初,RR 在大纲笔记的同类产品中可谓是大杀四方,无人能挡——那之后,双链笔记类工具便如同雨后春笋般不断生出;

RR 之前

 

RR 之后

现如今,在电子笔记界最具热度的除了 Notion,就是同样以双链著称的 Obsidian。而 Roam Research 虽然作为最早实现双向链接的笔记应用,如今却已“泯然众人矣”,不禁令人感慨唏嘘……

单链与双链

单向链接
双向链接

而所谓的双链。基本上可被认为是一种超链接的内链形式,用于在单一文件系统中建立起不同文件的联系——而双链通过建立起笔记之间的(动态)联系,使用户能够轻松地在不同的段落和页面之间跳转与编辑。

关于双向链接的启源,甚至追溯到超链接的诞生之前,感兴趣的朋友可移步至之前的文章——Roam Research:一款为研习者而生的笔记工具 | 认知下一代信息管理系统


为什么说 Roam 的双链是真双链,而 Obsidian 的是伪双链?

双链充要性

依赖于文件目录路径的 OB 双链不可称之为「双链」

更新链接弹窗

可以看见,当尝试修改文件(夹)名称时,OB 会自动弹出一个「更新链接」的提示窗口——表明这种修改文件(夹)名称的行为将影响到不同笔记文件下方的内部链接。

这也就意味着,当个人笔记库越大,笔记内容越多,且建立起的双链越多时,文件系统将需要消耗更多的性能资源来用于更新这种双链的「内链形式」。

OB 的文件系统基本符合树状结构

仅从数学角度出发,这几乎是一个指数级膨胀的问题

n 为笔记页面的节点数量,上述公式的计算结果为双链的最大数量

至于具体的应用方面,OB 除了基本的查看反链 (backlinks),似乎再没有任何拿得出手的功能了——且不论那「食之无味,弃之可惜」的图谱,除了能重播一遍又一遍的「生长动画」用于“聊以自慰”,实在别无他用。

基于双重 ID 的双链具备基本的链接鲁棒性

而关于 RR 在实现双链的特性上,则显得“大智如愚,大巧若拙”——它直接把笔记的内容,通常作为「字符串」的文本信息直接写入代码层,并明确了笔记的基本单位为一个段落区间 (block)。

Roam 如是说:把笔记内容 (string) 写进数据 (data) 里!

Datomic 附言:数据 (data) 即是代码 (code) !

并且,RR 还通过赋予 block 双重 ID 的模式,来保证 block 的“本体性”不会受到任何涉及区块内容(段落笔记)操作的影响。

  • 实体 ID - 隐藏 ID:可以看作是块的不可见标识,直接指向块的实体
  • 块 UID - 公开 ID:通常是由 9 个字符组成的字符串,引用或嵌入块的内容并指向块的位置
  • 页面 UID - 节点 Title:页面仅作为一类特殊的 block 存在,二者并无实质性区别

修改标题名称并不会使已有的普通双链失效

关于页面 UID,可以对比一下复制的块/页面链接:

复制(块/页面)链接
  • https://roamresearch.com/#/app/graph/page/S8Tiqo7Om
  • https://roamresearch.com/#/app/graph/page/etJ34Rjg1

可见,单从复制的网页链接上看,并无法区分「块」与「页面」——换言之,页面同块一样,具备独一无二的 UID,但在引用/嵌入的形式上却是基于「标题名」实现的。

文件树:存在于图谱之下的树状结构 ×

大纲树:存在于笔记之中的树状结构 √

Roam 笔记页面大纲的树状结构

上述,并不是为了抵触笔记在思维脉络上的「树状结构」;相反地,树状结构的思维模式至今仍然是人类认识客观事物,理解抽象概念的“最佳利器”。

MIT 认知科学家 Josh 发表在 PNAS 的论文中1,比较了抽象知识的不同表征结构,如星形结构、聚类结构、环形结构等等——最终,他用数学方法证明人类最佳的抽象知识结构是树形结构。

因此可以说,只有树形结构,才是最符合人类认知特点的一种结构,因为从树的上一层到下一层,具备唯一通道——便于大脑将知识从记忆底层快速提取出来,很符合人类大脑是个认知吝啬鬼的特点;同时,树又是兼具横向扩展与纵向扩展能力的最简结构。

——人类的最佳知识表征结构是什么?

基于 RR 双链赋能节点式功能模块

而在功能嵌入方面,RR 则很“明智”的通过(基于节点式的)格式,来实现各种各样的简单或复杂的组件 (components) 渲染。

先举几个简单的例子来说:

看板 kanban

Roam kanban
  • {{kanban}}
    • 第一栏目
      • 卡片1
      • 卡片2
      • 卡片3
    • 第二栏目
    • 第三栏目

表格 table

Roam table
  • 表格 {{table}}
    • 行列
      • 第一列
        • 第二列
    • 第一行
    • 第二行

复杂一些的,还包括音视频/网站之类的嵌入模块:

{{audio: https://firebasestorage.googleapis.com/v0/b/}}

歌曲 For All I Know

{{video: https://youtube.com/lOoMoRVImeo}}

位于 diagram 的视频嵌入

{{iframe: https://worrydream.com}}

嵌入移动端的维基百科

更为复杂的,诸如条件式的查询模块 (queries) ,则能通过构建一系列的简单条件组,来满足各种各样的查询需求:{{query: {and: [[TODO]] {between: [[last week]] [[today]] }}}}

释义:查询并检索到「上周到今天」的,所有包含 [[TODO]] 的代办事项。

原生 {{query}} 查询块通过条件式语法,检索 [[Roam Depot/Search+]] 下的代办事项

上面各式各样的功能模块,想必对于初识 RR 的朋友来说过于“眼花缭乱”。

但概括下来无非就一句话:基于节点的模块格式在事实上具备完备且实在的(因果)逻辑性。

{{[[video-timestamp]]: ((block-ref)) 00:mm:ss}}

  • [[video-timestamp]] 视频时间戳模块
  • ((block-ref))视频时间戳模块仅针对于指向的某一「视频块」有效
  • 00:mm:ss时间戳对应「视频块」的具体时刻

以上,便是笔者在 RR 双链的鲁棒性以及功能实现(模块应用)上进行的充要性论证。


图谱实在性

断论:不具备双链充要性的知识图谱,不具备任何(可能的)实在意义

对于大纲式,或者说就双链笔记而言,笔者认为存在那么一句箴言:

网状结构存在于图谱之上,树状结构存在于笔记之中。

Query Builder: 基于 datalevin 的前端式数据库

在 Roam 当中,一个个独立的 Graph,实际上可以看作是某种“前端式数据库”的底盘

而背靠分布式数据库 Datomic 的 RR,更是内置有「类 lisp 语言」的原生查询能力——无须外置任何插件的功能,即可(可并行的)执行各类复杂化的条件式语句插件。

蓝色部分为条件语句的实际代码,红色部分为所有返回的检索结果

也就是说,RR 的查询能力事实上并不依赖外置插件的功能,而是通过 Query Builder 渲染的一套可供交互的 UI 组件,以便于视觉化构建(更加)复杂的条件式查询机制。

除了第一个案例中演示的 query builder 示例(仅作渲染目的),以上所有功能模块均不依赖于任何外置插件的功能

基于 query builder 的音频(歌曲)检索,附个人评分

Search+Fuse: 联合 Fuse.js 赋能的本地化搜索模块

条件式的查询语句对于不少用户来说,难免感到“一知半解”,又或是觉得“大材小用”——总之实在是“兵器虽坚利,奈何不趁手”;而单纯的「搜索栏」更是无力应付日渐累加的笔记内容,毕竟在同时面对 pages 与 blocks 的共同内容背景下,未免显得强求了。

在搜索栏处检索包含 emacs 关键词的所有 pages 与 blocks

Search+ 则提供了另外一种本地化搜索的折中方案,配合 Fuse 提供的轻量化模糊搜索,还可实现一定程度上的「关键词容错」。

通过 RegEx 正则化语法,搜索某一问题下各用户答复

总之,以上无论哪种方式,都是由 Graph 直接或间接的赋能,从这个意义上来说,更像是 RR 允许其用户依托于知识图谱自身,从整个(节点式)网络当中获得反馈(查询结果)。

GraphRAG:背靠 LLM 实现的动态知识图谱

今年 2 月,由微软研究人员于 2 月份正式推出的 GraphRAG(检索增强生成)技术,旨在实现更具结构化,层级化的知识图谱网络,以拓宽 LLM 在面对更多实际问题(从未被训练的现实数据)时的应答水准。

由 LLM 基于私有数据生成的知识图谱

应该说,GraphRAG 给予了 RR 这类图谱式大纲笔记一定的启示——在未来 LLM 大语言模型赋能更多应用场景时,软件内部的动态更新能力一定是重中之重。

在前文中曾提及到一点,OB 在需要大量双链变化时的情况下,而迫使系统不得不去消耗额外多的性能资源来更新并维护图谱本身已建立起的双链结构。

而考虑到终身学习时代下的个人知识储备,也势必在可预见的将来与日俱增——届时,恐怕以 OB 为首的笔记工具将必然在 LLM 小型化,本地化的时代下显露颓势,这不仅是对于同类笔记工具的现有评价,更是出于此类“文件系统”在面临大量动态更新场景下的一种考量。

我们不得不面对这样一个事实是:

  • 个人信息仍然被散落在不同的应用之间
  • 由独立个体产生的信息必然具备其相应的独特性
  • 对于知识管理的需求正在不断的增多,变化

笔者在这里不敢断言 RR 一定会在未来的笔记市场中再次胜出,但笃定的一点是——未来既不属于 Obsidian,也不会是 Notion,而必然是 Roam 类的图谱化个人信息管理应用!