llm_wiki README

The project's README from github.com/nashsu/llm_wiki. As one markdown file: README.md.

LLM Wiki

LLM Wiki Logo

A personal knowledge base that builds itself.
LLM reads your documents, builds a structured wiki, and keeps it current.

What is this? • Features • Tech Stack • Installation • Credits • License

English | 中文 | 日本語 | 한국어


Overview

Features

What is this?

LLM Wiki is a cross-platform desktop application that turns your documents into an organized, interlinked knowledge base — automatically. Instead of traditional RAG (retrieve-and-answer from scratch every time), the LLM incrementally builds and maintains a persistent wiki from your sources. Knowledge is compiled once and kept current, not re-derived on every query.

This project is based on Karpathy's LLM Wiki pattern — a methodology for building personal knowledge bases using LLMs. llm_wiki is created and maintained by nash_su, who implemented the core ideas as a full desktop application with significant enhancements.

LLM Wiki Architecture

Credits

The foundational methodology comes from Andrej Karpathy's llm-wiki.md, which describes the pattern of using LLMs to incrementally build and maintain a personal wiki. The original document is an abstract design pattern; this project is a concrete implementation with substantial extensions.

What We Kept from the Original

The core architecture follows Karpathy's design faithfully:

Obsidian Compatibility

What We Changed & Added

1. From CLI to Desktop Application

The original is an abstract pattern document designed to be copy-pasted to an LLM agent. We built it into a full cross-platform desktop application with:

2. Purpose.md — The Wiki's Soul

The original has Schema (how the wiki works) but no formal place for why the wiki exists. We added purpose.md:

3. Two-Step Chain-of-Thought Ingest

The original describes a single-step ingest where the LLM reads and writes simultaneously. We split it into two sequential LLM calls for significantly better quality:

Step 1 (Analysis): LLM reads source → structured analysis
  - Key entities, concepts, arguments
  - Connections to existing wiki content
  - Contradictions & tensions with existing knowledge
  - Recommendations for wiki structure

Step 2 (Generation): LLM takes analysis → generates wiki files
  - Source summary with frontmatter (type, title, sources[])
  - Entity pages, concept pages with cross-references
  - Updated index.md, log.md, overview.md
  - Review items for human judgment
  - Search queries for Deep Research

Additional ingest enhancements beyond the original:

4. Knowledge Graph with Relevance Model

Knowledge Graph

The original mentions [[wikilinks]] for cross-references but has no graph analysis. We built a full knowledge graph visualization and relevance engine:

4-Signal Relevance Model:

Signal Weight Description
Direct link ×3.0 Pages linked via [[wikilinks]]
Source overlap ×4.0 Pages sharing the same raw source (via frontmatter sources[])
Adamic-Adar ×1.5 Pages sharing common neighbors (weighted by neighbor degree)
Type affinity ×1.0 Bonus for same page type (entity↔entity, concept↔concept)

Graph Visualization (sigma.js + graphology + ForceAtlas2):

5. Louvain Community Detection

Not in the original. Automatic discovery of knowledge clusters using the Louvain algorithm (graphology-communities-louvain):

Louvain Community Detection

6. Graph Insights — Surprising Connections & Knowledge Gaps

Not in the original. The system automatically analyzes graph structure to surface actionable insights:

Surprising Connections:

Knowledge Gaps:

Interactive:

Graph Insights

7. Optimized Query Retrieval Pipeline

The original describes a simple query where the LLM reads relevant pages. We built a multi-phase retrieval pipeline with optional vector search and budget control:

Phase 1: Tokenized Search
  - English: word splitting + stop word removal
  - Chinese: CJK bigram tokenization (每个 → [每个, 个…])
  - Title match bonus (+10 score)
  - Searches both wiki/ and raw/sources/

Phase 1.5: Vector Semantic Search (optional)
  - Embedding via any OpenAI-compatible /v1/embeddings endpoint
  - Stored in LanceDB (Rust backend) for fast ANN retrieval
  - Cosine similarity finds semantically related pages even without keyword overlap
  - Results merged into search: boosts existing matches + adds new discoveries

Phase 2: Graph Expansion
  - Top search results used as seed nodes
  - 4-signal relevance model finds related pages
  - 2-hop traversal with decay for deeper connections

