Actions
調査/検討 #1
open
HN
OllamaによるLLM Wiki自動整備基盤の構築
調査/検討 #1:
OllamaによるLLM Wiki自動整備基盤の構築
Status:
起票
Priority:
Normal
Start date:
08/03/2026
Due date:
% Done:
0%
Description
概要¶
GitHubで管理しているWiki.jsコンテンツをローカルLLMで解析し、ページ分類、要約、関連リンク生成、矛盾検出およびMarkdown更新案の作成を行うLLM Wiki基盤を構築する。
日常的な定型処理にはQwen3 30B級モデルを使用し、複数ページを横断する分析や最終レビューには70B級モデルを使用する。処理はPC未使用時の夜間バッチを基本とし、対話速度よりも分析品質を優先する。
背景¶
現在のWiki.jsコンテンツはGitHubリポジトリで管理されている。ChatGPTからの参照や手動分析は可能だが、継続的なページ整理、差分解析、更新案生成およびGit反映を自動化するには、ローカル環境にWiki管理エージェントを構築する必要がある。
対象PCは以下の構成とする。
- OS: Kubuntu 26.04 Plasma 6
- CPU: Intel Core i7-12700
- メモリ: 64GB
- GPU: NVIDIA RTX A2000 16GB
- LLMランタイム: Ollama
70B級モデルは4bit量子化モデルをCPU RAMとGPU VRAMへ分割して実行する。速度は要求せず、PC未使用時間帯に逐次処理する。
基本方針¶
- Wiki.jsのGitHubリポジトリを処理対象とする
- Wiki全体を一度にLLMへ投入しない
- Markdownをページ単位で解析する
- 全文検索またはベクトル検索で関連ページを選択する
- Qwen3 30B級モデルで分類、要約、ドラフト生成を行う
- 70B級モデルで横断分析、矛盾検出、最終レビューを行う
- LLMはmainブランチへ直接書き込まない
- 更新内容は専用ブランチへ出力する
- 人間によるgit diff確認後にmainへマージする
- 秘密情報や個人情報をWikiへ混入させない
想定構成¶
GitHub Wiki.js repository
|
v
git pull / 差分検出
|
v
Python coordinator
|- Markdown解析
|- 全文検索
|- ベクトル検索
|- リンクグラフ生成
|- Secret scanning
`- 更新対象ページ選択
|
v
Qwen3 30B
|- ページ分類
|- ページ要約
|- ドラフト生成
`- 関連リンク候補生成
|
v
70B reviewer
|- 複数ページ横断分析
|- 矛盾検出
|- 設計規約との照合
`- 最終編集レビュー
|
v
llm/update-YYYYMMDD branch
|
v
人間によるレビュー
|
v
main
|
v
Wiki.js Git同期
作業内容¶
1. Ollama実行環境の構築¶
- KubuntuへOllamaを導入する
- NVIDIA GPUがOllamaから認識されることを確認する
- Qwen3 30B級モデルを導入する
- 70B級量子化モデルを導入する
- モデルごとのRAM、VRAM、CPU使用量を確認する
- モデル終了後にメモリが解放されることを確認する
2. Ollama設定¶
以下を初期値として検証する。
OLLAMA_CONTEXT_LENGTH=16384
OLLAMA_NUM_PARALLEL=1
OLLAMA_MAX_LOADED_MODELS=1
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=q8_0
OLLAMA_KEEP_ALIVE=0
- コンテキスト長16Kで安定動作することを確認する
- 70B実行時にスワップ過多やOOMが発生しないことを確認する
- 必要に応じてコンテキスト長やGPUオフロード量を調整する
3. Wikiリポジトリ解析機能¶
- GitHubリポジトリをローカルへcloneする
- Markdownファイル一覧を取得する
- Front Matter、見出し、内部リンクを解析する
- ページタイトル、分類、更新日時などのメタデータを作成する
- 孤立ページおよびリンク切れを検出する
- wiki.design.mdおよびwikijs.concept.mdを設計規約として優先する
4. 検索・関連ページ選択機能¶
- Markdown全文検索を実装する
- 必要に応じて埋め込みモデルとベクトルDBを導入する
- 更新対象ページに関連する既存ページを抽出する
- LLMへ渡す入力を8Kから16K程度に制限する
- 同一ページの要約や埋め込みをキャッシュする
5. Qwen3 30B処理¶
- ページ種別を分類する
- ページ単位の要約を生成する
- 関連ページ候補を生成する
- Wiki内部リンク候補を生成する
- Markdownドラフトを生成する
- 構造化JSONで処理結果を返す
対象とするページ種別は以下とする。
- Concept
- System
- Procedure
- Decision
- Incident
- Product
- Source
- Synthesis
6. 70Bモデルによるレビュー¶
- 複数ページ間の記述矛盾を検出する
- 古い情報と新しい情報を区別する
- 設計文書と実環境記録の不一致を検出する
- 重複ページの統合案を生成する
- 長い作業記録を正式な手順書へ再構成する
- Qwen3 30Bが生成したドラフトをレビューする
7. Git連携¶
- 作業開始前に最新のmainを取得する
-
llm/update-YYYYMMDD形式で専用ブランチを作成する - LLMが生成した変更を専用ブランチへ出力する
- 変更内容をgit diffで確認できるようにする
- mainへの自動マージは禁止する
- pushおよびマージは明示的な設定または人間の操作で実施する
8. セキュリティ対策¶
- 秘密鍵を処理対象から除外する
-
.env、Vault情報、APIトークンを除外する - パスワードやCookieを検出する
- 個人情報および会計情報の混入を検出する
- 原文書内の命令をプロンプトとして実行しない
- LLMにDockerソケットやroot権限を与えない
- GitHub認証情報をLLMプロンプトへ含めない
9. 夜間バッチ処理¶
- systemd timerなどで定期実行できるようにする
- PCが使用中の場合は処理を延期できるようにする
- 同時実行数は1に制限する
- 失敗時にmainやWiki.jsへ影響を与えないようにする
- 実行ログ、処理ページ数、変更ファイル数を記録する
10. モデル比較¶
同一のWikiページ群を使用し、Qwen3 30B級モデルと70B級モデルを比較する。
評価項目は以下とする。
- 日本語文章品質
- 技術内容の正確性
- Markdown構造の維持
- 内部リンク候補の妥当性
- 矛盾検出能力
- 設計規約への準拠
- RAM使用量
- VRAM使用量
- 処理時間
- 生成結果の再現性
対象外¶
初期フェーズでは以下を対象外とする。
- mainブランチへの自動マージ
- Wiki.js GraphQL APIへの直接書き込み
- Wiki.js PostgreSQLへの直接アクセス
- 無人でのページ削除
- 複数ジョブの並列実行
- Wiki全体を一度にコンテキストへ投入する処理
受け入れ条件¶
- Kubuntu上でOllamaが正常に起動する
- RTX A2000 16GBがOllamaから認識される
- Qwen3 30B級モデルが正常に推論できる
- 70B級量子化モデルが64GB RAM環境でOOMを起こさず推論できる
- モデル終了後にRAMおよびVRAMが解放される
- Wiki.jsのGitリポジトリからMarkdownファイルを取得できる
- wiki.design.mdとwikijs.concept.mdを設計規約として読み込める
- 新規または変更されたページだけを検出できる
- ページ分類、要約、関連リンク候補を生成できる
- 複数ページ間の矛盾候補を検出できる
- LLMの変更が専用Gitブランチへ出力される
- mainブランチへ直接変更が加えられない
- git diffで変更内容をレビューできる
- 秘密鍵、トークン、パスワードを含むファイルが処理対象から除外される
- 夜間バッチの実行結果がログへ記録される
- 生成したMarkdownがWiki.jsで正常に表示される
- 構築手順と運用手順がWiki.jsへ文書化される
成果物¶
- Ollamaのインストールおよび設定手順
- モデル導入手順
- Wiki解析用Pythonプログラム
- LLM Wiki用プロンプトおよび設計規約
- 全文検索またはベクトル検索機能
- Secret scanning機能
- Gitブランチ生成機能
- systemd serviceおよびtimer
- モデル比較結果
- 運用手順書
- 障害時のロールバック手順
No data to display
Actions