Project

General

Profile

Actions

調査/検討 #1

open
HN

OllamaによるLLM Wiki自動整備基盤の構築

調査/検討 #1: OllamaによるLLM Wiki自動整備基盤の構築

Added by Hideki Nakano about 2 months ago.

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

Also available in: PDF Atom