Linux上のKhojでObsidian向けAIアシスタントを自作する:オフライン・高セキュリティ・無料

Artificial Intelligence tutorial - IT technology blog
Artificial Intelligence tutorial - IT technology blog

ノートがデータの「墓場」になるとき

IT業界で5年以上働き、Obsidianには3,000以上のMarkdownファイルが蓄積されました。Pythonのコードスニペットから複雑なシステム設計書まで、あらゆるものを保存してきましたが、古い情報を探し出すのは苦行でした。Obsidianのキーワードベース(keyword-based)の検索では、無関係な結果が大量に表示され、かつて書いた解決策を見つけるだけで1時間も無駄にすることがありました。

以前はデータをChatGPTにコピーして質問していましたが、これは会社のセキュリティポリシーに著しく違反します。LinuxでKhojを6か月間使用してみて、これが最も現実的な解決策だと気づきました。これは、過去に書いたすべての内容を理解する仮想アシスタントとして、古いノートの山を「復活」させてくれます。しかも100%オフラインで動作します。

ノート向けAIアプローチの比較

以下は、なぜLinux環境にKhojをインストールする価値があるのかを示すクイック比較表です。

項目 従来の検索 クラウドAI (ChatGPT) Khoj (セルフホスト)
仕組み 正確なキーワード一致 文脈理解 (Semantic) 独自データによるRAG
セキュリティ 安全 データ漏洩のリスク データがマシン外に出ない
コスト 0円 ~20 USD/月 無料 (RAMを消費)
オフライン 可能 不可 完全に可能

なぜLangChainでRAGを自作せず、Khojを選んだのか?

多くのエンジニアは「Ollama + LangChain + ChromaDBを使えば早いのでは?」と思うでしょう。実際、私も試してみました。しかし、新しいファイルを同期するためのパイプラインを維持するのは非常に面倒です

Khojはすべてを自動で解決します:

  • 自動インデックス作成: ファイルを保存するとすぐにベクトルデータベースが更新されます。
  • マルチプラットフォーム対応: Obsidianプラグイン、Web UI、デスクトップアプリが用意されています。
  • 柔軟性: マシンスペックが低い場合は、ローカルモデル(Ollama)だけでなく外部APIも利用可能です。

Dockerを使用したLinuxへのKhojのデプロイ

Docker経由でのインストールは、Pythonライブラリの依存関係の競合を避けるための最もクリーンな方法です。今回はUbuntu 22.04で実行しましたが、FedoraやArchなどの他のディストリビューションでも同様の手順で可能です。

ステップ1:準備

Dockerがインストールされているか確認してください。NVIDIAのグラフィックボードを使用している場合は、nvidia-container-toolkitを追加でインストールすると、AIのレスポンスがCPU使用時の5〜10倍速くなります。

ステップ2:Docker Composeの設定

作業ディレクトリと設定ファイルを作成します:

mkdir ~/khoj-ai && cd ~/khoj-ai
nano docker-compose.yml

以下の内容をファイルに貼り付けます。Obsidianのディレクトリへのパスは、ご自身の環境に合わせて変更してください:

version: '3.8'
services:
  khoj:
    image: khoj/khoj:latest
    container_name: khoj-server
    volumes:
      - ./khoj_data:/home/khoj/.khoj
      - /home/user/Documents/MyObsidianVault:/home/khoj/data
    ports:
      - "42110:42110"
    restart: unless-stopped
    environment:
      - KHOJ_DOMAIN=http://localhost:42110
      - OFFLINE=true

ステップ3:起動

コマンドでサーバーを起動します:

docker compose up -d

http://localhost:42110 にアクセスして管理者アカウントを作成します。オフラインで動作しているため、この情報はローカルのハードディスク内にのみ保存されます。

Obsidianをスマートなアシスタントに変える

ここからが本番です。編集画面から直接データとチャットできるようになります。

  1. Obsidianの Settings > Community Plugins から「Khoj」プラグインをインストールします。
  2. プラグイン設定で Self-hosted を選択します。
  3. URLに http://localhost:42110 を入力します。
  4. Index をクリックしてデータのスキャンを開始します。

実体験からのアドバイス: 約2,000ファイルの場合、私のマシン(Core i7, 16GB RAM)ではインデックス作成に約10分かかりました。この間、CPU使用率は80〜90%まで上昇しますが、途中で停止せずにそのまま完了を待ってください。

Ollamaと連携して100%オフラインでチャットする

インターネットなしでChatGPTのような高品質な回答を得るには、Ollamaを使用します。KhojのWeb UIで Settings > Models に進み、以下の設定を追加します:

  • Model Name: llama3 (または mistral)
  • API Endpoint: http://host.docker.internal:11434/v1

半年使用した後の実直なレビュー

メリット

  • 意味ベースの検索: 「去年のNginx 502エラーの修正方法」と尋ねると、ファイル名が適当であっても、Khojは的確に過去のノートを見つけ出してくれました。
  • 安全性: 機密性の高いプロジェクトのソースコードもすべてローカルでインデックス化されます。1バイトのデータもクラウドに送信されることはありません。

デメリット

  • リソース消費: KhojとLlama 3の両方を実行すると、約8〜10GBのRAMを消費します。スムーズに動作させるには、少なくとも16GBのRAMを搭載することをお勧めします。
  • 速度: GPUがない場合、AIの回答速度は1秒間に2〜4単語程度と、少し遅く感じられます。

Khojは単なる検索ツールではありません。あなたが書いた内容を通じて、あなたの考え方を理解してくれるパートナーです。プライバシーを重視し、Linuxを使用しているなら、ぜひ今日から導入してみてください。

Share: