RayalizingPKM - 我的知识管理系统 2.0(基于思源笔记 | 欢迎探讨)

本文介绍了该版本的:笔记架构、记录流程示例、效果展示、最后解释了该系统各个细节的原理,说明了它如何实现大笔记 (传统笔记)与小笔记 (卡片笔记)的融合与共存

这个系统很全,包含了我对知识管理的全部思考。可以说每个标题都是一个比较大的话题(干货),我为了方便整理,全部放在了这一篇文章中。

文章中的“详见 xxx”,“xxx”都是本文的各级标题,可以点击标题快速跳转阅读。

读者可通过每个标题后的导读(标题后的引用框中内容)来速览标题下的内容,方便你先通过速览理解整体框架。

实践了两年 我的 dailynote 流程 1.0 版本,随着笔记量的庞大,我积累了如下痛点:

  1. 笔记检索容易漏
  2. 笔记冗余,检索结果冗杂
  3. 关系图形同虚设,不忍直视(笔记和链接冗杂,导致关系图密密麻麻,全是链接,难以提取有效信息)

为了解决问题,我打算设计一个适合我的更完美的笔记系统。

那么,什么样的笔记是完美的笔记?我总结了这四大核心需求 (拆分后为 10~11 个具体需求,详见附录 完美笔记的四大核心:无压、检索、内容、创造),这些需求称得上我记笔记的终极目标。

从这些需求出发,我设计了我的 dailynote 流程 2.0,暂且称它【RayalizingPKM】。因为它不仅是笔记记录流程,还是知识管理系统

那么,这个系统如何实现上述需求?

总结来说:

  1. 它沿用 daily note 部分流程,并通过规范化命名、固定模板、保证定期整理的方式,实现无压记录;
  2. 通过规范化的内容排版,实现内容可靠;
  3. 通过设计可维护、可扩展的标签编码体系,(并通过数据库提供编码索引和元信息筛选功能),实现检索可靠;
  4. 知识图谱的风格记录方法,分隔知识和思维,解决关系图杂乱问题;关系图 配合 虚拟引用提及 功能,激发灵感。

下面我会按照以下顺序介绍这个系统:

  1. 笔记架构
  2. 笔记记录流程示例
  3. 效果展示
  4. 附录:细节原理解释

