とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

LM StudioとAnythingLLMで最強のローカルLLM環境を作る

ローカルLLMというと、「ChatGPTやClaude、Geminiの代わりになるもの」と思われがちですが、私は少し違う考えを持っています。

現在のSaaSのLLMは巨大なGPUクラスタの上で動いており、同じ性能を個人が手元のPCで再現するのは現実的ではありません。ローカルLLMはその代替ではなく、「できることを理解して上手に使い分ける」ためのものだと思っています。

なお記事のタイトルにLM Studioが入っていますが、今回の主役はあくまでAnythingLLMであり、すでにOllamaを使っている場合はOllamaでも構いません。この場合はプロバイダーとしてOllamaを選択すればあとは同じです。

ローカルLLMのメリット

ローカルLLMにはSaaSにはない、大きなメリットがあります。 それは、入力したデータや出力結果を基本的に自分の環境だけで完結できることです。

利用しているSaaSや契約プランによっては、入力データや会話履歴がサービス改善に利用される場合があります。そのため、業務上の機密情報や公開できないデータを扱う場合は注意が必要です。

「学習に使わせない」対策としては、大きく次のような方法があります。

  • 無料版は使わない
  • 有償プランはビジネスプランやエンタープライズプランを利用する
  • 公開できる情報だけSaaSへ送り、機密情報はローカルで扱う
  • ローカルLLMを利用する

私は用途に応じて、ローカルLLMとSaaSのLLMを使い分けています。

ローカルLLMのデメリット

もちろんローカルLLMにも弱点があります。 もっとも大きな弱点は、モデルの知識が学習時点で止まっていることです。いわゆる「カットオフ」の問題ですね。

例えば2024年までしか学習していないモデルは、その後に起こった出来事を知りません。 今回は、この弱点をLM StudioとAnythingLLMを組み合わせて補ってみます。

ローカルLLMを気軽に試せるソフトウェア

LM StudioはローカルLLMを動かすためのソフトウェアとして非常に人気があります。Ollamaと並んで定番ですが、GUIが充実しておりモデルの管理や設定も分かりやすく、個人的にも気に入っています。

そして今回の主役になるのがAnythingLLMです。 AnythingLLMはLM StudioやOllamaなどをLLMサーバーとして利用し、その上に様々な機能を追加できるフロントエンドです。今回はローカルLLMが主役なので詳しくは取り上げませんが、SaaSのLLMをプロバイダーとして設定して使うこともできます。

私がAnythingLLMで特によく利用しているのは次の機能です。

  • RAGによるドキュメント検索
  • AIエージェント機能
  • Web検索
  • チャット履歴や長期メモリ
  • モデルルーティング

もちろん他にも数多くの機能がありますが、このあたりだけでも十分便利です。

RAGとは

RAGについても簡単に触れておきます。 RAGとはLLMが持っている知識とは別に、自分が用意した資料を検索対象として追加する仕組みです。

以前はPythonなどで実装するケースが多く、少し敷居が高い印象がありました。 しかしAnythingLLMでは、RAG用のファイルをドラッグ&ドロップするだけで利用できます。

設定も

  • LM Studio(またはOllama)を用意する
  • LLMモデルをダウンロードする
  • AnythingLLMをインストールする
  • 取り込みたいファイルをインポートする

程度なので、かなり手軽に試せます。 RAGについては以前の記事で詳しく紹介しましたので、今回は省略します。

AnythingLLMのWeb検索機能

今回紹介したいのは、もう一つの機能である「Web検索と閲覧」です。 この機能は検索エンジンをいくつかの中から選択できます。デフォルトはDuckDuckGoが設定されています。

ローカルLLMは最新のニュースや出来事を知りません。 しかしAnythingLLMのAIエージェント機能を利用すると、必要に応じて検索エンジンから最新情報を取得し、その結果を踏まえて回答できるようになります。

つまり思考はローカルLLMが担当し、最新情報だけWebから取得するという使い方ができます。 ローカルLLMの弱点をかなり補える機能です。

では実際に試してみます。 今回はLM Studio上でGemma 4 12Bを動かし、AnythingLLMから利用しました。

まずは「Web検索と閲覧」をオフにした状態で、「日本の総理大臣は?」と質問してみます。 回答は次のようになりました。

現在の日本の総理大臣は、石破茂(いしば しげお)氏です(2024年10月に就任)。

それ以前の総理大臣は、岸田文雄(きしだ ふみお)氏でした。

惜しいですね。石破 茂氏の読み方を「しげお」と間違えていましたが、学習データの範囲内では妥当な回答です。

次に「Web検索と閲覧」をオンにします。 質問は少し変えて、「@agent Webで検索して、2026年1月時点の日本の総理大臣は?」としてみます。

Thinkingには次のように表示されました。

Assembling Tool Call: web-browsing({"query":"2026年1月 日本の総理大臣"})

@agent is executing web-browsing tool { "query": "2026年1月 日本の総理大臣" }

@agent: Using DuckDuckGo to search for "2026年1月 日本の総理大臣"

@agent: I found 10 results - reviewing the results now. (~1,885 tokens)

DuckDuckGoで検索を行い、検索結果を確認していることが分かります。 そして回答はこちらです。

検索結果に基づくと、2026年1月時点の日本の内閣総理大臣として高市早苗氏の名前が挙げられています。 検索結果には、以下のような内容が含まれています:

  • 就任時期: 2025年10月21日に第104代内閣総理大臣に指名されたという記述。
  • 歴史的背景: 日本史上初の女性内閣総理大臣としての就任。
  • 動向: 2026年1月1日の年頭所感や、2026年1月19日の記者会見、および同年1月23日の衆議院解散の発表などが記載されています。

検索結果を基に、高市早苗氏が2026年1月時点の内閣総理大臣であることを回答できました。

つまりモデル自身は2026年の出来事を知りませんが、AIエージェントがToolsとして提供されている検索機能を使い、ユーザーのプロンプトの要求から適切なキーワードで検索して取得した情報を利用することで、最新情報を踏まえた回答が可能になっています。

もちろん、この機能を利用すると検索クエリは検索エンジンへ送信されます。そのため、「完全に外部へ何も送信しない」というローカルLLM本来のメリットは少し失われます。

とはいえ、私たちも普段はブラウザーを開いて検索エンジンで情報を調べています。その検索作業をAIが代わりに行っているだけと考えれば、用途によっては十分実用的だと思います。

ただし、一つ注意点があります。 今回は非常にうまく動作しましたが、すべてのモデルで同じように成功するわけではありません。 モデルによってはツールをうまく呼び出せなかったり、検索結果を適切に要約できなかったりすることもあるためです。 つまり、AIエージェントでは「どのモデルを使うか」が想像以上に重要になります。

以前の記事ではAnythingLLMのモデルルーティング機能を紹介しましたが、このような用途でもモデルを使い分けるメリットは大きいと感じています。

まとめ

ローカルLLMはSaaSの代わりではありません。しかし、LM StudioとAnythingLLMを組み合わせることで、RAGやAIエージェント、Web検索といった機能を手軽に利用できるようになります。 特に「ローカルLLMでは最新情報を扱えない」という弱点は、AIエージェントのWeb検索機能を組み合わせることでかなり補えます。

ローカルLLMの活用方法は年々広がっています。 単にチャットをするだけでなく自分の用途に合わせて必要な機能を組み合わせていくことが、これからの使い方になっていくのではないでしょうか。