社内ローカルRAGシステム
機器・アプリ・データ・アクター 設計概要
システム定義
社内のプロジェクト資料・議事録・動画を横断検索できる、完全ローカルのAI検索システム。データは社外に一切送信しない。社員はSlackまたはAnythingLLM(ブラウザ)から利用する。
本システムの役割は「考えること」ではなく「情報を探してまとめること」。社内固有の文脈をMarkdownに整理し、ChatGPTやClaudeのような外部AIに渡す入力を作ることで、社内情報の安全性を保ちながら外部AIの推論力を活かす橋渡しを担う。
UIの使い分け
| UI | 主な利用者 | 用途 |
|---|---|---|
| Slack Bot | 全社員 | 日常的な照会・質問 |
| AnythingLLM | 管理者・ヘビーユーザー | 文書管理・深い調査・レポート生成 |
強み・弱みの定義
このシステム(ローカルRAG)
強い
社内固有情報の検索・収集・md化
弱い
深い推論・最新情報・複雑計算
役割
文脈を作る
外部LLM(Claude / GPT-4o 等)
強い
推論・分析・文書生成・最新情報
弱い
社外秘情報の参照(送れない)
役割
文脈を使って考える
強みの詳細
| # | 強み | 理由 |
|---|---|---|
| 1 | プロジェクト固有情報への強さ | 社外に存在しない自社ナレッジをそのまま検索できる |
| 2 | データ主権・情報漏洩リスクゼロ | 推論も検索も社内完結。外部AIへのデータ送信なし |
| 3 | ランニングコスト ¥0 | ソフトウェアはすべてOSS。APIコール課金なし |
| 4 | レイテンシが低い | ローカル推論のためAPI呼び出し遅延なし |
| 5 | プロジェクト間の情報遮断 | ワークスペース分離で情報の混在を防げる |
弱みの詳細
| # | 弱み | 補足 |
|---|---|---|
| 1 | 深い推論・複雑な分析 | 32Bモデルは優秀だが、フロンティアモデルと比べると多段推論で劣る |
| 2 | 最新情報・リサーチ | 学習データのカットオフ以降の情報は持たない |
| 3 | ドキュメントの行間を読む力 | 明文化されていない暗黙知・文脈依存の判断は苦手 |
| 4 | 数値・計算精度 | Excelの数値を参照しても再計算・集計は行わない |
| 5 | 単一障害点(SPOF) | Mac Studio 1台構成のため障害時は全停止 |
| 6 | ドキュメント品質への依存 | 古い・粗いドキュメントはそのまま回答品質に直結する |
外部AIとの役割分担(使い方の型)
型 1 / 最頻ユースケース
ローカル → 外部
社内RAGで関連情報を収集・md化
↓
ChatGPT / Claude に貼り付けて分析・提案・文書作成を依頼
型 2
外部 → ローカル
外部で調べた業界トレンド・競合情報をmd化
↓
社内RAGに取り込み、自社文書と突き合わせて比較・検索
型 3
ローカル完結
日常的な検索・照会
↓
「〇〇プロジェクトの予算の根拠は?」など単純照会はそのまま完結
全体フロー(アクター視点)
| アクター | 操作・行動 |
|---|---|
| 社員 | Slackで @社内AI にメンション |
| 管理者(Osawa) | AnythingLLM管理画面でワークスペース・ルール設定 |
| cron(自動) | 定期的にファイル同期サービスを呼び出す |
| IT管理者 | RAG専用アカウント発行・SharePoint権限設定 |
機器レイヤー
flowchart TD
SP["☁️ Microsoft 365 / SharePoint\n(クラウド・社外)\n原本ファイル保管"]
OD["🔄 OneDriveアプリ\n読み取り専用アカウントで自動同期"]
DAS["💾 外部ストレージ DAS\n⚠️ PEND:TB5知見蓄積待ち\nPDF / Word / Excel / PPT / 動画"]
MS["🖥️ Mac Studio M4 Max\n64GB / 1TB SSD\n全サービスをここで動作\n10GbEで社内ネットワーク接続"]
PC["👤 社員のPC / スマートフォン\nSlackアプリ / ブラウザ"]
SP -->|"OneDrive同期"| OD
OD -->|"実ファイル同期"| DAS
DAS -->|"TB5接続(選定後)"| MS
MS -->|"10GbE 社内LAN"| PC
⚠️ PEND — 外部ストレージ(DAS)の選定は Thunderbolt 5 の知見蓄積後に再調査。Phase 1〜2 は内蔵 SSD で進める。
アプリケーションレイヤー(Mac Studio内)
| ポート | サービス名 | 技術 | フェーズ | 状態 |
|---|---|---|---|---|
| 11434 | Ollama(LLM推論) | Go / brew | Phase 1 | 設計確定 |
| 6333 | Qdrant(ベクトルDB) | Docker | Phase 2 | 設計確定 |
| 3001 | AnythingLLM(RAG・チャットUI) | Docker | Phase 2 | 設計確定 |
| 8000 | HTMLレポート生成サービス | FastAPI(Python) | Phase 5 | 設計確定 |
| — | Slack Bot | Python | Phase 5 | 設計確定 |
| 8001 | Whisper APIサービス | FastAPI + Whisper | Phase 4 | 実装予定 |
| 8002 | ファイル同期サービス | Python / cron | Phase 3 | 実装予定 |
| 8003 | PPTX生成サービス(SlideKit) | Node.js | Phase 5以降 | テンプレ待ち |
データフロー
データ取り込みフロー(自動・定期)
flowchart TD
SP["☁️ SharePoint"]
OD["🔄 OneDrive同期\n読み取り専用"]
ST["💾 外部ストレージ"]
DOC["📄 PDF / Word / Excel / PPT"]
VID["🎥 動画(mp4等)"]
SYNC["ファイル同期サービス\nport 8002"]
WISP["Whisper APIサービス\nport 8001"]
TXT["📝 文字起こしテキスト\n_transcript.txt"]
ALLM["AnythingLLM API\n文書登録"]
ALLM2["AnythingLLM API\n文書登録"]
QD["🗄️ Qdrant\nベクトルDB"]
SP --> OD --> ST
ST --> DOC --> SYNC --> ALLM --> QD
ST --> VID --> WISP --> TXT --> ALLM2 --> QD
質問・回答フロー(リアルタイム)
sequenceDiagram
actor 社員
participant SlackBot as Slack Bot
participant ALLM as AnythingLLM
participant Qdrant
participant Ollama
participant Report as HTMLレポート生成\nサービス
社員->>SlackBot: @社内AI 質問文
SlackBot->>ALLM: RAGクエリ
ALLM->>Qdrant: 意味検索
Qdrant-->>ALLM: 関連チャンク
ALLM->>Ollama: 推論(Model Router自動切換)
Ollama-->>ALLM: 回答テキスト
ALLM-->>SlackBot: 回答 + 参照元リンク
SlackBot->>Report: レポート生成リクエスト
Report-->>SlackBot: HTMLレポートURL
SlackBot-->>社員: 回答 + 参照元 + レポートURL
レポート閲覧フロー
flowchart LR
A["👤 社員\n(ブラウザ)"] -->|"SlackのURLをクリック"| B["🌐 HTMLレポートサーバー\nport 8000"]
B -->|"整形HTMLを表示"| C["📄 レポート表示"]
C -->|"PDFをダウンロードボタン"| D["🖨️ PDF出力\nwindow.print"]
名前空間の統一設計
プロジェクト名を軸に4レイヤーが一致する構成。
flowchart LR
SP["☁️ SharePoint\n/ProjectA/"]
OD["💾 OneDrive同期先\n/外部ストレージ/ProjectA/"]
WS["🤖 AnythingLLM\nワークスペース「ProjectA」"]
SL["💬 Slackチャンネル\n#project-a"]
RP["📄 HTMLレポート\n/reports/ProjectA/"]
SP -->|"同じプロジェクト名で統一"| OD
OD --> WS
WS --> SL
WS --> RP
Model Router(自動モデル切換)設計
| 条件キーワード | 振り先モデル | 理由 |
|---|---|---|
| 「翻訳」「要約」「まとめて」 | Gemma 12B | 高速(シンプルタスク) |
| 「分析」「比較」「詳しく」 | Qwen2.5 32B | 高精度(複雑タスク) |
| (その他デフォルト) | Qwen2.5 32B | 安全側に倒す |
設定はAnythingLLM管理画面のGUI操作のみ。プログラム不要。
フェーズ別進捗
- Phase 0システム設計・構成選定・計画策定✓ 完了
- Phase 1Ollama + AIモデル導入未着手
- Phase 2Docker・Qdrant・AnythingLLM未着手
- Phase 3OneDrive同期・ファイル同期サービス未着手
- Phase 4Whisper 動画文字起こしパイプライン未着手
- Phase 5Slack Bot・HTMLレポートサービス・Model Router未着手
- Phase 6社内公開・ユーザーテスト未着手
現在地: 設計フェーズ完了。Phase 1〜2 の実機セットアップへ移行準備中。
残課題(ペンディング事項)
| 課題 | 備考 |
|---|---|
| 外部ストレージ選定・購入 | PEND TB5知見蓄積待ち |
| IT管理者へのアカウント発行依頼 | RAG専用アカウント・閲覧のみ権限 |
| Mac Studioの固定IP設定 | 192.168.x.x を固定 |
| Phase 1〜2 実機セットアップ | Ollama・Docker・AnythingLLM導入 |
| HTMLレポートCSSデザイン | ロゴ・フォント・カラー確定後 |
| ReGACYテンプレート入稿 | PPTX生成サービスの前提条件 |