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. 简化各个条目的整理过程(有条件的,尽量自动化)

  • 思源笔记

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

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

    22351 引用 • 89433 回帖 • 1 关注
  • dailynote
    1 引用 • 21 回帖
  • 知识管理
    41 引用 • 346 回帖 • 4 关注
  • 学习

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

    169 引用 • 506 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 我是用有道笔记收集每天的内容,比如网页,公众号文章,以及一些突然的灵感之类的,然后每天晚上集中写到思源的 daily note 中。

  • 其他回帖
  • Rayalizing

    所有新笔记的记录流程都是一样的(文中只是以主题笔记为例)(我补充到了正文中,见 2.1.2 和 2.1.3 部分)。

    节点笔记和关系笔记都是写在文档中的。知识笔记(即节点笔记和关系笔记)的具体笔记方法,参考 Ryooo 大佬的原创文章:释放双链笔记图谱的力量——KG 笔记法,文中的思路和步骤都很详细,可以拿来用。

    • 节点笔记:不要吝啬新文档的创建。只要一个待记录的知识节点具有专有名称(或者你想赐它一个专有名称),你就可以新建文档来写,按照规范来整理。——导致关系图乱的不是文档数量,而是你链接的冗余程度。

      • 如果你是怕出现“孤儿”笔记,你可以:

        1. 放入 归档 目录中分类(类似收藏夹吃灰)详见 2.2.3 文档树操作
        2. 制作成闪卡(Anki),随机回顾,像复习单词卡一样间隔重复
      • 主题笔记 往往会成为链接的交通枢纽,你可以选择性屏蔽。屏蔽方法在 4.2 中详细讲了。

    • 关系笔记:理论上关系笔记都是可以写进对应节点的文档中的。写不写看你的需要(也就是你想不想让它在关系图中出现)。

  • nuomici2222

    看了这篇文章决定把搁置的关系图和标签拿出来用用了,感觉管理文档的思路确实比以前清晰了很多。不知道是不是 bug,我的局部关系图无法隐藏日记(已经关掉了日记开关),但在全局关系图里就可以完全隐藏。

    1 回复
  • gwures

    请允许我抱怨下,文章可读性比较差,当然这基本上是很多大佬在分享双链心得时的通病。你在自己的笔记中看原文是很舒服的,但是呈现给读者却是完全不一样的,因为读者哪怕是跳着读也总是线性的,是没有那么丰富的上下文的。

  • 查看全部回帖