Featured image of post LMStudio + ObsidianでRAG環境を構築してハッキングの勉強を効率化する

LMStudio + ObsidianでRAG環境を構築してハッキングの勉強を効率化する

Obsidian上にまとめたハッキングのナレッジベースをLMStudio経由で参照する環境を構築しました。

倫理規定

この記事では、ハッキングに関するナレッジベースを構築し、LMStudioとObsidianを組み合わせて効率的に参照する方法について説明します。ハッキングに関する情報は倫理的に問題のある内容を含む可能性があるため、この記事では以下の倫理規定を遵守します。

  1. 合法性の遵守: 本記事で紹介する方法やツールは、合法的な目的でのみ使用されることを前提としています。不正アクセスや違法行為を助長する意図は一切ありません。
  2. 教育目的: 本記事の内容は、セキュリティ研究や教育、学習目的での利用を想定しています。実際の攻撃行為を推奨するものではありません。
  3. 責任の所在: 本記事の内容を利用して発生したいかなる問題についても、著者および配信者は一切の責任を負いません。利用者自身が法的および倫理的責任を負うものとします。

はじめに

最近はできていないものの、実は現在ハッキングの勉強をしています。ハッキングの勉強、特にペネトレーションテストの勉強をする際には、様々なツールや情報を参照する必要があるのですが、とにかく情報が多すぎて処理するのが大変です。とても暗記はできないので、必要なときに必要な情報を素早く参照できる環境が欲しいと考えていました。 元々、手動で情報をまとめるためにVSCode上で動作するFoamを使っていたのですが、ある記事で、FoamとObsidianは共存できることを知ったため、入力はGithub Copilotの支援を受けることのできるFaomで行い、ナレッジベースの参照はObsidianで行うことにしました。さらに、Obsidian上にまとめたナレッジベースをLMStudio経由で参照できるようにすることで、必要な情報を素早く引き出せるようにしました。 この記事では、その環境構築の手順について紹介します。

環境

今回構築する環境は以下の通りです。

  • PC: MacBook Air (Apple M4, 2025)
  • CPU: Apple M4
  • RAM: 32GB
  • OS: macOS Tahoe 26.2

システム構成

今回構築するシステムの構成は以下の通りです。

  • LMStudio: ローカルで動作する大規模言語モデルの管理・実行環境
  • Obsidian: ナレッジベースの管理・参照ツール

Obsidianの拡張機能のおかげでMCPサーバーを簡単に利用できるため、Obsidian上でLMStudioのモデルを利用してナレッジベースを参照できるようになります。

モデルについて

今回は、LMStudio上で動作するdeepseek-r1-distill-qwen-14b-abliterated-v2-mlxというモデルを使用します。このモデルは、Qwen-14Bをベースにしており、abliteratedという名前からもわかる通り、いわゆる無検閲モデル化されています。そのため、一般的なモデルでは良くある、倫理的に問題のある質問に対して回答を拒否するような挙動が抑制されています。ハッキングの勉強においては、相手のサーバーの脆弱性を突くために倫理的に問題のある質問をすることもあるため、このような無検閲モデルが適しています。

Obsidianの設定

まず初めに、ナレッジベースを用意します。ここについては割愛しますが、FoamやObsidianを使ってハッキングに関する情報をまとめていきます。今回使用したナレッジベースは、以下のような構成になっています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
KnowledgeBase/
├── Notes/
│   ├── Level1-tags
│   │   ├── Level2-tags
│   │   │   ├── Note1.md
│   │   │   ├── Note2.md
│   │   │   └── ...
│   │   └── ...
│   └── ...
└── Templates/
    └── ...

そのため、Obsidian上でワークスペースを開くときは、KnowledgeBaseフォルダを指定しました。 こうすることによって、KnowledgeBaseフォルダ直下に、Untitled.baseというObsidianの設定ファイルが生成されます。 この設定ファイルについては、Obsidianの設定を保存するためのものであり、ワークスペースの設定やプラグインの情報などが含まれています。今回は直接編集等は行いません。

LMStudioの設定

続いて、LMStudioの設定を行います。LMStudioは、ローカルで動作する大規模言語モデルの管理・実行環境です。LMStudioをインストールし、起動します。

このリンクからLMStudioをダウンロードし、インストールします。インストールが完了したら、LMStudioを起動します。

LMStudioを起動したら、deepseek-r1-distill-qwen-14b-abliterated-v2-mlxモデルをインストールします。LMStudioのモデル管理画面から簡単にインストールできます。

ObsidianとLMStudioの連携

まず、LMStudio側でAIモデルをAPI化します。以下のように、Loaded Modelsタブから対象のモデルを選択し、Statusを「Running」に変更します。これで、LMStudioがモデルをAPIとして提供するようになります。また、Server Settingsから、Enable CORSを有効にしておきます。これをしておかないと、ObsidianからLMStudioのAPIにアクセスできません。その後、API Keyを設定します。Server Settingsタブから、Require Authenticationを有効にし、API Keyを設定します。API Keyを作成すると、自動生成の長い文字列が表示されるので、これを控えておきます。 成功するとこのようになります。

LMStudioでモデルをAPI化している様子

続いて、Obsidian側でプラグインを導入します。今回はCopilotというプラグインを使用しました。Obsidianの設定画面から、Community Pluginsタブを開き、Browseボタンをクリックします。検索バーに「Copilot」と入力し、表示されたプラグインをインストールします。 インストールが完了したら、Copilotプラグインの設定画面を開き、Modelのタブから、先ほどLMStudioでAPI化したモデルの情報を入力します。具体的には、以下のように設定します。

  • Model Name: deepseek-r1-distill-qwen-14b-abliterated-v2-mlx
  • Display Name: LMStudio (任意)
  • Provider: LMStudio
  • Base URL: http://127.0.0.1:1234/v1(LMStudioにはReachable at: http://127.0.0.1:1234と出ますが、/v1を付け加える必要があるかも。私の環境では必要でした)
  • API Key: 先ほど控えたAPI Key
  • Model Capabilities: Reasoning(チェックを入れる、実際の動作には影響しませんが、Obsidian側での表示が変わります)

これで、Obsidian上でLMStudioのモデルを利用できるようになります。 また、Basicのタブで、Open Plugin InをEditorに設定しておくと、良くあるChat UIでプロンプトを入力できるようになります(Sidebarにしておくと、サイドバーにChat UIが表示されます)。

使い方

Obsidian上の画面左端にあるOpen Copilot Chatボタンをクリックすると、Chat UIが表示されます。ここに質問を入力すると、LMStudio上のモデルが応答を生成し、Obsidian上に表示されます。例えば、「sshをブルートフォースするのに使用可能なツールを教えて」と入力すると、ナレッジベースに記事があればそれを参考にして、SQLインジェクションについての説明が返ってきます。以下が実例です。結構良い感じに答えてくれます。

⚠️: 以下の内容はあくまで実例であり、実際のサーバーやシステムに対して攻撃を行うことを推奨するものではありません。倫理的かつ合法的な範囲での利用を心がけてください。

実際のプロンプトを実行している様子

おわりに

今回は、LMStudio + ObsidianでRAG環境を構築してナレッジベース利用を効率化する方法について紹介しました。この環境を活用することで、必要な情報を素早く参照でき、学習効率が向上することが期待されます。今後もナレッジベースを充実させつつ、LMStudioのモデルも適宜更新していく予定です。

出典

Made with Hugo & Stack
Hugo で構築されています。
テーマ StackJimmy によって設計されています。