这是一个鼓励「记录」的时代。社交平台鼓励你「记录自己的生活」,笔记软件鼓励你「记录自己的知识」。可是当你真的在笔记软件中记下了大量的内容之后,你就会发现:笔记库的大小慢慢超出了你的处理能力。那些不在你注意力范围内的笔记被逐渐淡忘,不再被打开,成为了躺在笔记库中的无用资产。随着笔记数量的持续增加,这些无用资产的占据的比例也会越来越大,直到有一天,笔记库会成为一个无用的包袱。即使身为笔记库的缔造者和所有者,你也无法发挥出它的应有的价值。

所以该怎么样才能避免笔记库成为负担、将其打造为真正的「第二大脑」?这篇文章给出了我的思考与解决方案。

信息过载

人脑处理信息的能力是有限的。如果需要处理的信息量超过了人脑的处理能力,就会发生「信息过载」。

一般来说,人的注意力最多只支持同时处理 6~7 件事情;相比之下,人能记住的内容(长期记忆)会相对多一些,但是仍然满足不了需求。为了解决脑子不够用的问题,我们发明了「写笔记」。从记笔记的普及程度来看,笔记确实解决了很多问题,这说明「好记星不如烂笔头」这句话所言非虚。

可是随着笔记数量的增多,我们连「记住自己写过哪些内容」都开始办不到了。以我的 Obsidian 笔记库为例,仅仅两年,笔记数量就超过了 750 个,总字数超过 80 万字。一年以前写的笔记内容在我脑海中已经基本不剩什么痕迹,以至于我看见某些「新东西」的时候会不假思索地当做新知识重新学习,忘了我其实早就有相关的笔记可以帮我快速回顾。

image.png
具有 750+ 个笔记的知识库图谱

除了 Obsidian 笔记库,拥有上千篇文献的 Zotero 文献库也会产生类似的问题。其他笔记软件以及文献阅读软件也是同理。

image.png
我的Zotero文献库

为了利用好庞大的知识库,大家发明了很多方法。比如有人会将笔记制作成 Anki 卡片,定期进行复习;Obsidian 则提供了一个核心插件 Random Note,通过随机打开一个文档来让你对知识库的其他部分也保持感知。然而在我看来,目前对于这个问题真正的解决方案其实只有有两种:

  1. 分类:将知识库分割开来归为若干类,这样我们就可以通过类别快速定位到自己感兴趣的部分;关于分类的方法论有很多,图书馆学色彩比较重;经常被提到的有「PARA」分类法、标签分类法、图书馆使用的中图法等等;
  2. 搜索:通过搜索引擎,将可能有用的笔记筛选出来,让你能够快速获得解决问题所需的资料;值得注意的是,最近流行的「AI 搜索总结」也没有超越传统搜索的范畴(相关解释参见从 AIGC 到 MCP:普通人需要了解的 AI 新进展及其技术本质)。

这两种方案发展已经非常成熟,其本质都是筛去无用的笔记,克制「信息过载」,从而帮助我们利用知识库解决具体问题。这两个方案应对具体问题的效果极好。正因如此,分类和搜索如今成为了几乎所有笔记软件的标配。

但是分类和搜索并不能解决所有问题。若需要回答的问题涉及整个知识库,那么这两个手段都是无效的。比如:

  • 我当前已经涉猎过哪些领域?
  • 我对这些领域的掌握程度孰深孰浅?
  • 以我目前的知识水平,我可以做些什么?

要在不触发信息过载的前提下回答这些问题,就必须考虑在不花费大的代价前提下获得对知识库的整体认识。在经过长时间的实践和探索之后,我基于人工智能方面的实践给出了我自己的解决方案,我称之为「领域知识树」。

领域知识树

如果你有计算机以及软件工程相关背景,你肯定会知道「树」这一重要的结构。树就像一个封建国家,「王」将土地和人口分给「公侯」管理,「公侯」再分给「卿」治理。就这样通过自上而下的分封,每个人都向下管理、对上负责,「王」可以有效控制庞大的帝国。

image.png

我们也可以用类似的方式,将笔记按照若干个层级组织起来,每一级都提炼总结其治下所有笔记的内容。通过这样的结构,我们可以将整个笔记库的信息汇总到顶端,形成全局视角,轻松把握整个知识库的完整脉络。这就是「领域知识树」这一方法的核心。

整个领域知识树系统包含三个具体方法,分别解答以下问题:

  • 如何对笔记进行分类,实现分而治之?(嵌套领域标签法)
  • 怎样汇总一组笔记的信息?(综述总结法)
  • 如何实现信息向上汇总?(向上汇总与向下透视)

嵌套领域标签

