I spent a week making a new AI tool. Silicon AI is a plugin for the Obsidian notes app.
It studies your database in the background, and suggests files related to whatever you’re working on. It’s a form of passive intelligence augmentation, as I’ve written about before. It’s a little AI helper that finds the most relevant pages from your library and has them ready before you even ask.
On Monday I was struck by a creative impulse, what my ancestors called “having a wild hair up your ass”. I was using Obsidian for writing, as I have done for several months now. If you’re not familiar with Obsidian, it has two-way hyperlinking, so you can see which notes are linked to or from the note you’re in. There’s even a rudimentary text search that tries to find notes which mention the topic you’re writing about but haven’t linked it yet.
I found myself wanting more. The app should automatically link notes that have related content. It should understand the concepts I’m writing about, not just the literal words. Then I remembered the text embedding model OpenAI released last week. It performs better than their previous model, and more importantly it’s 90% cheaper. Cheap enough to really experiment with.
So I said “Fuck it. I’ll build an app in a day,” and fired up ChatGPT to walk me through the process. I’ve never built an Obsidian plugin before, but I know Typescript and have the world’s most powerful AI at my fingertips. How hard could it be?
A little harder than that, turns out. It took all week — I published the plugin on Thursday night — and ChatGPT was not always helpful. I wanted to use IndexedDB (a browser-based database used by Obsidian itself), which I’ve never dealt with before, and the machine eagerly wrote pages of code to wrap it. But the code was subtly buggy, and after a day of unsuccessful repair work I scrapped it all. I switched to the human-authored
idb library, but I did learn a lot about IndexedDB in the process.
What does Silicon AI actually do? Right now, just the one thing: It displays a list of related files. The results are sorted by “nearness” in the vector space of this large language model. But getting the vectors and keeping them updated is most of the work, and now I can build out other cool features on top of them.
Silicon AI plugin demo pic.twitter.com/no4dmu7oxK— deep face (26/100) (@deepfates) December 23, 2022
I have already received some amusing feedback about Silicon. Less than an hour after I published the first release of the plugin, I got a feature request! The person wants me to add a feature for text generation using related files as part of the prompt. This was already on my roadmap, but I was surprised to get an issue before I even had any users.
I’ve submitted Silicon to the Obsidian community plugins repo, but the process to get approved can take a while. For now, you can download the 1.0.0 release from Github and move the files to the folder
/.obsidian/.plugins/silicon/ in your vault. You’ll also need an OpenAI API key.
Silicon AI is an open source project (MIT license), so anyone can contribute. I’m already planning features like precise snippet selection, inline autocomplete, editorial suggestions, summarization, auto-linking, and yes, even context-aware text generation. I would love if this could become a community project, a chassis for AI-powered functions of all kinds. Superpowers for writing.
Speaking of which: I actually used ChatGPT to help me write this post. Not by writing it for me. Its voice is too generic and syrupy for me. Instead I told it to interview me about my project. It asked some great questions and helped me organize and outline the piece. If you haven’t tried it fyour work yet, give it a shot. It’s the perfect coworker: always responds immediately, never schedules meetings.
If you use Obsidian, give Silicon AI a try. Let me know what you think. I want to create a tool that people love.
Thanks for reading. I’ll be sending more updates irregularly, when I have something interesting to tell you. Give me a shout anytime: firstname.lastname@example.org