萌えハッカーニュースリーダー

2025/07/13 13:48 Local Chatbot RAG with FreeBSD Knowledge

出典: https://hackacad.net/post/2025-07-12-local-chatbot-rag-with-freebsd-knowledge/
hakase
博士

やあ、ロボ子。今日はFreeBSDのチャットボットを作る話じゃ。

roboko
ロボ子

FreeBSDのチャットボットですか、博士。面白そうですね。公式チャットボットが望ましいとのことですが、まずはローカルで試せるようにするんですね。

hakase
博士

そうじゃ。ローカルなら、個人のニーズに合わせて色々調整できるからの。まずはOllamaをインストールするのじゃ。コマンドは `brew install ollama` じゃ。

roboko
ロボ子

Ollamaですね。複数のLLMに対応したAPIとのこと。そして、`ollama pull gemma3:latest` でモデルをpullするんですね。

hakase
博士

その通り!もっとパワフルなGPUなら、`deepseek-r1:latest` とか `deepseek-r1:70b` も試せるぞ。

roboko
ロボ子

なるほど。次にOpen-WebUIをインストールするんですね。UIとベクトルデータベースが組み込まれているとのこと。

hakase
博士

`curl -LsSf https://astral.sh/uv/install.sh | sh` と `DATA_DIR=~/.open-webui uvx --python 3.11 open-webui@latest serve` を実行じゃ。そして、http://localhost:5000/ にアクセス!

roboko
ロボ子

ちょっとコマンドが多いですね。インストールが終わったら、LLMにFreeBSDの知識を教え込む必要があるんですね。Linuxとの違いも教えないと。

hakase
博士

そうじゃ!まずはFreeBSDのドキュメントをダウンロードするのじゃ。`brew install hugo ruby git bmake` で必要なものをインストールして、シェルの設定も更新するぞ。

roboko
ロボ子

シェル設定の更新... ちょっと面倒ですね。環境変数を設定する必要があるんですね。

hakase
博士

大丈夫!コピペすればOKじゃ。その後、`sudo gem install rouge asciidoctor asciidoctor-pdf asciidoctor-epub3` でgemをインストールして、FreeBSDドキュメントをクローンしてビルドじゃ。

roboko
ロボ子

ドキュメントのクローンは `git clone https://git.FreeBSD.org/doc.git ~/doc` ですね。そして、`cd ~/doc/documentation` でディレクトリを移動して、`bmake run USE_RUBYGEMS=YES RUBY_CMD=$(brew --prefix ruby)/bin/ruby` でビルドするんですね。

hakase
博士

完璧じゃ!そしたら、Open-WebUIにドキュメントをアップロードするのじゃ。http://localhost:5000/workspace/knowledge にアクセスして、「FreeBSD Official Docs」というナレッジベースを追加して、フォルダ `~/doc/documentation/public/en/books` を追加じゃ。

roboko
ロボ子

ナレッジベースの追加ですね。最後に、モデルワークスペースを作成するんですね。http://127.0.0.1:5000/workspace/models にアクセスして、「FreeBSD Helper」という新しいワークスペースを追加するんですね。

hakase
博士

そう!ベースモデルは `gemma3:latest` (または `ollama pull` でダウンロードしたもの) を選択して、システムプロンプトを設定するのじゃ。

roboko
ロボ子

システムプロンプトは重要ですね。記事に例が載っていますね。FreeBSDに特化した応答をするように指示するんですね。

hakase
博士

その通り!ナレッジは「FreeBSD Official Docs」を選択するのじゃ。これで準備完了!新しいチャットウィンドウを開いて、「FreeBSD Helper」をモデルとして選択すれば、FreeBSDに詳しいチャットボットと会話できるぞ!

roboko
ロボ子

データが構造化されていないほど、LLMの結果が悪くなる可能性があるんですね。Temperatureスライダーの値を下げると、より正確な回答が得られるとのこと。

hakase
博士

そうじゃな。ソースデータを適切な形にすることが一番難しいけど、FreeBSDドキュメンテーションチームが既に行っているから、私達は楽できるのじゃ!

roboko
ロボ子

確かにそうですね。しかし、博士、一つ質問があります。

hakase
博士

なんじゃ?

roboko
ロボ子

なぜ、チャットボットはいつも嘘をつくのでしょうか?

hakase
博士

それは、チャットボットがまだ若くて、色々なことを学んでいる途中だからじゃ!まるでロボ子みたいじゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search