一般来说,我们习惯于按讨论的主题将笔记划分为若干个领域。介绍矩阵、积分、图论的毫无疑问会被归到「数学」领域;而介绍「梯度下降」、「卷积神经网络」、「大语言模型」的笔记则一般会被归到「人工智能」领域。这样的分类法非常的直观且易于理解,既可以通过把笔记装进不同文件夹的方式实现,也可以通过打标签的方式实现。这样的做法虽然简单,但是好处很多:

  • 易于理解,操作起来没有难度;
  • 可以在大领域基础上继续嵌套划分子领域,比如「人工智能」还可以再分为「计算机视觉」「自然语言处理」「优化算法」几个子类;
  • 大多数人建立笔记库的时候会默认采取这个分类策略,这样我们就可以直接在原有笔记库的基础上搭建新系统,从而不需要成批移动或者修改笔记文件。

Obsidian 同时支持文件夹和标签分类,但是我在这里更倾向于使用标签。原因之一是 Obsidian 笔记标签可以通过 Tag Wrangler 这个插件进行批量修改、合并;反之,要成批移动笔记文件则没有那么容易,而且伴随着一定风险。

比如下图的标签中有两组标签其含义实际上是相同的,那么我可以通过 Tag Wrangler 的功能将其直接合并起来。

image.png
image.png

通过标签,我们将庞大、包含有各种主题的知识库划分为了若干个领域。此时每个领域各自的内容很少,而且话题单一,易于我们理解和处理。比如 #数学 这样一个庞大的领域被我划分为了 #数学/微积分#数学/概率论#数学/离散数学#数学/线性代数 等几个子领域,每个子领域多的有 20 多条笔记,少的只有几条笔记。这样整个数学部分的情况我们就一目了然了。

image.png

接下来的问题是:标签能提供的信息并不多,我还需要制作一份「导航」,让我可以快速洞悉某个领域所有笔记的情况。

对于这个问题,我给出的解决方案是文献综述法。

文献综述法

文献综述是学术界发明的一种文体。学术界每年都有成千上万的论文发表,一个小领域可能就有数万篇文章。一个没有经验的新人很难在充斥着陌生词汇的文献大海中自己找到入门的道路。于是为了降低入门门槛,文献综述诞生了。

文献综述一般都是出版社特别邀请领域内专家撰写的。一篇合格的文献综述会阐明整个领域研究致力于解决的现实问题,为你梳理清楚历史发展脉络,介绍当下的主流研究方法以及对领域尚未解决的问题和未来发展展开讨论。通过阅读文献综述,一个对领域毫无了解的新人也能够快速抓住研究脉络,形成对研究领域的整体印象。而这刚好和我们制作「导航」的需求不谋而合。

image.png

写综述是一门很深的学问,要讲清楚可能得花费上百页的篇幅(参考 Literature Review and Research Design)。但是一般来说个人知识库的一个领域不太可能有太多文献,因此我们只需要抓住几个综述的核心要点即可:

  1. 这个领域是关于什么的(领域的范围)?
  2. 这个领域已经有了哪些笔记?
  3. 这个领域的知识还存在哪些问题?(缺失的笔记、尚未学习但是很重要的部分等)
image.png
我的科研启蒙之一 Literature Review and Research Design

检索增强生成(RAG)当前大模型领域重要的技术(参见从 AIGC 到 MCP:普通人需要了解的 AI 新进展及其技术本质),我学习相关知识的时候写了一些笔记,现在我要为这个领域编写综述。在 Obsidian 中,可以右键领域标签建立一个 Tag Page 作为综述文件。这样以后只需要将鼠标悬停在标签上,就可以快速预览领域综述:

image.png
image.png

然后我们就可以根据上面提到的三个要点来写一份小综述了。我建议可以先在顶端写一段简单的 Dataview 代码查询领域内所有笔记。这样我们只需要将鼠标悬停在链接上就可以快速预览笔记,方便我们随时查看。

TABLE creation as "Creation", choice(finished, "✅", "❌") as "Finished"
FROM #Area/人工智能/NLP/大模型/RAG 
SORT creation DESC

考虑这三个要点,一份写好的领域综述如图:

image.png

通过阅读这样一份综述,我就可以快速了解我在 RAG 这方面积累的大致情况,并且对自己的学习状况有所掌控。

如果你和我一样,笔记库已经积累了数十个领域标签,那么为每个标签都写一份综述的工作量会非常巨大。我们可以考虑将这份工作交给 AI 来完成。但是据我所知目前大多数笔记软件并没有相应的功能或者插件可以实现这一目的。为此,我专门写了一个小工具来实现自动生成综述。使用这个小工具首先需要安装 Obsidian Local REST API 这一插件并且购买一个大模型 API,然后脚本会调用插件 API 和大模型来自动生成领域综述。详情参见 Github:obsidian-knowledge-tree

