株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

ローカルLLMでRAGチャットボットを作ってみる! [Dify / Tenstorrent / TT-QuietBox]

こんにちは、ネットワールド技術担当の山下です。

皆様、ローカルLLMは使われてますでしょうか!?

ローカルLLMとは、その名の通りインターネットに接続せずに、お手元のPCやオンプレミス環境で 大規模言語モデルを動作させることで、以下のような利点があると言われてます。

- プライバシーの確保
インターネット接続不要なため、機密性の高いデータや個人情報を扱う業務でも安心して利用できます。

- 低レイテンシ・高速応答
インターネット通信遅延や通信遮断の影響を受けず、リアルタイム性の求められるアプリケーションでもスムーズな応答が得られます。

- カスタマイズ性
手元の環境でモデルをファインチューニングしたり、用途に応じたプロンプト設計を柔軟に行うことが可能です。

※注)すべての業務をローカルLLMに置き換えようという話ではありません。多くの場合、ChatGPTのように手軽に使えてパフォーマンスも高いクラウド型サービスで十分といえます。そのうえで、特にプライバシーやカスタマイズ性が重視される一部の業務については、ローカルLLMの導入を検討してみる価値があるかもという話になります

というわけで、今回はローカルLLMで RAGチャットボットを作ってみようと思います!

RAG構成イメージは以下のような感じになります

チャットボットには最近流行りのDifyを使っていきます。

GitHubからDifyのソースコードをクローンして、社内オンプレPCにデプロイして、社内機密情報をナレッジ登録してコンテキストに追加します。プロンプトは追加したコンテキスト(社内機密情報)を参照するように以下のように記述しています。

※ちなみに、プロンプトの語尾に「にゃん」をつけているのは、単に自分にやさしい返答がほしいだけですので、特に気にしないでください(笑)

 

ローカルLLMを動かすPCには、Tenstorrent社のTT-QuietBoxを使用します。

見た目すごくカッコいいワークステーションです。オフィスの作業机の下にいい感じに収まりました。液体冷却方式を採用しており、「TT-QuietBox」という名前のとおり非常に静かで、動作音が気になることはありませんので、オフィス内でも快適に使用できてます。

大規模言語モデル(LLM)をサクサク動かすには、AIアクセラレータが重要になってきます。これは、めちゃくちゃ重たい計算を高速で処理してくれる専用ハードウェアで、LLMの性能をしっかり引き出すためのキモになる存在であります。

今回使用するローカルLLM対応マシン「TT-QuietBox」には、「Wormhole n300」というAIアクセラレータカードが4枚搭載されており、Llama 3.3-70Bクラスのモデルでもちゃんと動作する構成になっております。

NVIDIAのGPUではなく、RISC-Vベースの安価なAI専用チップを搭載しているので、非常にコストパフォーマンスが高いと言えます。Llama 3.3-70Bクラスのモデルをローカル環境でちゃんと動かしたいけど、できるだけ購入予算は抑えたい——そんな「コスパ重視派」にとっての おすすめ構成の一つと言えるでしょう。

それでは、TT-QuietBox上で vLLM を使ってローカルLLM / Llama 3.3-70Bを動かしてみましょう。
TTでモデルを動かすためのvLLMフォークがありますのでこれを使うのがいい感じになります。

TT提供のDockerコンテナを使えば、vLLMでローカルLLMのAPIサーバを簡単に自動起動することができます。Hugging FaceからLlama 3.3-70Bモデルをダウンロードして、その保存先パスをベースに環境変数を設定すれば、以下のようなDockerコマンドを実行するだけで、すぐにローカルLLMのAPIサーバを起動できるのでいい感じです!

docker run -it \
  --cap-add=sys_nice \
  --env-file .env \
  --shm-size=4g \
  --device /dev/tenstorrent \
  -v /dev/hugepages-1G:/dev/hugepages-1G \
  -v /home:/home/ \
  --publish 7000:7000 \
  ghcr.io/tenstorrent/tt-inference-server/tt-metal-qwen25-72b-deepseekr1-llama3-70b-src-base-vllm

ちなみに、Tenstorrentのプラットフォームでは今回のLlama 3.3-70B以外にも、各種モデルをサポートしてますので、ご興味ある方は以下の開発者ページをチェックしてみるのもいいかもです。用途や目的に応じて以下のようなLLMを手軽に試すことができます。

vLLMが以下のように起動したら、あとはDifyの設定をすれば準備完了です。

vLLM のAPIはOpenAIのAPI互換になりますので、Difyの設定でモデルプロバイダーから、OpenAI-API-compatible を追加して有効化します。

あとは、OpenAIのAPI互換/ローカルLLMのエンドポイントの設定をするだけです。

vLLMを起動する際にDockerコマンドで指定したポート番号(例:7000)を使用し、そのポートをエンドポイントとして指定すれば、設定は完了です。

 

では、作成したローカルLLMモデル/Llama-3.3-70Bを選択して、RAGチャットボットがちゃんと動作してるかの確認してみましょう、試しに「社内Wi-Fiのパスワードを教えて」と聞いてみました。

 

はい、回答がちゃんと返ってくれば成功です!

※この情報は架空のものですのでご安心ください、念のため(笑)

 

今回作成したこのローカルLLM 環境をベースに、これからブログでいろいろと発信していければと思います。最後までお読みいただき、ありがとうございました!