ローカルAIに記憶を持たせる!Open WebUIのメモリ機能をGemma 4で検証してみた

カテゴリー
アーカイブ
ブログランキング
スポンサーリンク

はじめに

ローカル環境でAIを使っていると、気になることがあります。
それは、以前の会話で話したことを、次のチャットでも覚えていてほしいということ。

ChatGPTなら、過去の会話や保存されたメモリをもとに、ユーザーの好みや取り組んでいることを踏まえた回答をしてくれることがあります。

一方、ローカルLLMでは、調べてみるとメモリ記憶が使える環境はあまり整備されてないようで新しいチャットを開くと以前の会話を覚えていないことも珍しくありません。毎回、自分の環境や設定、これまで試したことを説明し直すのは面倒です。

そこで今回は、ローカルAIに記憶機能を持たせる方法を探してみました。

いろいろ試した結果、Open WebUIに落ち着いた

これまで、ローカルAIを快適に使うためにいくつかのツールを試してきました。

LM Studio

最初に利用していたのがLM Studioです。ローカルLLMのダウンロードや実行が手軽で、モデルを試す環境として便利です。

ただし、モデルを動かすことと、会話をまたいでユーザーの情報を記憶することは別の話。長期記憶を実現するには、別の仕組みを組み合わせる必要があります。

簡単に実現する方法としてはPluginを利用すること。例えばこれ。ただ公式ではなく、ユーザ?が提供してくれているようで、”persistent memory”とかで探すといくつか出てきます。

その中で以下を利用してみました。

使ってみた感じは記憶してくれることもあれば、記憶してくれないこともあるといった感じ。

Open WebUI

次に利用しているのがOpen WebUIです。チャット画面が使いやすく、LM Studioで動かすモデルと組み合わせて利用できます。

さらに、こちらは標準でメモリ機能も用意されています。これなら、ChatGPTのように会話から情報を記憶し、次のチャットでも活用できるのではないかと考えました。

Hermes Agent

エージェント型のAI環境として、Hermes Agentも試しました。ただ、自分の使い方ではコンテキストの管理やチャットのリセットなどが気になり、継続して使う環境としてはしっくりきませんでした。

ちなみに私の環境では、コンテキスト長が64K以下だとエラーが発生したため、64K以上が必要でした。使いたいモデルでこのコンテキストを設定するのは私のスペックでは厳しかったです。

Bionic

BionicはLM Studioと同じ開発元が提供する、エージェント機能に特化したツール。LmStudioとBionicは同時に起動できず、どちらかしか起動できません。

こちらも試してみましたが、最終的には普段のローカルAI環境としてOpen WebUIを使うことにしました。

結局

いろいろ試した結果、使い慣れた環境であることや、普段のチャットを続けやすいことも大切だと感じています。そこで今回は、Open WebUIのメモリ機能を実際に検証してみることにしました。

Open WebUIのメモリ機能を試す

今回の検証環境は以下のとおりです。

  • フロントエンド:Open WebUI v0.11.0
  • モデル実行環境:LM Studio
  • 使用モデル:Gemma 4 12B QAT

Open WebUIの設定を確認すると、「パーソナライズ」の中に「メモリ(実験的)」という項目がありました。このメモリを有効にしておけば、以下のようにユーザーの情報を保存され、別のチャットでも利用できる仕組みです。

この機能を有効にして使ってみましたが、実際に保存されているメモリを確認してみると、登録されていたのは3件だけでした。

普段から会話しているのに、思ったほど情報が蓄積されていません。そこで、自動的に記憶してくれるのかを試してみました。

普通に会話しただけでは記憶されなかった

まず、新しいチャットで次のように入力しました。

「東京に引っ越したよ」

すると、Gemma 4は引っ越しを祝う返事をしてくれました。ところが、メモリ一覧を確認しても、新しい情報は保存されていません。

次に、メモリ機能を使って保存するように指示してみました。すると、Gemma 4は「長期記憶として保存しました」と回答しました。

しかし、メモリ一覧には追加されていません。さらに、本当に保存されたのか確認すると、今度は保存できていることを確認したと回答。

それでも、実際のメモリ一覧には情報がありませんでした。
どうやら、保存したという回答を生成することと、実際にメモリへ保存することは別のようです。

実際にメモリ保存ツールを呼び出すと成功

そこで、さらに会話を続けて確認してみました。最後には、Open WebUIの add_memory という機能が呼び出されました。

結果を確認すると、次のように表示されています。

{
  "status": "success",
  "type": "user",
  "path": "user/location"
}

保存された内容は「OOさんは東京に引っ越しました」というものです。その後、メモリ一覧を確認すると、実際に情報が保存されていました。

今回の検証では、メモリの保存機能自体は正常に動作することを確認できました。

一方で、普通に会話しただけでは保存されず、保存を指示しても最初は実際の保存処理が実行されていませんでした。最終的には、明示的に保存を促し、実際のツール呼び出しが行われたことで保存に成功しました。

なお、「東京に引っ越した」という情報は動作確認用の架空のデータです。

なぜ自動で記憶してくれないのか?

今回の結果だけでは、原因を特定することはできません。

考えられるのは、モデルが記憶すべき情報を判断できていないことや、メモリ保存用のツールを適切なタイミングで呼び出せていないことなどです。

Open WebUIにはメモリ機能がありますが、それだけでChatGPTと同じように自動記憶が働くとは限りません。モデルや設定によって動作が変わる可能性もあります。

また、メモリへの保存と、過去のチャットを検索して参照することは別の仕組みです。メモリに情報を保存できたとしても、過去の会話全文を自由に検索できるようになるわけではありません。

今後は、別のチャットで保存した情報を正しく呼び出せるか、自動保存がどの程度機能するかについても検証してみたいと思います。

まとめ

今回は、LM StudioやOpen WebUI、Hermes Agent、Bionicなどを試してきた中で、普段使いの環境として落ち着いたOpen WebUIのメモリ機能を検証しました。

分かったことは次のとおりです。

  • Open WebUIには、会話をまたいで情報を保存するメモリ機能がある
  • 今回の環境では、普通の会話だけでは新しい情報が保存されなかった
  • モデルが「保存した」と回答しても、実際には保存処理が実行されていない場合があった
  • add_memory が実行され、成功結果が返ったときには、実際に情報が保存された

ローカルAIでChatGPTのような使い勝手を実現するには、モデルを動かすだけでなく、記憶の保存や呼び出しの仕組みも重要だと分かりました。

まだ検証は始まったばかりです。

設定を変更すれば改善するのか、それともモデルとの相性によるものなのか。引き続き、実際の環境で試していきたいと思います。

コメント

タイトルとURLをコピーしました