# LLM Wiki
自分で育つパーソナル知識ベース。
LLM が文書を読み、構造化された Wiki を作成し、継続的に更新します。
これは何ですか? •
主な機能 •
技術スタック •
インストール •
クレジット •
ライセンス
English | 中文 | 日本語
---
## 主な機能
- **2 段階 Ingest**: LLM がまず分析し、その後 source traceability 付きの Wiki ページを生成します。
- **マルチモーダル画像 Ingest**: PDF などから埋め込み画像を抽出し、Vision LLM で事実ベースのキャプションを生成します。
- **4 シグナル知識グラフ**: 直接リンク、source overlap、Adamic-Adar、type affinity による関連度モデル。
- **Louvain コミュニティ検出**: 知識クラスタを自動検出し、凝集度を評価します。
- **Graph Insights**: 意外な接続や知識ギャップを検出し、Deep Research を開始できます。
- **ベクトル意味検索**: LanceDB ベースの任意の OpenAI-compatible embedding endpoint を利用できます。
- **永続 Ingest Queue**: 直列処理、クラッシュ復旧、キャンセル、リトライ、進捗表示に対応します。
- **フォルダインポート**: ディレクトリ構造を保った再帰インポートと、フォルダ文脈による分類ヒント。
- **Source フォルダ Auto-Watch**: `raw/sources/` の外部変更を検出し、ingest/delete cleanup と同期します。
- **Deep Research**: Tavily、SerpApi、SearXNG を使った複数クエリ検索と、結果の自動 Wiki 化。
- **非同期 Review System**: LLM が判断待ち項目を作成し、ユーザーが後から確認できます。
- **Chrome Web Clipper**: Web ページをワンクリップで取り込み、知識ベースへ自動 ingest します。
## これは何ですか?
LLM Wiki は、手元の文書を整理された相互リンク付きの知識ベースへ変換するクロスプラットフォームのデスクトップアプリです。従来の RAG のように毎回ゼロから検索して回答するのではなく、LLM が文書から**永続的な Wiki を増分的に構築・維持**します。
このプロジェクトは [Andrej Karpathy の LLM Wiki pattern](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) に基づいています。抽象的な設計パターンを、実際に使えるデスクトップアプリとして実装し、多数の拡張を加えています。
## クレジット
基礎となる方法論は **Andrej Karpathy** の [llm-wiki.md](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) です。本プロジェクトは、その設計を具体的なアプリケーションとして実装したものです。
## 主な設計
### 1. 3 層アーキテクチャ
- **Raw Sources**: インポートした元資料。
- **Wiki**: LLM が生成する構造化ページ。
- **Schema / Purpose**: Wiki の構造ルールと目的。
生成される Wiki は `[[wikilink]]`、YAML frontmatter、`index.md`、`log.md` を使い、Obsidian vault としても扱えます。
### 2. 2 段階 Ingest
```
Step 1: Analysis
- 主要な entity / concept / argument を抽出
- 既存 Wiki との関連や矛盾を分析
- Wiki 構造の提案を作成
Step 2: Generation
- source summary、entity、concept ページを生成
- index.md、log.md、overview.md を更新
- Review item と Deep Research 用クエリを生成
```
追加機能:
- **SHA256 incremental cache**: 未変更の source は自動スキップ。
- **Persistent ingest queue**: アプリ再起動後も queue を復元。
- **Source folder auto-watch**: アプリ外で `raw/sources/` に追加・変更・削除されたファイルを検出し、同じ ingest/delete lifecycle で処理します。
- **Progressive Sources view**: 大きな source フォルダでも、スクロールに合わせて段階的に表示します。
- **Source traceability**: 生成ページは frontmatter の `sources: []` で元資料に紐づきます。
### 3. Knowledge Graph
知識グラフは sigma.js / graphology / ForceAtlas2 で描画されます。
| Signal | Weight | Description |
|--------|--------|-------------|
| Direct link | ×3.0 | `[[wikilink]]` による直接リンク |
| Source overlap | ×4.0 | 同じ raw source を共有するページ |
| Adamic-Adar | ×1.5 | 共通近傍による関連性 |
| Type affinity | ×1.0 | 同じ page type への加点 |
Graph Insights は、意外な関連、孤立ページ、弱いコミュニティ、bridge node を検出し、必要に応じて Deep Research を開始できます。
### 4. Search / Retrieval
- Tokenized search は `wiki/` と `raw/sources/` を検索します。
- 任意で embedding と LanceDB による vector semantic search を有効化できます。
- 検索結果は知識グラフで拡張され、context budget に収まるよう優先順位付けされます。
### 5. Deep Research
Deep Research は、LLM が search topic と複数の search query を生成し、Web 検索結果を統合して Wiki ページとして保存します。
対応 provider:
- **Tavily**: 汎用 Web search。
- **SerpApi**: Google、News、Scholar、Images、Videos、YouTube などの engine を選択可能。
- **SearXNG**: 自前または利用可能な SearXNG instance URL と categories を設定して検索。
### 6. Deletion / Cleanup
source を削除すると、関連する source summary、`sources[]`、`index.md`、本文の `[[wikilink]]`、`related:` 参照が整理されます。複数 source に共有されている entity / concept ページは、ページ自体を消さずに削除された source だけを外します。
## 技術スタック
| Layer | Technology |
|-------|------------|
| Desktop | Tauri v2 (Rust backend) |
| Frontend | React 19 + TypeScript + Vite |
| UI | shadcn/ui + Tailwind CSS v4 |
| Editor | Milkdown |
| Graph | sigma.js + graphology + ForceAtlas2 |
| Search | Tokenized search + graph relevance + optional LanceDB vector search |
| Vector DB | LanceDB |
| PDF | pdf-extract |
| Office | docx-rs + calamine |
| i18n | react-i18next |
| State | Zustand |
| LLM | Streaming fetch (OpenAI, Anthropic, Google, Ollama, Custom) |
| Web Search | Tavily, SerpApi, SearXNG JSON API |
## インストール
### ビルド済みバイナリ
[Releases](https://github.com/nashsu/llm_wiki/releases) からダウンロードできます。
- **macOS**: `.dmg` (Apple Silicon + Intel)
- **Windows**: `.msi`
- **Linux**: `.deb` / `.AppImage`
### ソースからビルド
```bash
# Requirements: Node.js 20+, Rust 1.70+
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm run tauri dev # Development
npm run tauri build # Production build
```
### Chrome Extension
1. `chrome://extensions` を開く
2. Developer mode を有効にする
3. Load unpacked をクリック
4. `extension/` ディレクトリを選択
## クイックスタート
1. アプリを起動し、新しい project を作成します。
2. **Settings** で LLM provider、API key、model を設定します。
3. 必要に応じて **Web Search** provider と source folder auto-watch を設定します。
4. **Sources** から PDF、DOCX、Markdown などをインポートします。
5. **Activity Panel** で Wiki ページ生成の進捗を確認します。
6. **Chat** で知識ベースに質問します。
7. **Knowledge Graph** で関連を探索します。
8. **Review** と **Lint** で Wiki の品質を保ちます。
## Project Structure
```
my-wiki/
├── purpose.md # 目的、問い、研究範囲
├── schema.md # Wiki 構造ルール
├── raw/
│ ├── sources/ # 元資料
│ └── assets/ # ローカル画像
├── wiki/
│ ├── index.md # コンテンツ目録
│ ├── log.md # 操作履歴
│ ├── overview.md # 全体概要
│ ├── entities/ # 人物、組織、製品など
│ ├── concepts/ # 理論、手法、概念
│ ├── sources/ # source summary
│ ├── queries/ # 保存した chat / research
│ ├── synthesis/ # 横断的な分析
│ └── comparisons/ # 比較ページ
├── .obsidian/ # Obsidian vault 設定
└── .llm-wiki/ # アプリ設定、chat history、review items
```
## ライセンス
このプロジェクトは **GNU General Public License v3.0** でライセンスされています。詳細は [LICENSE](LICENSE) を参照してください。