Phase 3: Budget Control
  - Configurable context window: 4K → 1M tokens
  - Proportional allocation: 60% wiki pages, 20% chat history, 5% index, 15% system
  - Pages prioritized by combined search + graph relevance score

Phase 4: Context Assembly
  - Numbered pages with full content (not just summaries)
  - System prompt includes: purpose.md, language rules, citation format, index.md
  - LLM instructed to cite pages by number: [1], [2], etc.

Vector Search is fully optional — disabled by default, enabled in Settings with independent endpoint, API key, and model configuration. When disabled, the pipeline falls back to tokenized search + graph expansion. Benchmark: overall recall improved from 58.2% to 71.4% with vector search enabled.

8. Multi-Conversation Chat with Persistence

The original has a single query interface. We built full multi-conversation support:

9. Rust Backend Chat Agent & Skills

Not in the original. Chat now runs through a Rust backend Agent runtime rather than a browser-only TypeScript loop:

10. Thinking / Reasoning Display

Not in the original. For LLMs that emit <think> blocks (DeepSeek, QwQ, etc.):

11. Markdown Rendering: KaTeX Math & Mermaid Diagrams

Not in the original. Rich Markdown rendering across chat and preview:

12. Review System (Async Human-in-the-Loop)

The original suggests staying involved during ingest. We added an asynchronous review queue:

13. Deep Research

Deep Research

Not in the original. When the LLM identifies knowledge gaps:

14. Browser Extension (Web Clipper)

Chrome Extension Web Clipper

The original mentions Obsidian Web Clipper. We built a dedicated Chrome Extension (Manifest V3):

llm_wiki (nashsu/llm_wiki)

Searching Database…

20.7K ·GitHub
What is this?LLM Wiki is a cross-platform desktop app that turns your documents into a persistent, interlinked knowledge base. Instead of re-deriving answers from scratch every time like traditional RAG, the LLM incrementally builds and keeps a wiki of your sources up to date.
Is this basically another RAG chatbot?No — instead of retrieving and re-answering from scratch on every query, it compiles a persistent wiki once (pages, links, a knowledge graph) and keeps it current; vector-based retrieval is only an optional add-on alongside graph and tokenized search.
How do I start building my wiki?You import sources — PDFs, Office docs, EPUB/MOBI, Org mode, images, web clips, URLs, or whole folders — and the app's two-step ingest pipeline reads each one, then writes or updates the corresponding wiki pages automatically.
Do I need a specific LLM provider or API key?You configure models per project and can route Chat and Ingest to different providers, including any OpenAI-compatible endpoint with custom headers; the optional vector search also works with any OpenAI-compatible embedding endpoint via LanceDB.
Is semantic/vector search required to use it?No, vector search is optional and off by default; without it the system falls back to tokenized search plus graph expansion. The project's own benchmark shows recall drops from 71.4% to 58.2% when vector search is disabled.
Does my wiki data stay on my machine?The generated wiki is stored as plain Markdown files compatible with Obsidian vaults, and the app exposes a local-only HTTP API on 127.0.0.1 for search and skill access; actual LLM calls go wherever you've configured your model provider.
What's special about its knowledge graph?Pages are linked using a 4-signal relevance model (direct wikilinks, shared source overlap, Adamic-Adar common neighbors, and type affinity), rendered with sigma.js/graphology, and clustered automatically with the Louvain community-detection algorithm.
Can I use this inside Claude Code or Codex?Yes — the bundled MCP server and a ready-made agent skill can be installed into Claude Code or Codex with a single command (npx skills add ...), giving those agents hybrid search, graph traversal, and source access.
Can I save web pages directly into my wiki?Yes, there's a Chrome Web Clipper that captures a page with one click and auto-ingests it into the knowledge base.
Why was this built — is it based on someone else's idea?It implements and extends Andrej Karpathy's llm-wiki.md pattern, keeping the three-layer Raw Sources/Wiki/Schema architecture and wikilink/frontmatter conventions but adding a full desktop UI, knowledge graph, Rust agent runtime, and persistent ingest queue on top.
Creator
nashsu
Size
39.3 MB
Stars
20.7K
Age
6mo
Commits · 90 Days