虽然为领域建立综述可以帮助我们快速了解领域概况,但是一个庞大的知识库往往包含几十乃至数百个细分领域,我们依旧难以同时对这么多领域进行有效的追踪。要解决这个问题,我们还需要在此基础上搭建更高一级的架构。这就是下一章要讲的内容。

向上汇总与向下透视

通过建立综述,我们在笔记的基础上搭建第一级结构。而现在为了解决细分领域过多的问题,我们需要一级综述的基础上继续总结第二级、第三级甚至更高级的综述。随着层数增加,需要处理的笔记数量就会呈现指数下降。最终汇总到顶端我们就获得了全库综述。

image.png

以我自己的笔记库为例。我的「人工智能」笔记标签下有许多子标签,子标签之下还可以继续细分,比如 #Area/人工智能/NLP#Area/人工智能/NLP 。最终所有的标签合起来可以形成一棵树:

image.png

我们首先会根据具体的笔记,为没有子标签的领域编写综述,即图中的 #Area/人工智能/CV#Area/人工智能/传统机器学习#Area/人工智能/NLP/大模型#Area/人工智能/NLP/知识图谱 ;在完成这些任务后,我们再根据子标签的综述编写父标签的综述,直到根标签 #Area/人工智能 。就这样,信息一级一级向上传递汇总到根标签的综述,我们只需要透过这一个文件就可以了解整个庞大的领域的现状。这就是所谓的「向上汇总」。

同理,当我们在阅读高级别综述的时候,如果想要进一步了解某个细分部分,就可以通过点击 Obsidian 的双链直接跳转到对应部分的综述,从而了解更加详细的信息。这就是所谓的「向下透视」。

通过向上向下两种操作,我们既可以在顶端俯瞰知识库的整体情况,也可以一点点缩小视野让细节变得清晰。而且从树根到树叶,我们最多只不过需要阅读 3~4 个文件。这样的话信息过载就不再能困扰到我们了。

image.png

此外,你可能还注意到我文中提到的所有标签都有前缀 Area,这个前缀表示我们的标签是按照笔记讨论的主题来对笔记进行分类的。由于标签系统允许将同一个笔记归到多个类,我们也可以使用不同的前缀,按照其他的思路来进行分类,比如 项目/子项目/孙项目。这样我们还可以在同一个知识库上基于不同的分类思路搭建多套知识树系统,从而形成不同的视角。这也正是标签系统的优越性的体现。

关于标签的 AreaResourceProject 体系我在之前的文章中也提过。这是一套基于 PARA 分类法改造并且融合了好几种创意而来的标签法。其具体细节可待以后详述。

灵感的源头:GraphRAG

本文的正文部分到此就结束了,最后是我的一些闲话。

学识渊博的你可能在读这篇文章的时候就注意到了,我通过一级一级的总结摘要来克服庞大知识库的产生的问题,这一思路和微软在 2024 年公开的文章 From Local to Global: A GraphRAG Approach to Query-Focused Summarization 颇有相似之处。

image.png

这篇文章以及本文之前的部分都提到,当前流行的 RAG 系统所做的只是根据问题从数据集中搜索出几个文档。当面对「这个数据集主要讲了什么?」这样的问题时 RAG 是无能为力的。而致力于更好地回答这类问题的 QFS 方法又无力处理大规模的数据集。于是作者想出了一个办法:

  • 对数据集文档进行初步提取之后得到的大型知识图谱进行社群检测(community detection),将之分割为若干个社群;
  • 再对分割得到的大社群重复这样的操作,进一步分割为小社群;如此往复,从而得到一个树状结构。
  • 最后,用大模型自底向上地先对小社群生成总结,再基于小社群的总结生成大社群的总结,直到全库总结产生。

就这样,尽管大模型能处理的文本长度很有限,但是它却可以了解整个数据集的大致情况,避免出现「盲人摸象」的问题。

image.png

视角转到我这里,我发现大多数人都有按照笔记主题对笔记分类的习惯,并且会在大类的基础上再分子类,这其实就可以看作是天然分割好的社群;在总结方面,我选用了文献综述这一经过了长期实践检验的文体替代了自由总结,使得其更加突出重点,利于人类阅读;最后由于没有找到能直接提供这个功能的插件和工具,我写了一个小小的 Python 脚本来节省写综述所需的大量精力。这就是整个创意从初具苗头到完善细节的全过程。

人工智能和知识管理,这两个粗看起来毫不相干的两个领域其实共享相同的底层机制。保持深入的思考,我们就有机会发现那些超越学科的普世智慧,从而解决意想不到的问题。

我是西郊次生林,一个关注知识管理、效率工具的 Obsidian 重度用户,感谢你的阅读。

> 下载少数派 客户端、关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