1. 笔记架构

  • 我的笔记分三种:节点笔记关系笔记主题笔记(为什么要给卡片笔记分类?详见 卡片笔记需分类:分情况适配各原则

    image.png

  • KG 笔记法 创建知识笔记(详见 KG 笔记法:让关系图变成【知识图谱】)。

  • ZettelkastenMOC 创建主题笔记(详见 主题笔记)。

  • daily note 是笔记入口,创建 草稿日记操作日志(可选)

    • 草稿日记:格式自由,随意引用。方便你随心而动,并作为草稿纸辅助新 Zettel 的写作。

      这里只放 草稿,不存储 知识笔记主题笔记。(所以 daily note 不进入关系图)

    • 操作日志:是我在各个设备、应用上的操作记录,方便快速回看、复现之前做过的配置。

      比如:“Ubuntu 虚拟机的初始配置笔记”、“新电脑需要安装的东西”“思源笔记中使用 Jupyter notebook 的操作步骤”

  • 标签编码系统给每一篇成熟的笔记打上可生长、可维护的标签,满足快速、准确检索的需求(详见 我的标签前缀编码系统)。

  • 数据库(可选) 将每一篇知识笔记和主题笔记加入 数据库,能实现更精确的检索(但由于目前思源数据库的筛选逻辑暂时达不到 Notion 那么全面,所以这一步不是必选项。但鉴于思源超高的版本更新频率,说不定这个功能哪天就提上日程 🐶)

1.1 KG 笔记法:让关系图变成【知识图谱】

KG 笔记法基于知识图谱的理论,解决了笔记记录冗余、双链关系图杂乱的痛点。且对“卡片盒笔记法”的“原子性原则”进行了完善。

具体笔记方法不在这里赘述,可参考 Ryooo 大佬的原创文章:释放双链笔记图谱的力量——KG 笔记法

这里主要谈谈我基于原版进行的扩展,包括:

  1. 将原方法的“概念”和“实体”统一为“节点”。
  2. 增加了知识图谱的“属性”概念,给知识赋予了 属性,用数据库来存储和检索。
  3. 确定了各项属性的键和值。

1.1.1 我对 KG 笔记法的扩展方案:

  1. 实体(或概念)和关系笔记都是知识对象,对它们的处理操作一致,故可统称为 节点笔记

    因此,我的 KG 笔记法的产物是节点笔记和关系笔记,我统称为 知识笔记(详见 知识笔记)。

  2. 每个知识对象都有属性,属性可以自定义,可由数据库来管理。

    灵感来源于 notion 数据库点开每个页面,页面开头的属性栏。

    • 属性是对实体的描述和补充,即数据库中的“特征”(or 列名)

    • 标签可视为页面的一个属性

    • 属性有这些:

      • 对于实体/概念型对象:

        • 类型:节点

        • 标签(以编码为前缀,详见 我的标签前缀编码系统):

          编码分类的标签 + #自创(表示这个概念是我自创的)+#??(表示观点不成熟或存疑)+#TODO(表示待办/有待后续完善)

        • 创建时间(自动生成)

        • 更新时间(自动生成)

      • 对于关系型对象:

        • 类型:关系
        • 标签:#自创 / #?? / #TODO
        • 创建时间(自动生成)
        • 更新时间(自动生成)

1.1.2 知识笔记

知识笔记 是我的知识管理系统 2.0 中定义的一个笔记类别,它是 KG 笔记法的产物。

它有以下特点:

  • 不遵循 Zettel 的 原子性原则不照抄原则

  • 出现在关系图中;

  • 分类:

    1. 节点笔记
    2. 关系笔记

节点笔记

记录“什么是什么”的笔记,是知识图谱中的 节点(node),包括实体、概念,以及它们相关的定理等。该笔记的命名都是 名词

  • 示例:

    • 节点笔记知识图谱Python深度学习、 ...
  • 理论上,与该节点相关的全部内容都可以放到节点笔记页面。包括节点间的关系。但在实践中,会有很多需要关注的关系值得单独写成一篇笔记,即下面的关系笔记。

关系笔记

记录节点间关系的笔记,即知识图谱中的 边(edge)。该笔记的命名格式是 节点A - 关系X - 节点B。其中,关系X动词 为主体。

1.1.3 KG 和 Zettelkasten 的区别和联系

简单来说:KG 明确定义了什么是“一个知识点”,即讲述一个主题的文字就是同一知识点。而卡片笔记法的“一篇笔记只写一个想法”很模糊。

只有一个原子的定义明确了,笔记才不会被重复记录(冗余)。

所以,KG 在这一点更优越。通过明确了“一个知识点”的定义,解决了知识拆分问题,也因此促进了知识融合的进行。

在作者看来(KG 笔记法 - 经验分享),KG 法和卡片笔记法的根本差异在于对 如何拆分知识 的解答。

卡片笔记法仅提出了“原子化”的思想 (“一篇笔记只写一个想法”),但并未给出“原子化”的清晰的操作方式:

它的“一篇笔记只写一个想法”就已经是具体的操作指导,但这里存在的另一个问题是如何去区分一个个想法。

这也就导致了很多卡片法的用户后期会重复记录知识的问题。

而 KG 法中:

而在 kg 法中,知识点被定义为一段讲述了某一主题的文字。这段文字的字数可多可少,关键就是其要围绕某一主题而展开。基于这个明确的定义,我们可以轻松地作出以下判断:

  • 如果两段文字,他们的主题不同,那么他们将是两个不同的知识点。
  • 如果两段文字,他们的主题相同,那么他们则是一个知识点,只不过在表述上存在差异。

基于以上两种判断,我们基本就能将日常生活中遇到的信息压缩成知识了,并且不容易出现重复记录的问题。

至于为什么说 kg 法不仅仅是拆分,也是融合,这是因为日常我们所接触的所有信息,比如一本书、一篇文章甚至一段话,基本都是混合着多个知识点的,也就是同时涉及多个主题的。当我们将这些大体量的信息压缩成知识时,首先就需要将其中的一个个知识点离析出来。从这个视角来看,kg 法是拆分。但是,在人类出版的所有信息中,同一知识会以不同表述分散在不同的出版物中。比如某个学科的教材会有不同人的不同版本。即便在一本书中,同一知识也可能以不同表述重复出现。kg 法需要你在遇到这种情况时,分析、对比当前知识表述和以前记录的表述(已经记录于该知识点对应的笔记中),从而概括出一个更完整的表述。从这个角度看,kg 法也是整合。

1.2 主题笔记

它是 Zettelkasten 的产物。和 KG 笔记法产出的 知识笔记 并列,是我的知识管理系统 2.0 的一部分。

灵感来自文章卡片笔记中的三种笔记类型中的“大纲笔记”。

  • 它是对知识的——面向主题地——整理和展示,

  • 指导思想:遵循 Zettelkasten 的原则,以 MOC 思想为指导。

  • 创建场景:

    1. 期末复习时写知识大纲。

    2. 想到一个灵感,以灵感为契机牵出了以前的知识/主题内容。

      比如:我突然想做一个“基于 RAG 的多轮对话版小爱同学”产品,基于这个主题,我串联起了硬件、软件、大模型部署、提示词工程等相关的知识笔记。还链接了之前的“插件开发:基于笔记知识库的问答机器人”这一主题笔记。

      最终,我以 MOC 的方法将这些内容统一到新的主题笔记:“产品开发:基于 RAG 的多轮对话版小爱同学”。

  • 题目/标题命名:详见 标题命名:直述观点,便于速览

  • 内容模板:详见 笔记模板:嵌入导读,便于速览

2. 笔记记录流程示例

这部分主要是我的知识管理工作流的介绍,包含:笔记流程 -> 笔记记录规范 -> 后期整理流程。该工作流是我的知识管理系统 2.0 的具体操作。

2.1 Dailynote 2.0 流程

该流程以主题笔记为例,从零开始记录了【闪念开始之后 -> 分支填充之前】的部分。知识笔记的记录流程也与此一致。

补充了旧笔记新增新内容时的记录方法。

整个记录过程强调了无压的特点。

2.1.1 以主题笔记为例

  1. 我突然想记录下我最新的笔记流程,因为它善。

  2. 打开日记,在今天的页面上开始记录。

  3. 我先给这个笔记想了一个具体、贴切的标题:我的知识管理系统 2.0。命名规则遵循笔记标题的命名原则(详见 标题命名:直述观点,便于速览)。

  4. 在日记页面中另起一个无序列表,然后打出 【【+我的知识管理系统 2.0,点击新建页面。此时我得到了名为 我的知识管理系统 2.0 的空白文档(我叫它一个 Zettel),同时日记中得到的是连向这个标题的传递型双链(这套行云流水的动作继承自 我的 dailynote 流程 1.0 版本~原理不再赘述)

  5. 点开这个标题双链,进入页面开始编辑。

  6. 开始写正文:1. 我突然想记录下我最新的笔记流程 ... 命名规则遵循笔记标题的命名原则。写到这里,我还没有任何描述“笔记标题的命名原则”的内容,我将日记页面作为草稿纸,分屏到一旁,加了下面这一行(段落块,包在双链所在的列表块中,表示这是该 Zettel 的草稿):

    image-20240903221115-qrhjcfm

  7. 创建链接:点击草稿中“笔记标题的命名原则”的段落块图标 -> shift + ctrl + c 复制为块引用 -> 选中笔记页面中想要链接的锚文本,粘贴。效果如下:

    image-20240903185637-5726vi6

    日记页面的效果:

    image-20240903223850-9ja67oa

    现在,我得到了一个指向草稿中段落块的 静态锚文本,草稿中段落块的最右边也多了被引标识,提醒我这部分之后要单独说明(上述操作相当于链接了未来的卡片笔记)。

  8. 继续写。我希望先随着心流快速记录,以免闪念跑掉,所以不会强制遵循我的笔记记录规范(详见 笔记记录规范)。把规范的压力丢给定期的后期整理(详见标题 后期整理流程)工作。

  9. 在记录过程中,我按照自己的心流,想起来就链接以前(或未来)的卡片笔记,同时写明链接的原因。(其实上述创建的静态链接,链接原因已经跃然纸上了。)

  10. 如果有内容参考自网络的文章,使用 Markdown 引用语法,将引文和参考文献直接贴到相关内容下方即可(如下)。

    毕竟是心流笔记嘛,讲究无压记录,想到啥先记下再说。——鲁迅

    鲁迅文摘(👈 假装这是个超链接)

  11. 确保闪念记录完毕,写完。

  12. 最后,我满意地将这个笔记打上合适的标签:

    image-20240904103343-au319ai

    它表明:

    • 这篇笔记需要在后期整理完善
    • 它属于我的自创内容
    • 它在分类上是一个新增的主题标签:A4 - 我的知识管理系统
    • 它还和已有的其他知识 MOCKG笔记法 相关。

    这些标签是怎么建立的,为什么这么打,怎么还有前缀编码?详见 我的标签编码体系

  13. 以上,就是一个心流版的主题笔记本体的诞生。

    现在该从草稿中处理它链接过的分支了。

  14. 对分支的处理:

    分支就是 Zettelkasten 笔记法中的一个个小 Zettel,由主题笔记整合、链接。

    分支可以单独放在一个页面中(如果我觉得必要),也可以以标题的形式,放在当前笔记中。

  15. 我觉得除了 我的标签编码体系 这一项值得单独说明,其他的都可以作为标题囊括在这篇笔记中。所以我将草稿中其他被链接的段落块,以鼠标拖动的方式拖到当前页面的下方,然后修改成合适的标题:

    拖动 👇

    image-20240904103813-8og1om2

    排版 👇

    image-20240904104154-oi7vtb9

    注意事项:

    • 不要在段首按下退格键,也不要用剪切粘贴来移动。——这样都会改变原有块的 ID,让之前的链接失效!(通过查看块右边的被引标识来确认链接是否失效)
  16. 现在,这个主题笔记已经记好了。接下来开始填充一个个分支(即它所链接的 Zettels)。填充结果如下 2.2、2.3、2.4 的部分。

    注意:这里也是【打通了大笔记和小笔记】的一个范例:即所链接的 Zettels 可以和本文在同一页面,也可以独立页面,具体怎么放全凭个人习惯和喜好(详见:【链接上级标题】能打通“大、小笔记”)。

2.1.2 记录知识笔记:场景不同但流程一致

  • 流程一致:上述流程只是以主题笔记为例,但知识笔记(包括节点笔记、关系笔记)的记录流程也是一样的:以日记页面为入口,新建文档编辑,日记作为草稿纸辅助整理、排版。
  • 场景不同:当你记录所学知识(即输入)时,你一般会创建 知识笔记;当你记录灵感、整合知识(即输出)时,你一般会创建 主题笔记

2.1.3 旧笔记新增内容的流程

前述是新笔记的创建流程,但有时新增的笔记不一定是全新的主题/知识,笔记库中已经有类似记录了,此时就要用到旧笔记增添新内容的流程:总结来说,分为检索定位 -> 记录 -> 后期整理三部分。

旧笔记的增添流程就灵活多了,分以下两种情况:

  1. 一下子能想到旧笔记的题目或关键词,直接搜索题目或关键词即可。一下子想不到的,可结合搜索标签来快速定位(我的标签前缀编码系统 会加速这一步骤),按照 笔记记录规范,增加到旧笔记中即可。
  2. 着急或者当下懒得定位的,就用老办法:以传递型双链的形式,直接写在日记中,只要确保把内容全部包在传递型双链所在的列表项中即可(详见 deerain 的 基本的 daily notes 流程,或 1.0 版流程的方法二)。
  3. 记得要后期整理。

2.2 笔记记录规范

该规范强调了【命名】、【导读】、【链接】、【行文思路】的特殊性,并解释了原因:为了知识的吸收 + 后期的速览。

我的笔记分三种:节点笔记关系笔记主题笔记,(详见 笔记架构)。三种笔记的规范相似,仅在 题目 的命名上有差别。

2.2.1 标题命名:直述观点,便于速览

标题命名的原则:用陈述句阐述正文。这样既方便后期的快速预览,又是总结吸收的过程。

  • 部分观点类 主题笔记题目、以及所有笔记的观点类 标题 都适用此原则。

对于观点类的内容,其标题用完整命题作为题目,让笔记的名称和内容明确对应——题目就是一个通用的命题,一个明确的观点。

题目采用陈述句型的概括形式:A 是 B、A 可以 xxx、xxx 会导致 xxx、(核心:命名应直述观点。)

笔记标题规则大致可归纳为:

  1. 使用陈述句,完整概括笔记内容;

  2. 使用正面描述,便于直接引用,避免一直纠缠于原始问题;

  3. 尽量带上语境,让标题拥有前因或者后果,避免沦为命令(祈使句)。

    e.g.

    • 不给任何理由,就甩出一句 应从多个角度描述记忆卡
    • 改善:从多角度描述记忆卡可缓解浅层模式匹配

出自:卡片笔记是什么(二):API | #UNTAG (utgd.net)

  • 为什么这样命名?

    直述观点的陈述句标题,能让我们在搜索笔记内容、浏览关系图时,通过极速浏览就能获取核心知识(这是我记笔记的终极需求之一,详见 完美笔记的四大核心:无压、检索、内容、创造)。

    给出命令/指示的祈使句标题,仅仅给出“怎么做”,并没有传递知识(即“是什么、为什么”)。

    • 笔记的标题 ---> 程序的 API:标题是为了沟通而存在。易读易懂的笔记,就是运行良好的程序,每则笔记的标题都是一个 API。

      调用 API 时,我们不会关心背后源码如何运作,只需几句话就把它嵌入当前代码;引用笔记时也是如此,作者和读者都不想纠缠其背后的论述过程,只想看到观点或结论。如果一开始就把 API 编写得明白易懂、统摄全文,读者(包括未来的自己)读起来就不必劳神苦思。至于编写 API 的艺术,就是设计卡片笔记标题的艺术。

      卡片笔记是什么(二):API | #UNTAG (utgd.net)

  • 节点笔记关系笔记 的题目的命名:已在知识笔记中详述(详见 知识笔记)。

  • 本文中所有的三级标题都是观点类标题,可作为范例参考。

2.2.2 笔记模板:嵌入导读,便于速览

为了内容可靠、容易快速理解,我的 知识笔记主题笔记 都遵循如下模板。这个模板基于传统的题目 -> 标题 -> 正文排版模式,做了如下微调:

  1. 增加了题目和标题后的导读,方便后期速览。
  2. 简化了参考文献的位置、确定链接原则。

本文也是这个笔记模板的范例之一。

以记录“MOC”这一知识(节点笔记)为例

  1. 题目:就是节点本身

    MOC

  2. 别名:为了方便后期检索,给笔记加别名

    moc, map of contents, 大纲笔记

  3. 导读:目的是转述给未来的自己,方便后期速览。

    我把导读内容放到了 callout (思源集市插件)中:

    image-20240903144217-x8abks1

    • 导读,即以特定用户(未来的自己)为导向的内容组织。

      可包含:写作背景(这段内容是为了解决什么问题) + 内容精炼(这段的主要内容)。

      以体现“我为什么要关注这段内容”的目的去写,更容易结合具体情况写出最适合的导读。比如:

      • 有的宜直接概括,不用说明“写作背景”;
      • 有的内容本身比较结构化,此时只需写出背景,不用概括;
      • 有的一眼可速览的内容也不用写导读。
    • 类比费曼学习法:用自己的话转述知识内容,是知识的吸收过程。想象你在拍一个 vlog,正在向观众介绍自己的所学。

  4. 标题: 尽量写成陈述句形式

    思想:面向主题特点:管理链接优点:高度自由如何实行:以整理和展示为导向

    反例:思想特点优点如何实行

  5. 标题下导读

    如何实行:以整理和展示为导向 为例:

    image-20240904150926-kaj7kko

    • 任何包含长内容的标题(无论几级标题),都鼓励写导读。
    • 怎么还要在标题下写导读?——转换思维:标题下的内容相当于大卡片中的小卡片(详见 【链接上级标题】能打通“大、小笔记”)
  6. 导读下正文

    • 行文思路:

      为了做到有效且清晰地解释事物,应养成这样的写作习惯:

      从问题本体出发 -> 展示 -> 解释 -> 问题-解决方案的故事循环 -> 切掉 10% 去除冗余 -> 频繁检验、迭代。

      (详见 “问题-解决的故事循环”能有效解释事物

    • 中英文之间加一个空格,养成习惯。

    • 允许在必要时抄原文。但要加上自己的理解 + 附上参考文献

      (因为新学的名词、金句,光凭自己的转述无法精确表达原意)

      格式:原文包在 Markdown 的引用语法中,末尾附上参考文献链接(如下图)。

      image-20240904172432-39hvav6

    • 对于电脑操作步骤等笔记,可以直接复制粘贴。

  7. 链接规范:

    (记录时主要看心流,在没养成肌肉记忆前,不必拘泥规范——链接会在定期整理时更正)。

    1. 上下文中写明链接原因——保证链接清晰

    2. 链接对象是标题:

      应链接相关内容所在的上级标题。(为什么不直接链接正文?详见 【链接上级标题】能打通“大、小笔记”

    3. 节点笔记 中的链接:

      有两种情况:简单链接和建立关系笔记的链接(参考 KG 笔记法中信息的五种处理方式的后两种)

      1. 简单链接示例:

        image-20240903152419-fa1se6y

        被“高级 Zettel”链接的标题块(右侧有被引标识)👇

        image-20240904154517-74jbtqz

      2. 复杂链接示例:

        MOC 页面 👇

        image-20240904164117-t43h8u9

        被链接的关系笔记页面(右侧有被引标识)👇

        image-20240904164244-vz41wyd

  8. 打标签:

    “MOC”是一种高级的知识组织方法论,值得我设个新的标签类别,它在实践上又是卡片盒笔记法(标签为 A1 - Zettelkasten)的一部分,所以我新增标签 A11 - MOC 并加到这个页面。同时,我的知识管理系统中的 主题笔记 也应用了 MOC 思想来组织,所以,该页面也打上了离它最近的 A42 - 主题笔记 标签:

    image

2.2.3 文档树操作(可选)

说明:这是以我的人生目标和近期专注为核心指导的文件夹分类,不为细分、要避免层级太深(减少笔记记录压力)。

为的是:减少因同一目录下页面太多而造成的应用卡顿(主要) + 吸引我打开 + 简单回顾。

  • 这个笔记系统的标签编码体系配合搜索功能,已经完全可以代替文档树的作用。但由于同一目录下笔记数量太多,笔记本会出现不可避免的卡顿,故将成熟的 Zettels 分类放置。

    我采取 PARA 这一信息组织法,但简化了 项目 文件夹(因为它是任务管理的范畴,与我已有的任务管理系统重合)

  • 文档树示例:
    image-20240904184052-s0qzvle

    可以把它联想成你的 b 站收藏夹:你总有一些每天会打开的收藏夹(如健身、游戏、脱口秀),也有一些放着吃灰的收藏夹(如钢琴乐理、高等数学精讲、前端开发课程汇总)

2.3 后期整理流程

首先,整理是一定要做的(原因详见 后期整理不可避免,只能简化)。按照自己喜欢的频率设定整理周期。

整理流程如下。

  1. 检查以下项目:

    • daily notes 中有没有传递型双链?——原则上应全部整理到 Zettel 中。(实在是琐碎的观点、好句积累、词汇积累等的,可保留,但鼓励你尽量放到相关页面,写下心得、并给每一次的记录都打好标签)
    • 题目有无其他别名?
    • 题目、标题是否可改进?
    • 导读是否完善?
    • 是否要补充链接?有无冗余链接?链接对象是不是标题?
    • 有没有打标签?
  2. (可选)将新的标签和成熟笔记加入数据库:

    1. 增加页面的数据库属性:

      光标移动到页面标题,按动快捷键(或点击页面块图标 -> 添加到数据库)加入“第二大脑数据库”(这里储存我的所有整理好的笔记页面),给笔记确定各项属性:类型 -> 节点;标签 -> A11 - MOC。如下图:

      image-20240904180600-ie90xe6

    2. 同步数据库:

      将标签内容同步到数据库中,效果如下图。

      image.png

  3. 整理结束后,将成熟的笔记移出 我的笔记本/daily note/ 目录。

    PS:我新建的笔记都会自动存放在 我的笔记本/daily note/Zettels 目录下(可在设置中自定义)

    这样设置的原因:

    1. 为了保持关系图的简洁——关系图会关闭 日记 开关,这样 daily note 目录下的内容将不会出现在关系图中。
    2. 同时,将笔记移出 Zettel 也是后期整理流程的一部分——允许笔记出现在关系图中是整理完成前的最后一步。
  4. 成熟 Zettels 最后放到哪,详见 文档树操作(可选)

最后,我的标签编码体系已写到另一个 Zettel 中,详见 我的标签前缀编码系统

以上,就是一个成熟的主题笔记和其所有关联 Zettels 的诞生过程。

2.4 我的标签前缀编码系统

简单来说:我通过前缀编码,让标签内容也能传递嵌套逻辑,再加上标签本身的组合能力(一个笔记可打多个标签),最终实现检索的高效、精准、全面这一核心需求(附解释) 最后,我会将标签也入库 标签编码库,在定期整理时维护更新。

本文灵感来自:卡片笔记前缀编码的艺术标签不是乱打的:从描述性标签谈起

2.4.1 前缀标签系统是手动的、私人的、生长的

  • 手动:个人笔记系统的编码,是在学习过程中手动进行的。

  • 私人:它完全可以依据个人的实际情况来进行,手动构建私有编码体系

  • 生长:它不是一开始就全部构建好的,而是生长出来的。

    知识是生长出来的,不是建造出来的。

    只有在需要的时候才增加知识结构。

2.4.2 如何编码:字母 + 数字的四位编码方法

字母 + 数字的四位编码,基于你的专注领域来确定第一位字母(从 A 开始)

再基于领域内的已有知识框架,确定第二位数字(从 0 开始)

  • 如何给标签编码:

    1. 知识管理是我关注的第一个领域,在我的认知中,它包含“卡片盒笔记法、MOC、知识图谱笔记法、主题法”等方面的内容,那么我完全可以将编码第一位字母 A 赋予 知识管理

      (我不在乎该分类是否全面,因为我对知识管理的学习目前已暂停并归档。后期如果需要微调,思源的标签整体修改也很方便)

    2. A 后面的第一位数字分发给我知道的所有知识管理下一级的大类(完全根据个人目前的认知和喜好自定义):

      A1 -> 卡片盒笔记法、A2 -> KG 笔记法、A3 -> 主题法

    3. 我将 MOC 归入卡片盒笔记法的下级内容,因为它是构建高级 Zettel 的方法。所以:

      A11 -> MOC。

    4. 以此类推。按照我的经验,这样的四位编码已经能够满足我的分类层级需求(熟悉的读者已经联想到了“中图法”,你也可以用中图法现成的编码方案来给你的知识分类)。

      • 标签前缀编码只是一个模式,这个模式旨在提供标签间的嵌套逻辑。你完全不用拘泥我的四位编码,创造更合适你的标签前缀编码,欢迎评论分享你的思路。

2.4.3 如何规范地打标签:打“最近标签”

  • 对于文章中谈到的每个主题,打一个最接近它层级的标签即可(因为该系统中,一个标签就已经包含了所有上层标签的信息)。

    示例:向量 属于 线性代数线性代数 属于 高等数学,一篇笔记仅仅是关于向量的,那就打上 A21 - 向量 标签(这里 A21 - 向量 就是这篇笔记的“最近标签”),不需要打 A - 高等数学A2 - 线性代数(因为“A21”已经包含了“A”和“A2”两层信息)。

  • 文章中可能谈到多个不同主题,有几个主题打几个“最近标签”。

    示例:我的知识管理系统 2.0 是个主题笔记,里面结合了多个知识点和别的主题。我打上了它内容中提到的所有“最近标签”:

    image.png

    你会发现其中没有 A4 - 我的知识管理系统 这一标签,因为它不是最近标签(A41A42A43 都已经包含了“A4”这一信息)。

2.4.4 用数据库储存编码,方便查询

我通过数据库储存了标签的内容和描述 (每整理一个成熟的 Zettel,我会将它添加到思源的 数据库 中,并在编码库中同步新的标签),如下:

image.png

这样就可以从编码索引中找到要查主题的标签编号、临近编号的标签往往提示“这些主题和你要查的主题相近”这一信息。


2.4.5 前缀编码可传递“意义坐标”,让检索更全面

本部分详述了这个体系为什么能实现检索的快、准、全:

编码体现了多级的嵌套关系和同级的知识关系,就像给了标签“意义坐标”。

实时维护规范的编码系统,通过搜索编码就能实现全面、无遗漏的检索。

给标签加前缀编码,可能是目前表述知识内容间的嵌套、关联关系的最简单、经济的方式。

编码,其实是标签在认识论上的空间坐标,相当于地点的经纬度。打上第一个标签,就在标签体系里找到第一个位置,可以顺藤摸瓜,找找相邻的标签是否可用——或者更好。

标签不是乱打的:从描述性标签谈起

  • 为什么编码能让知识检索更全面?

    • 设想你有一个关于线性代数的标签,编码为 A01,还有一张关于微积分的标签,标记为 A02,以及一张“数学”标签,编码为 A0。

      当你想要检索所有数学领域的资料时,只需键入 A0,这样你就能获取到线性代数和微积分两个子领域的相关内容。

      如果你只想查看线性代数的资料,你可以输入标签 A01,这样就会过滤掉微积分的内容——除非某份资料同时打了这两个标签。

    • 反例:如果你没有规范的标签系统,你可能会给“线性代数相关的笔记”打上 线代 标签、有时又打上 线性代数 标签,当你检索 线性代数 时,势必会漏掉仅带有 线代 标签的笔记。

      你常常会因为不信任自己的搜索结果而反复搜索多次不同的关键词,

      尽管如此,我还是无法确认是否搜到了全部的相关知识(尤其是多次搜索都没有搜到任何相关信息的时候,我会花时间思考我还漏了哪些关键词,甚至会跳进关系图中做不必要的遨游)。

      • 每次检索的压力就增加了。
  • 编码标签和文档树的关系?

    标签的检索过程看起来很像从文件夹中找东西?那么,为什么不直接用文件夹而是用标签编码?——文件夹只能显示嵌套关系(树状),但无法提供同级甚至跨级的关联关系(网状),而标签可以。

    • 简单来说:一个知识可以打多个标签,但不能同时出现在多个文件夹位置。

3. 本系统达到的效果

  1. 无压记录:

    • 快速定位记录区域:沿用 daily note 部分流程,打开笔记就能定位记录位置;
    • 快速记录:允许记录心流笔记,也能通过固定模板养成肌肉记忆,能减少后期整理的压力;
    • 快速排除后顾之忧:并通过明确的命名和模板规范、保证定期整理的方式,减少整理和检索压力。
  2. 内容可靠: 通过明确的内容模板规范,实现快速理解、快速浏览各个笔记卡片;

  3. 检索可靠:

    • 标签编码的设计,让用户能快速定位检索内容、其近邻知识、且检索结果中能包含其下所有内容。

    • 结合数据库的元信息筛选功能,实现检索更准确;

      示例:检索关于“A1 - Zettelkasten” 主题的、在今年 9 月之后更新过的笔记,检索结果如下:

      image.png

  4. 激发灵感:

    1. 关系图增加了 边的信息,可读性更高:

      通过 关系笔记 来给关系图的边(即节点间的连接)赋予信息,让其成为真正的知识图谱;

    2. 解决了关系图杂乱问题:

    3. 最后,关系图 配合思源的 虚拟引用提及 功能,通过链接和可视化知识的被动生成,能激发灵感。


4. 附录

以下是这个系统中一些重要细节的原理解释。

4.1 完美笔记的四大核心:无压、检索、内容、创造

我为了创建完美的知识管理系统,总结了记笔记的四大核心需求(or 核心原因),拆分后为 10~11 个具体需求。如下。

  • 无压记录

    1. 快速定位记录区域
    2. 快速记录
    3. 快速排除后顾之忧

    参考这里的分析:为心智负担兜底的一切

  • 检索可靠

    1. 检索快:快速定位检索内容
    2. 检索准:能定位全部相关内容

    想象这个场景:

    • 某刻想记录“知识图谱的建立工具”,通过两次以内的ctrl+P搜索,我就可以确信:搜索结果的顶部会包含最接近该内容的笔记以及所有的相关笔记
  • 内容可靠

    1. 内容好懂

      • 我熟悉它的行文风格——即用我自己的话写成(出自 Zettelkasten 和费曼学习法)
      • 语句简单、朴素
    2. 能快速理解:通过极速浏览就能获取核心知识

      • 统一的行文逻辑(甚至统一格式,格式甚至可以自动生成) 、整洁的排版
      • 内容精炼、短
    3. 逻辑清晰(甚至逻辑一致——通过固定模板实现)

    4. 标题与内容紧密相关

      不含浪费人时间的冗余、错乱内容 (让人有点开看的欲望)

    5. 链接清楚、完整

  • 能激发灵感

    1. 笔记间的链接清楚
    2. 链接直观、可读性高
    3. 能实现在笔记中路径清晰地遨游

4.2 卡片笔记需分类:分情况适配各原则

这部分内容是为了解决卡片笔记下面两个原则不完备的问题:

  1. 对晦涩的新知识,怎么遵循“不照抄原则”?
  2. 对一下子学到的系统性的知识,怎么遵循“原子性原则”?

解决方法是:先澄清各个原则适用的卡片类型 -> 给卡片分类 -> 不同类别的卡片遵循不同原则。

本文参考自卡片笔记中的三种笔记类型 | #UNTAG

  • 为什么要分类——遵循卡片笔记的原则需要分情况。例如:
    1. 学到一个晦涩的心理学概念,确实需要摘录其完整定义,怎样才能不违背“不要照抄”这一原则?
    2. 整理好 Dieter Rams 的十大设计原则 1,如何存进卡片盒才能不背离“原子笔记”对篇幅短小的要求?

    ……

    种种疑惑的根源是缺乏分类标准:如果能够事先澄清各个原则或规则所适用的卡片类型,则前述矛盾多能迎刃而解。

    卡片笔记中的三种笔记类型 | #UNTAG

  • 怎么分类——区分知识笔记和主题笔记
    • 知识笔记:其创建场景就是学习新知识,可在必要时突破“不照抄原则”。

      为了保证其权威性,还可以(也应该)突破那些“不能照抄”的教条,大可记下公认定义。

      卡片笔记中的三种笔记类型 | #UNTAG

    • 主题笔记:其创建场景是输出思考和灵感、整合知识。此时,应遵循“不照抄原则”。
  • 为什么这么分?
    分类的核心目的:解决卡片笔记法两个原则的不完备问题。
    所以,相比于卡片笔记中的三种笔记类型中的分类,我在 RayalizingPKM 中作了精简的分类,力求简化分类压力的同时解决不完备问题。细节原因如下:
    1. 知识笔记依托的 KG 笔记法已经更好地解决了“如何遵循原子性原则”的问题。

    2. 主题笔记一般是卡片笔记中的交通枢纽,如果你担心过多链接会污染关系图,你可以将主题笔记拖进 daily note 目录下,并关闭关系图的日记开关,暂时屏蔽它们 (如下图)。

      image.png

    3. 在笔记的任何位置都可以通过加特殊标签来标明笔记的其他属性,这样可以代替笔记的其余分类。示例:

      • #?? 表示存疑、不确定;
      • #TODO 表示需要补充完善;
      • #自创 表示这个知识/词条是我自己命名并定义的。

        在思想领域,为某个点子命名就相当于拥有了它。同样,如果你能够命名一个问题,你就可以拥有这一问题。——托马斯·L.弗里德曼

    4. 至于“原子性原则”:
      "原子性原则"的目的是让笔记连接起来的指向性更加明确。
      在本系统中,一个页面的题目或页面中的一个标题就是一个 Zettel,Zettel 中又可以【在需要时】通过增加下级标题来进一步细分更小的 Zettel。所以,从“链接指向性更明确”的目的上看,在本系统中,只要你注意标题命名和链接的规范(详见 【我全都要】:用工具和规范来融合大小笔记 下的第二点),理论上任何笔记都不需要遵循“原子性原则”。

4.3【链接上级标题】能打通“大、小笔记”

简单来说:借助思源的“块属性”和“允许标题显示在关系图中”的功能,通过【规范标题命名】和【链接所引内容的上级标题】能够初步实现大小笔记的融合。

4.3.1 大笔记和小笔记的概念:

总结了大小笔记的概念、优点,和各自的需求。

摘自译文:众口难调的笔记,各取所需的工具

(原作者Chris Grieser ,原文标题为 One-Size-Fits-All? How to Take Big Notes and How to Take Small Notes )

大笔记指文档以长内容为主的笔记,特点是自上而下的层级思维,强调层次和秩序;

大笔记的优点:

  1. 严格的层次结构——使你尽快找到特定的信息;(需要搜索某一信息时,你会从主题开始,随后移步至相应小节)
  2. 更适合于收集既定知识——大笔记中,秩序不会主动涌现,而是在初期就被创造了。

大笔记的需求:

  1. 笔记内导航

    1. 相关功能:折叠、
    2. 自动生成大纲/目录
    3. 代码编辑器的 minimap 功能(还未实现,但很可能受欢迎)
  2. 链接

    1. 链接到特定标题,甚至区块的能力
  3. 追加、前置或移动文本

    1. 能让你把文字插入到特定位置,甚至不需要专门打开它(可通过插件实现)

小笔记是以短内容为主,特点是自下而上的扁平思维, 强调联系与创造。

小笔记的优点:

  1. 扁平分层,旨在鼓励我们主动寻找联系,而不是接受别人强加的秩序

    理想情况下,我们在以前不相关的主题之间追寻联系,从而变得更有创造力,这种效果也被称为“偶遇的小美好”(serendipity)。

    众口难调的笔记,各取所需的工具

  2. 适合开发新想法的知识工作——避免了分层系统的束缚。

小笔记的需求:

  1. 链接——链接是小笔记的粘合剂

    相关功能:

    • 反向链接
    • 自动补全
    • 自动建议("这两个笔记可能相关")
    • 数据库功能——用来汇总
  2. 快速创建新笔记

  3. 处理元数据

    • 元数据是关于数据的数据,比如笔记的创建时间、标签、作者等信息,这些信息有助于更好地组织和检索笔记。因此,对元数据的重视变得尤为重要。
    • 根据创建时间、标签或其他元数据来过滤搜索结果,可以提高搜索的准确性和效率。
    • 更多的笔记意味着整个知识库——平均来说——也应该有更多的元数据(metadata),因而需要多加重视。如果不考虑元数据而直接搜索搜索笔记标题,你通常会得到铺天盖地的搜索结果。这使得处理元数据的插件和前面提到的数据库类型插件一样,和小笔记系统相得益彰
  4. 方便切换/方便预览。

    1. 比如:链接的浮窗功能,能让你在知识中徜徉。

4.3.2【我全都要】:用工具和规范来融合大小笔记

大小笔记的选择,一直是知识管理者的热点论题之一,Grieser 的观点是各取所需,核心在于工具的选择。

在我看来,即使同一个人在不同场景下,对大、小笔记也有不同的偏好。比如,学习新知识时,显然大笔记更适合我;而记录闪念、整合思维、创造灵感这些场景中,显然小笔记更能发挥作用。

那么,在同一个笔记本(or 个人知识库)中,为了适配不同时间不同场景的需求,我能否既要又要的同时,不影响知识库本身的秩序?

  1. 选工具:能同时支持大小笔记的优点和需求。

    思源笔记的块属性和其他全面的功能,能同时支持大笔记和小笔记的记录需求:

    • 细粒度极高的块属性,一切皆可成为【有唯一 ID 的知识对象】。 -> 能满足小笔记链接的同时,将大笔记看作有序摆放在一个页面的小笔记的集合。

      理解这句话需要你转换思路:将一篇传统文章看作一组原子笔记的集合体——该文章本体相当于一个 高级 Zettel,每个低级标题是高一级标题的小 Zettel。只不过所有小 zettel 的内容直接平铺在了同一页面。

    • 思源允许标题显示在关系图中,而链接的显示需要:将链接放在标题上(见下面的规范)。

  2. 制定兼容大、小笔记的记录规范。

    我的知识管理系统 2.0 中,笔记记录规范的部分设计,实现了大、小笔记的融合:

    1. “创建链接时,应链接相关内容所属的上级标题”——这一设计实现了 页面其他页面中的标题 之间的互连,将标题和其下内容变成了小 Zettel。

      打开关系图的标题开关,小 Zettels 就以节点形式显示在了关系图中,同时显示了 被引用标题节点引用该标题的文档节点 之间的连接箭头。

      如下图:(黑色节点是文档块,紫色节点是标题块,灰色线条是文档和标题的连接,红色箭头是双链建立的连接)

      image.png

    2. “笔记题目和标题采取同样的命名规范”——这保证了标题在关系图中的可读性。

  3. 对思源关系图功能的优化建议:

    现在,思源已经可以在关系图中打开标题的开关,从而显示标题节点。(这得益于其独特的“一切皆对象”的数据存储架构)

    后期如果能将下面两个功能/插件开发出来,上述的操作就更加有意义:

    1. 【重要】标题子内容之间创建链接,其所属的上级标题节点之间能够产生连接箭头。(即,箭头连接的细粒度从文档块缩小到标题块)

      解释:目前,在文档块的子内容中任何一处创建一个链接,关系图中都会显示【链接内容所属的两个文档块节点】和它们之间的连接箭头。即使打开标题开关,也无法显示被引内容所属标题之间的连接。(除非创建双链的部分和被引用的部分都是标题本身)

      • 若能达到这一点,就不用通过刻意链接内容的上级标题来达到“让标题的链接显示在关系图中”的目的了。
    2. 【次要】优化关系图中标题和其所属文档的显示效果,让它们相较于其它关联此文档的文档块节点,显得更亲密——突出从属关系。

      比如:标题和页面 A 的链接距离应比其他页面与 A 的距离小;或者用不同的可视化形式(如星球和卫星)来区分子标题和其他的页面。

4.4 "问题-解决的故事循环" 能有效解释事物

这是一个记笔记、做解说、演讲的通用有效模板,也是一个让 AI 来解释名词概念的提示词模板。

方法概述:从问题本体出发 -> 展示 -> 解释 -> 问题-解决方案的故事循环 -> 切掉 10% 去除冗余 -> 频繁检验、迭代。

本文全部参考自:如何能详细地解释一个事物 (notion.so)

问题:如何让你的读者/听众更容易理解你的内容,并持续被你的内容吸引?

解决:这个方法来自《How To Explain Things Real Good》是 Nicky Case 在斯坦福的一次演讲:

  1. 表现出你在乎的东西本体(而不是在乎的原因)
    e.g.
    反例:我为什么关心笔记记录方法?——因为它让我能更好地存储并串联我的思想
    正例:我想让我的思想永久保存,并且随时可以快速回溯——因此,我需要探索一个合适的笔记记录方法。
  2. 先展示,再讲述(先直观展示、形象比喻,最后具体解释)
  3. 因此 & 但是(和问题-解决方案的故事循环)
  4. 写一份草稿,然后砍掉 10%
  5. 尽早、频繁地实战检验

一个故事循环示例:

  • 问题: 有一个美丽的,重要的,复杂的想法,你想让别人知道。
  • 因此,你需要一个解决方案: 写一个解释的大纲 —— 是什么让你关心,具体的例子是什么,因此 & 但是 —— 和即兴演讲的朋友测试。
  • 但是,你遇到一个问题:你的朋友喜欢它,但是他们对某些部分感到厌烦,并且他们误解了其他部分—— 注意这是学习的感觉,还是真正的学习。
  • 因此,你更新了一个解决方案:你接受他们的反馈,写第一稿,然后削减 10% 。然后,发送出去以获得更多的反馈。
  • 但是,你会发现有更多的问题反馈;因此,你需要使用更多的解决方案来迭代。
  • 不断重复,直到你真正解释清楚,然后点击发布按钮,向世界展示它。

4.5 后期整理不可避免,只能简化

为什么不可避免:不整理会降低信任度。

-> 所以真正要做的是简化检索

-> 简化检索的三个方向。

一个很好的比喻:

当你记笔记时,你实际上是给一个苛刻的用户——未来懒惰版的你——设计一个产品。

所以,你需要推销你的产品:

  • 吸引注意力,激发兴趣,建立可信度,激发欲望,马上采取行动。

回到笔记记录:

我们说的无压笔记,是指“当下的记录压力是可以完全释放”的笔记,释放的方法之一就是相信自己会后期整理。

所以,后期整理这个过程总是要做的。因为不整理,你对整个笔记本中就会多一篇杂乱文章,要么影响你检索,要么扰乱关系图、影响你观看。结果:降低未来的你对“这款笔记产品”的信任度。

因此,老老实实设个定期的整理提醒吧。不要有后期整理可以被无限拖延的幻想。

那么,减少整理压力总可以吧?可以的:

  • 我们真正要考虑的是如何尽量简化后期整理过程

最后,如何简化后期整理?可以从三个方面着手:

  1. 一开始记录时就按一定的规范写,养成肌肉记忆

    (平衡当下压力与后期压力。一旦将规范养成肌肉记忆,当下压力也会降低)。

  2. 减少后期整理条目

  3. 简化各个条目的整理过程(有条件的,尽量自动化)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23007 引用 • 92542 回帖
  • dailynote
    1 引用 • 21 回帖
  • 知识管理
    42 引用 • 353 回帖 • 4 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    171 引用 • 512 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • nuomici2222

    试了一下,在 A 页面引用 B、C,如果在日记中引用 A,A 的图谱不显示日记;如果引用 B 或 C,A 的图谱里会显示日记。感觉有点反直觉。

    image.png

  • 其他回帖
  • Rayalizing

    谢谢你的用心评价!其实这两篇文章并无冲突,只是侧重点不同:我的方法侧重于【怎么完美地整理】以及【怎么给整理减负】,你说的文章侧重于【无压记录】、【为什么无压】这一条。怎么选呢,还是看你具体场景下的需求:

    需求一:如果你只是想在忙碌的间隙快速记录一个琐碎灵感,你完全可以在记录时按照你提到文章中的无压记录方法,通过 传递型双链关联型双链 在 daily note 中直接记录碎笔记。因为文中也提到了,在整理时你完全能够在反链面板中找到所有的链接内容。

    同时,也想强调一下:我的方法在记录时刻,也是可以【兼容】上述的无压记录操作的。相比于该无压记录操作,我多出的步骤是为了【减轻后期整理的压力】而存在的。正是我文中说过的,我是在“平衡当下压力与后期压力”。

    需求二:你打开了一门网课,想边听边记录,这种记录一般是成体系的,此时我建议你考虑试用下我文中提到的记录工作流。当然,你也可以通过传递型双链将其直接记录到日记中,只要将所有内容包括到双链下的列表里即可。(这个其实和“点击双链内容打开新页面,直接记录到新页面上”一样吧?)

    我是个 P 人,很喜欢无压,我对双链笔记的入门也是从双向链接时代的快速无压记录开始的,同意 deerain 大佬对于【如何无压、为何无压】的全部观点。但由于我对【整理】这件事一直拖延,当笔记记录多了,该记录方法的检索问题渐渐放大。因此对“个人知识库(PKM)”这个概念热衷起来,为了建立个人知识库,所以才钻研了现在这个【整理】的方法。

    一个题外话,想提醒注意一下:在我的方法里,这篇文章的这个部分提到的“双链标签”是不能代替“井号标签”(即传统标签)的,因为井号标签——或者说标签——自古以来的作用就是主题式的检索,“双链标签”在思源中无法达到这个作用。

    1 回复
  • summeryear 1

    感谢分享,受益匪浅。但楼主的 dailynote 流程的前提是已经存在节点笔记或关系笔记,在此基础上写主题笔记,即大纲笔记。请问 dailynote 流程如何实现记录节点笔记和关系笔记呢?节点笔记和关系笔记都是写在文档里吗?这样会不会产生很多小笔记?什么时候该写在块里,来链接块呢?

    1 回复
  • Floria233

    与楼下相反,这是我目前看到,与我做法最类似的一种笔记流。基本上全程体验都很顺畅,只有软件方面的适配度还差点意思。

    不过,我也赞同楼下一点,dailynote,因为记录的东西太多太杂,再加之思源这个坑爹的文档树(也可能是我强迫症喜欢删掉无关的内容),我倾向于直接用一个全平台轻量笔记软件直接记录每天所借接触的所有内容,定期与思源联动整理。思源的 dailynote,我个人认为只有在与某个具体项目搭配时使用,体验最佳。

    2 回复
  • 查看全部回帖