LLM Knowledge Bases Something I'm finding very useful recently: using LLMs to build personal knowledge bases for various topics of research interest. In this way, a large fraction of my recent token throughput is going less into manipulating code, and more into manipulating knowledge (stored as markdown and images). The latest LLMs are quite good at it. So: Data ingest: I index source documents (articles, papers, repos, datasets, images, etc.) into a raw/ directory, then I use an LLM to incrementally "compile" a wiki, which is just a collection of .md files in a directory structure. The wiki includes summaries of all the data in raw/, backlinks, and then it categorizes data into concepts, writes articles for them, and links them all. To convert web articles into .md files I like to use the Obsidian Web Clipper extension, and then I also use a hotkey to download all the related images to local so that my LLM can easily reference them. IDE: I use Obsidian as the IDE "frontend" where I can view the raw data, the the compiled wiki, and the derived visualizations. Important to note that the LLM writes and maintains all of the data of the wiki, I rarely touch it directly. I've played with a few Obsidian plugins to render and view data in other ways (e.g. Marp for slides). Q&A: Where things get interesting is that once your wiki is big enough (e.g. mine on some recent research is ~100 articles and ~400K words), you can ask your LLM agent all kinds of complex questions against the wiki, and it will go off, research the answers, etc. I thought I had to reach for fancy RAG, but the LLM has been pretty good about auto-maintaining index files and brief summaries of all the documents and it reads all the important related data fairly easily at this ~small scale. Output: Instead of getting answers in text/terminal, I like to have it render markdown files for me, or slide shows (Marp format), or matplotlib images, all of which I then view again in Obsidian. You can imagine many other visual output formats depending on the query. Often, I end up "filing" the outputs back into the wiki to enhance it for further queries. So my own explorations and queries always "add up" in the knowledge base. Linting: I've run some LLM "health checks" over the wiki to e.g. find inconsistent data, impute missing data (with web searchers), find interesting connections for new article candidates, etc., to incrementally clean up the wiki and enhance its overall data integrity. The LLMs are quite good at suggesting further questions to ask and look into. Extra tools: I find myself developing additional tools to process the data, e.g. I vibe coded a small and naive search engine over the wiki, which I both use directly (in a web ui), but more often I want to hand it off to an LLM via CLI as a tool for larger queries. Further explorations: As the repo grows, the natural desire is to also think about synthetic data generation + finetuning to have your LLM "know" the data in its weights instead of just context windows. TLDR: raw data from a given number of sources is collected, then compiled by an LLM into a .md wiki, then operated on by various CLIs by the LLM to do Q&A and to incrementally enhance the wiki, and all of it viewable in Obsidian. You rarely ever write or edit the wiki manually, it's the domain of the LLM. I think there is room here for an incredible new product instead of a hacky collection of scripts.
【外层评论】为什么有人想要这样一个「研究」数据库——内容都是自己没花精力去理解的?研究的核心意义在于拓宽注意力接触信源,再用辨别力筛选相关片段。让机器替你做这件事有什么意义? 【引用:Karpathy】LLM 知识库 最近发现非常有用的一件事:用 LLM 为我感兴趣的研究主题构建个人知识库。大量 token 消耗不再是写代码,而是在处理知识(以 markdown 和图片存储)。最新的 LLM 在这方面相当擅长。具体做法: **数据摄取**:把源文档(文章、论文、repo、数据集、图片等)索引到 raw/ 目录,再用 LLM 增量「编译」一个 wiki——就是一组 .md 文件构成的目录结构。wiki 包含所有数据的摘要、反向链接,并将数据归类到概念、撰写条目、互相链接。网页文章转 .md 用 Obsidian Web Clipper,再用快捷键把相关图片下载到本地供 LLM 引用。 **编辑器**:用 Obsidian 作为「前端 IDE」,可以查看原始数据、编译后的 wiki 和衍生可视化。重要:wiki 的数据全部由 LLM 写入和维护,我几乎不直接编辑。 **Q&A**:当 wiki 足够大(比如我某个研究主题的 wiki 已有约 100 篇文章、约 40 万词),就可以对 LLM agent 提各种复杂问题,它会去 wiki 里搜索、研究并回答。我以为需要用到复杂 RAG,但 LLM 在自动维护索引文件和简短摘要方面表现相当好,在这个规模下能轻松找到相关数据。 **输出**:答案不是文字/终端输出,而是让 LLM 渲染 markdown 文件、幻灯片(Marp 格式)或 matplotlib 图表,然后在 Obsidian 里查看。通常我会把输出「归档」回 wiki,供后续查询增强。 **Linting**:跑过一些 LLM「健康检查」来发现不一致数据、补全缺失数据(通过 web 搜索)、发现新文章候选的有趣连接——持续提升 wiki 的数据完整性。 **额外工具**:会开发一些辅助工具处理数据,比如 vibe code 了一个简单的搜索引擎,既可以直接用(Web UI),更多时候是通过 CLI 作为工具交给 LLM 处理更大的查询。 **延伸方向**:随着 repo 增长,自然会想到合成数据生成 + 微调,让 LLM 把这些知识「内化」到权重里,而不只是靠 context window。 TL;DR:从多个信源收集原始数据 → LLM 编译成 .md wiki → 各种 CLI 工具由 LLM 驱动做 Q&A 并持续增强 wiki → 全部在 Obsidian 可视化。你几乎不用手动写或编辑 wiki,那是 LLM 的领域。我认为这里有空间诞生一个出色的产品,而不只是一堆拼凑的脚本。
357 tweets · 110 sources