地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

Chatにメモリー機能をローカルLLMを使って組み込んでみるテスト

chatGPTやcopilotではメモリー機能が組み込んであります。親しみは増えますが、ちょっと気持ち悪さも感じます。普段タスクとして投げていることが多いので、会話に慣れていないのかもしれません。しかしながら、このメモリー機能、質問が簡略化ですませられるのは便利です。

 

「仕事モード」「趣味モード」といった利用する立場を明確にして切り分けられると良いですね。「あなたは〇〇ですから、△△を考慮して・・・」と、タスクの邪魔となる場合もあります。

 

さて、メモリー機能のコンセプトとしては、以下をGemini君と会話しながら設定しました。

1.  **Session Metadata**: 今、ここ(時間・場所・環境)
2.  **User Memory (Facts)**: ユーザーに関する確定した事実(更新・削除可能)
3.  **Recent Summaries**: 過去の会話のハイライト
4.  **Current Context**: 現在進行中の会話履歴

全部実装するのは、メンドイので、簡単な2で示した事実ベースのメモリ機能と管理機能を実装します。会話の記録を参照したり、間違ったことを訂正(削除)して蓄積したり、といった機能をチャットで使えることになります。要は会話から覚えておくべきことを抽出し、updateやdeleteを行いながら保管しておいて、関連事項を取り出す・・・だけです。

 

モリー機能としては以下の様な、挿入、更新、削除、何もしない、という動作を選びます。

- 'insert': If the user states a new, concrete fact about themselves (e.g., preferences, personal details).
- 'update': If the user provides a new fact that contradicts or clearly updates an existing fact.
- 'delete': If the user explicitly states that a fact is no longer true.
- 'none': If the user's message is a question, a greeting, or contains no new factual information.

 

後は記憶の評価や忘却機能を組み入れていけば、ざっくりとした長期記憶システムになります。

 

LLMには、gemma3:4b-it-qat(ollama)を使います。普通のGPUで動作できますし、日本語結構上手です。知識はあやしいので、メモリー機能の効果も分かりやすい・・・はずです。

 

結果:

スターウォーズについての会話の中で・・・。ハンソロ役がデカプリオが演じているような回答がありました。そこで、教えてあげます。



そのあと別のセッションで聞いてあげます。

 

例えば以下の様な感じで、事実を出し入れします。

MemoryManager: Processing conversation...
MemoryManager: LLM decided action: insert
MemoryManager: Inserted fact: 'チューバッカは、毛むくじゃらのウーキー族の戦士、ワシ将軍でした。' under category 'personal'
MemoryManager: Processing conversation...
MemoryManager: LLM decided action: insert
MemoryManager: Inserted fact: 'ハン・ソロのちょい悪な感じが、Star Warsの魅力の一つだと感じています。' under category 'preference'
MemoryManager: Processing conversation...
MemoryManager: LLM decided action: update
MemoryManager: Updated fact 1 to 'ハリソン・フォードハン・ソロ役を演じた。'
MemoryManager: Processing conversation...
MemoryManager: LLM decided action: none
MemoryManager: Processing conversation...
MemoryManager: LLM decided action: insert
MemoryManager: Inserted fact: 'レオーナルド・ディカージオは、イタリアの俳優、映画監督、脚本家です。主な出演作品としては、『キミと僕とファニー・ペニーと』(1977年) - ラッキー役、『ムッシュピカソ』(1976年) - ピカソのモデル、『レディ・プレイヤー1』(2018年) - ジョン・タ ールです。独特な表情と、静かで落ち着いた演技スタイルが特徴です。' under category 'personal'

それなりに動いているようです。

 

何を覚えておくべきか、積極的に記憶するようにするとよいかも。

 

なかなか、面白かったので、もう少し遊んでみます。

 

GitHub - chottokun/Learn_MemorySystemConcept