Uncategorized

开发日志7: 我们到底需要一个怎么样的知识库?

近期有一些知识库推出了类似“思维纠偏”或者“内在矛盾检测”这样的功能,让你得以发现你的想法里面存在的一些张力、你的人格里面隐含的一些分歧,进而尝试纠正自己思维习惯中的一些盲区。但是据我所使用,要么出来的是生拉硬拽的、比较牵强的,有那么像抬杠一样的,在你观点中强行建立联系的“钩子”(就是那个说做视频3秒钟要吸引观众注意力

近期有一些知识库推出了类似“思维纠偏”或者“内在矛盾检测”这样的功能,让你得以发现你的想法里面存在的一些张力、你的人格里面隐含的一些分歧,进而尝试纠正自己思维习惯中的一些盲区。但是据我所使用,要么出来的是生拉硬拽的、比较牵强的,有那么像抬杠一样的,在你观点中强行建立联系的“钩子”(就是那个说做视频3秒钟要吸引观众注意力的钩子);要么就是毫无意义的、在字面意思上的一些冲突解释。

开始的时候,我也以为是模型的能力问题,但是我拿自己近几个月300+条记录,用 Anthropic 自家的 Opus 4.8 来做测试,也就是说以顶尖的模型,来找我这些真实想法里面的冲突和偏见。但结果还是令人失望。

其实在2023年 ChatGPT 3.5 发布以前,大家对“知识库”这个名词并不怎么熟悉。因为我们一直在用的,和它有同样诉求的,其实是笔记应用。比如我能叫得上名字的,Notion、语雀、Obsidian。

因为似乎那时候我们都只是想把某些东西记下来,以便于后面再用的时候,可以随时搜索并复制粘贴。这些需要记下来的笔记是零碎的、是不需要互相连接的。所以当 Obsidian 在它的双链方面表现得特别优秀的时候,加上它同时也是一个开放的平台,甚至有人宣称,它已经成为了一些人的“第二大脑”。但其实到这个程度,大家也还是把这些叫做笔记应用。

但是 ChatGPT 3.5 来了之后,一方面我们有了更多想记下来的东西,另一方面,大模型的文本整理能力,也创造了“零碎想法寻找关联性”这一个强需求。腾讯的笔记应用、Get笔记,还有谷歌的 NotebookLM等,都是大概在这个时候萌芽的。而他们所主打的能力,不外乎都是把平常偶尔记下来的想法汇总在一起,创造某种关联性,做到某种程度的整合,从而使这些想法从一个一个信息孤岛,变成了一大块互相拼接成的完整拼图,使其可以具备某种叙事,或者说是某种想法的延伸、串联。

它们中的有些强调语音输入,有些强调完全无损地遵守原文本的内容,有些则是和自己的生态做了强配对、以此来撬动自己原有的用户沉淀。我是一个笔记应用的爱好者,也想成为他们的重度用户,但是最终好像发现,总是收藏的欲望多于使用的体验。因为对我来讲,偶尔有好的想法,也只需要稍加润色,就可以发在朋友圈或者微博这些平台。自己维护的公众号也是几十天不见更新一篇,偶尔非常有感,会声泪俱下地更新一下自己最近的深度反省和血肉模糊的自我剖析。而那些以前记下来的点点滴滴,那些零碎的、不成体系的碎片,因为我从来没有想过要把它们利用起来,所以也从来没有过想把它们利用起来的需求。所以,这些新冒出头的笔记应用,虽然他们打着“知识库”的旗号,但是对我来讲,只是换了个地方把自己的想法存起来,或换了一种方式把自己想存的东西灌进来。语音记录也好,读书笔记摘抄也好,如果都是灵机一动的想法,但是并没有串联成关联性很强的、能让你发现自己的思维脉络,或者说是能够连成一张完整的思维网络的东西,其实它不管存在什么地方,对你来说都是没有价值的。

在我看来,为什么笔记应用在有了大模型之后,突然改叫知识库了呢?我觉得和 AI 的另一个特性——也就是它的检索能力——有关系。因为 AI 的训练数据都是一些泛化的、没有针对个性化场景所做的适配。但是有了这些知识应用之后,好像就显得大模型在这些知识库里面做检索、做分析,就会让它的结论更加可信。

我本来是想把知识库和图书馆相类比的,但是回头一想,知识库叫 knowledge base,而图书馆叫 library,好像看上去既没有同样的前缀,也不具有非常强的关联。但是说到 knowledge base,我突然想到我们 IT 行业有另外一个 base,那就是 Database。

所以说,从词根上来讲,不管是 knowledge base 也好,还是 database 也好,它都是一个 base。而仅仅区别在于这个 base 里面装的是什么:一个是 knowledge,一个是 data。从我不严谨的区分来讲,knowledge base 所装的 knowledge 其实是相对于人来讲的,比如说经验、喜好等等,这些偏主观的,或者说是偏个性的。而 database 里面装的这些,更多的是数据。所以说 database 更底层一些,它装的是未经分析的、未经洞察的、一些可以说是原始的,或者说是基础的数据,一些事物表现出来的、反映出来的、量化的东西。而 knowledge 更偏向于是一种偏人文的、偏经验的、偏信息类的。对,就是信息。前者是数据,而后者是信息。数据是未加工的、事物本来的、原始的状态,而 knowledge 则是从数据里面抽象出来的,揭示了这一组数据运行的规律,或者说是反映的趋势一类的东西。

所以我们看 Database 都有哪些操作?一般我们比较倾向于简单回答:增删改查,也就是新添加数据、删除老数据、更新数据和查找数据。

而在此架构上所衍生出来的信息的 base 也就是 knowledge base。它应该也具备这些基础的操作,那就是增删改查。所以语雀也好、Obsidian 也好,还是浮墨等等这些大众小众的笔记应用,它们首先具备的是这四种能力,也就是数据和信息的存储以及使用的基本能力。而知识库则在此基础上添加了让我们洞察这些信息之间的关联性的能力。

简单来讲,在向知识库提问的时候。它会用向量查询来算余弦相似度,把你问到的问题,和你在知识库里面现存的想法,以关联度从高到低的顺序检索出来,然后取 top K。这样就使得你在做增删改查的时候,它出来结果是经过二次加工的、可以直接提取特征的复合信息。如果以实物来打比方,Database 或者说数据库,它存的是未脱壳的稻米。而笔记应用存的,是稻米经过粗加工之后的袋装大米。而现在的知识库(knowledge base)提供的,是把大米做成米饭后给你端上来。

所以搞清楚了什么是知识库之后,我们再来看这些知识库的表现怎么样?

Google NotebookLM 在入口、处理和出口三方面都做了强化。以前你先有一个内容,把它收藏起来。现在你只需要有一个想法,它负责把互联网上最相关的信息存到知识库里面,经过自己精心设计的算法,再以非常丰富的音频、视频、文本、思维导图等多媒体方式呈现出来。

而 Get 笔记则是把入口从以前的文本扩展到了语音输入,并且是比较高精度的语音输入,让那些一闪而过的想法也能够及时地被存下来。

大家做的都是知识库,前者更多针对的是对公共知识的融合、洞察,包括互联网的公共知识和公司、组织这些私域的公共知识。而后者则是把脑子里的灵感具象化,及时地记录下来。它们产出的,都是基于这些存进去的东西,给出关联度高的、开箱即用信息。

我们且先不说那些在使用这些知识库时,由于大模型本身能力的局限性所造成的一些错误,或者说体验上的一些纰漏。这些随着大模型的能力增强,随时都可以得到解决。但现在的这些知识库,以我的理解,除了把零碎的信息聚合起来、串联起来,然后进行语义上的理解和整合之外,不外乎就是在输出的格式上面做了更多的扩展,比如以语音输出、以报表、以幻灯片方式输出等等,让你觉得更加便利,但实际上其核心还是对信息的串联和整合。

但当它时常把完全不相干的东西拼在一起,给你一个乍看非常惊艳但仔细一瞅却纯属无稽之谈的东西的时候。我们不得不探究这其中深藏的原因。

我以前经常说,我们在人和人交流的时候,都是有一些隐含条件在里面的,一些隐含的背景信息。比如说朋友之间交流,我们就默认隐去了自己的国家、民族、偏好等等这些。我们的谈话是基于一个很大范围的信息重合之上的沟通。但是大模型却拿不到我们的这一大块的构图,它只是看到我们海面上冰山的一角,就以此做出了轻率的判断。我觉得这是一方面。

另一方面,文字的解释其实有多个层次。你在当时录入的时候,也就是记下这个想法的时候,你是有一种情绪在里面的,不单单是字面意思。文本只是语言要表达信息的一个维度,而另一个维度,是人的情绪。所以同一段文字,以不同的语气说出来的时候,它所能承载的信息是非常不一样的,有时候甚至是相反的。就好像中文里面骂人的那两个字(卧槽),可以有不同的声调来组成不同的意思一样。

所以我的想法是,一段文本从想法变成语言,再记录到知识库里面,它不但损失了我们在产生这个想法时那些隐含的上下文——那些我们没有说出来,却在脑子里把它作为默认值的存在——另一方面,也把语气和停顿这些情绪信息一并剥离掉了。因为语音识别是不理解情绪的,它只是把纯数字化的信息转换出来。这也是为什么大多数时候,当我们重新看自己在几年前写的东西,或者发给别人的几条消息,有时会感到莫名其妙。因为这些文章、消息,如果不加上当时的情绪的话,即便连自己也很难理解,或者很难准确地把握它原本要表达的意思。

我们现在习惯于把这些削去了情绪、剥去了隐含上下文的碎片想法快速地记下来,就等于把一幅拼图中的某几块收藏起来而把剩下的连同说明书一起扔掉。即便没过多久,它们原本要表达的东西也会面目全非。更别说还要用这些不同整体中的碎片重新拼凑,试图做出看上去是新的,又同时完整的画面。

所以归根结底,我们还需要知识库吗?当然需要,因为我们需要记录。我们有很多灵机一动的,或者偶尔使用但频率不高的一些内容,需要用一种旁路的方式挂载到我们自己的大脑外面,让大脑能够专注于当前的事情,专注于完成它的主线。这在脑神经科学方面也是比较站得住脚的。因为我们的大脑容量其实非常有限,我们总是把感觉到的东西进行泛化、进行抽象,然后把它们建成索引。当我们再次面对新的东西,或者说是相同的场景时,我们需要召回,顺着这些索引,回溯到原本记下的东西。而这些知识库、笔记应用,就是某些索引指向的地方。

面对现在如此海量的信息,这种外挂是必须的。

那我们需要什么样的知识库?

前文说,现在的知识库就是把与自己关联的信息尽可能完整地保存下来。把零碎的、不相关的信息,按照一定的关联性呈现出来。但是它们在输入的过程中,出现了上下文和情绪的双重剥离,造成存储后的信息出现了不可逆的失真,进而导致它所展现出来的、经过二次加工的开箱即用信息,在很大程度上偏离了我们原有的想法。

所以,我们需要什么样的知识库,也就一目了然了。

我们需要一个能够还原我们记录时所想、所感的那个真实的、丰富的环境,以及情绪属性的知识库。然后,当我们在试图调用这些信息的时候,能够在完整的信息表达之上,建立起置信度足够高的关联性。再把这些有关联性的东西串联起来,以更加丰富、更具洞察力的状态表现出来。

打个比方,我们想要的知识库,是想让它成为真正的“第二大脑”。而现在这些 App 充其量只是大脑索引后外挂的存储器,就像一个备用的油箱。当我们需要把这些外部知识用起来的时候,得先去这些知识库里面检索出来,然后再搬运到脑子里面进行加工,就像是把备用油箱里的油抽出来,注入到主油箱,再连到引擎一样。

但是我们想要的知识库,不能仅仅作为一个备用油箱、一个容器,而是要成为我们的另一个引擎。它在处理信息的时候,不能只是单纯地把文字(也包括多模态)本身的信息进行分析,而是要把它们放入一个有情绪噪音、有背景信息的多维度空间中,以另一个和我们自己有同样前因后果的数字身份,身临其境地参与到信息在时间中的流动过程,从而成为我们加工“现在”的另一个“引擎”。

坍缩了维度后的信息对于原本的载体,就像二维空间的点对于球体来讲,是完全没有意义的。或许我们需要的,已经不是一个知识库,而是以信息的方式参于到数字世界中。

N
norvyn

独立 iOS 开发者,写字的人。在一座有海的城市,慢慢地做一些小而确定的东西。An independent iOS developer and writer — slowly making small, certain things in a city by the sea.

评论Comments

加载中…Loading…

留下评论Leave a comment