Skip to content

Latest commit

 

History

History
207 lines (156 loc) · 9.25 KB

File metadata and controls

207 lines (156 loc) · 9.25 KB

LLM Wiki

LLM Wiki Logo

自分で育つパーソナル知識ベース。
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 に基づいています。抽象的な設計パターンを、実際に使えるデスクトップアプリとして実装し、多数の拡張を加えています。

LLM Wiki アーキテクチャ

クレジット

基礎となる方法論は Andrej Karpathyllm-wiki.md です。本プロジェクトは、その設計を具体的なアプリケーションとして実装したものです。

主な設計

1. 3 層アーキテクチャ

  • Raw Sources: インポートした元資料。
  • Wiki: LLM が生成する構造化ページ。
  • Schema / Purpose: Wiki の構造ルールと目的。

生成される Wiki は [[wikilink]]、YAML frontmatter、index.mdlog.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 からダウンロードできます。

  • macOS: .dmg (Apple Silicon + Intel)
  • Windows: .msi
  • Linux: .deb / .AppImage

ソースからビルド

# 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. ReviewLint で 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 を参照してください。