最近我发现一个非常实用的方法:利用大语言模型(LLM)构建个人研究兴趣领域的知识库。通过这种方式,我近期token消耗量中用于代码操作的比例显著下降,转而更多地用于知识管理(以markdown和图片形式存储)。最新的LLMs在这方面表现相当出色。具体做法如下:
我将原始文档(文章、论文、代码仓库、数据集、图片等)索引到raw/目录中,然后使用LLM逐步"编译"成wiki——这本质上就是按目录结构组织的.md文件集合。该wiki包含以下内容:
将网页文章转换为.md文件时,我喜欢使用Obsidian Web Clipper扩展程序,同时设置快捷键自动下载相关图片到本地,以便LLM能轻松引用这些资源。
我使用Obsidian作为IDE的前端界面,可以同时查看:
需要特别说明的是,整个wiki的数据均由LLM编写和维护,我几乎从不直接编辑它。我也尝试过几个Obsidian插件来实现其他数据展示方式(例如Marp用于幻灯片渲染)。
当wiki规模足够大时(例如我最近的某个研究项目已有约100篇文章和40万字),就可以向LLM代理提出各种复杂问题,它会自主进行资料检索并给出解答。我曾以为必须采用复杂的RAG(Retrieval-Augmented Generation)技术,但实际上LLM在自动维护索引文件和文档摘要方面表现良好,在这个较小规模下能较轻松地读取所有重要相关信息。
相比传统的文本/终端输出,我更倾向于让LLM生成以下格式的输出:
我对wiki进行过若干次LLM"健康检查",例如:
我开始开发一些额外工具来处理数据,例如我为wiki构建了一个简单朴素的小型搜索引擎,既可以直接在网页界面使用,也常通过CLI交给LLM作为大型查询的工具。
随着知识库规模扩大,自然会产生合成数据生成+微调的需求,让LLM将其权重参数中的知识内化,而不仅仅是依赖上下文窗口。
简而言之:从多个来源收集原始数据→由LLM编译为.md格式的知识库→通过各类CLI由LLM进行问答和渐进式增强→全部内容可在Obsidian中查看。你几乎不需要手动编写或编辑wiki,它完全属于LLM的领域。我认为这里存在打造革命性产品的巨大空间,而非仅仅是脚本的堆砌。