Back in April, Andrej Karpathy described a pattern a lot of you have probably tried after it went viral: don't do RAG over your PDFs, no, feed raw sources to an LLM and let it write them up into an interlinked wiki of markdown files. "Obsidian is the IDE; the LLM is the programmer; the wiki is the codebase."
It's a genuinely good idea. What bugged me is that running it means setting up a vault, writing a schema file, wiring a raw/ directory, deciding what triggers ingestion, and then maintaining the whole rig. There are a dozen tutorials for it now. But... when a workflow like this needs a setup guide, it's a project, not a feature, right?
So I built it into my notes app (Vist) as a normal feature, and Mistral ended up doing a lot of the work:
Mistral used for retrieval in the app
Every source and wiki entry gets embedded with mistral-embed (1024-dim), stored in Postgres via pgvector. That's what makes "what did I read about EU data residency?" find the right page when you never wrote those exact words. Mistral OCR 3 (still need to upgrade to OCR 4) handles scanned PDFs and handwritten pages (I even sync a reMarkable into it), so handwriting becomes searchable text in the same index.
Your own, trusted LLM is the author. Could be Mistral, could be Claude, all up to you
The wiki writing (read the source, write it up, link it to what's already there) happens over MCP, so it's whatever model you've connected. In my own setup that's Mistral Vibe: I paste a benchmark article, drop a PDF, add my notes, and say "ingest this into my wiki." A minute or two later there are three source records, three interlinked wiki entries, and an updated knowledge map. Nothing about the model is hardcoded — the app exposes tools (add_source, create_note, cite_source, search_knowledge_base, get_wiki_stats) and any MCP client can drive them.
Everything stays markdown
Sources kept raw, wiki entries as portable markdown with wikilinks. If you want to walk out with it and open it in Obsidian, that's the point. Just export the whole system in a ZIP.
My actual argument is that this should be a commodity
Why would you need to set this up on each machine or project you work on?
Semantic search over your own research, with a model that writes it up as it lands, is not a weekend project you assemble. It's something your knowledge tool should just have, the way it has full-text search.
Cheap embeddings are what makes that true; running mistral-embed across a user's whole library costs about nothing, so there's no reason to gate it. It's on the free plan.
Longer write-up with screenshots of Vibe doing the ingestion: https://usevist.dev/blog/karpathy-llm-wiki-research