1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLMに記憶を持たせる【第1部】― 記憶を概念IDに変換する

1
Last updated at Posted at 2026-10-23

image.png

はじめに

私は現在、Personal AI Agentを開発している。

Telegramや音声で日々の会話を記録し、必要に応じてRedmineにタスクを起票したり、ブログを自動生成したりするシステムだ。

ここで一つ疑問が生まれた。

LLMに個人の記憶を持たせるために、過去の文章をすべて検索する必要があるのだろうか。

一般的なRAGでは、文章をEmbeddingしてベクトルDBに保存する。

しかし、個人の記憶は必ずしも文章そのものではない。

例えば、登山日記がある。

ある日の登山について何千文字も書いたとしても、それが「登山」に関する経験だということは、もっと短い情報で表現できる。

そこで考えたのが、概念IDによる記憶の管理である。

1. 記憶を概念IDとして扱う

例えば、以下のような概念を登録する。

ID 概念
ID1 登山・登山日記
ID2 食事
ID3 満腹感
ID4 気分転換

日記や会話が発生したとき、LLMはその内容を解釈し、関連する概念IDに紐付ける。

例えば、次のような会話がある。

「今日はたくさん歩いたので、お腹がすいた。おいしいものを食べて気分転換したい」

この文章には複数の概念が存在する。

登山や運動、食事、満腹感、気分転換。

これらを別々の長い文章として保持するのではなく、概念ID同士の関連性として扱う。

もちろん、日記本文は必要に応じて参照できるよう保存しておく。

ただし、検索するたびに全文をLLMへ投入する必要はない。

2. 概念IDをベクトル空間で扱う

IDは単なる識別子だ。

ID1とID2という番号の差に、意味的な距離は存在しない。

そこで、概念IDに対応するベクトル表現を用意する。

例えば、

ID1 = 登山
ID2 = 食事
ID3 = 満腹感
ID4 = 気分転換

それぞれの概念は、意味的な関連性を持つ。

食事と満腹感は関連が強い。

登山と気分転換にも関連がある。

一方で、関連性は固定ではない。

ある人にとって登山は気分転換かもしれないし、別の人にとってはトレーニングかもしれない。

この個人差も、日々の会話や経験から更新していけばよい。

重要なのは、自然言語のあらゆる表現を個別に記憶するのではなく、概念単位で情報を整理することである。

3. 注目する概念はLLMが決める

では、どの概念を検索するのか。

ここにTransformerのAttentionから着想を得た考え方を導入する。

例えば、ユーザーが次のように発言したとする。

「最近、気分転換できていない」

LLMは、この発言から「気分転換」という概念に注目する。

すると、ID4に関連するID1の登山や、ID2の食事などが検索候補になる。

そして、関連する過去の経験を参照しながら、自然な回答を生成する。

ユーザーの発言
    ↓
LLMによる意味理解
    ↓
注目する概念IDを推論
    ↓
概念ベクトル空間から関連IDを取得
    ↓
必要な記憶をLLMに渡す
    ↓
回答

これだけである。

複雑な意思決定ルールを事前に定義する必要はない。

現在の話題と、個人の概念空間の関連性を使って、LLMが判断すればよい。

4. 人物や思い出も同じ仕組みで扱う

概念IDは、趣味や食事だけではない。

人、場所、イベント、思い出、感情なども対象になる。

例えば、ある人と登山した記録があれば、その人物と登山の概念が関連付く。

後日、その人物の話題が出たとき、登山の記憶も検索候補に上がる。

逆に、登山について話しているとき、その人物との経験が関連情報として現れることもある。

この関連性の形成を繰り返せば、単なる日記の検索ではなく、個人特有の連想記憶に近づいていく。

5. ファインチューニングは必要か

この構想では、必ずしもファインチューニングは必要ない。

LLMが持つ言語理解能力を利用し、個人固有の記憶や関連性は外部のデータモデルに保持する。

新しい経験が追加されたら、概念IDや関連性を更新する。

これなら、経験を記録するたびにLLMのパラメータを再学習する必要がない。

LLMは共通の知能として利用し、記憶の部分を個人に適応させていく。

6. 本当に軽量になるのか

概念IDを使えば、自然言語の文章を毎回検索する方式よりも、検索対象を整理できる可能性がある。

ただし、概念IDにしただけでEmbeddingの次元数が小さくなるわけではない。

また、文章が持つ細かな意味まで概念IDに圧縮できるとは限らない。

したがって、元の記録は残しつつ、概念IDを検索用の索引として利用するのが現実的だろう。

今回の仮説は、概念単位で記憶を整理することによって、検索効率と個人への適応性を改善できるのではないか、というものだ。

7. まとめ

今回考えた仕組みは単純である。

  • 日々の会話や経験を概念IDに変換する。
  • 概念IDをベクトル空間で扱う。
  • 概念同士の関連性を経験によって更新する。
  • 現在の会話からLLMが注目領域を推論する。
  • 関連する記憶を取得して、LLMの回答に利用する。

目指しているのは、巨大な会話履歴を検索するシステムではない。

個人の経験によって育つ、小さな概念空間を持ったPersonal AIである。

次回は、この概念IDをどのように検索し、TransformerのAttentionに着想を得た仕組みとして利用するかを考える。


次回:第2部「概念IDにAttentionを向ける ― 軽量Personal RAGの設計」

タグ:LLM / RAG / Python / Transformer / PersonalAI

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?