AIキャラクターがアイデンティティを忘れてしまう理由
キャラクターを作るのに2時間を費やしたとしましょう。しかし、30ターンも経つと、そのキャラクターは自分の名前を忘れてしまいます。そして、ありふれたアシスタントのような振る舞いを始めるのです。
多くの人は、AIの記憶力が悪いのだと考えがちですが、それは間違いです。
問題は「コンテキストウィンドウ」にあります。
チャットモデルはステートレス(状態を保持しない)です。メッセージを送るたびに、アプリはシステムプロンプト、キャラクターの詳細、そして直近のチャット履歴をモデルに送り返します。
あなたが「記憶」と呼んでいるものは、単に入力ウィンドウ内に履歴が留まっている状態に過ぎません。
チャットが長くなりすぎると、古いメッセージはウィンドウから押し出されてしまいます。41ターン目のスペースを作るために、12ターン目の詳細が消えてしまうのです。モデルが忘れたわけではありません。アプリが単にその情報をモデルに見せるのをやめただけなのです。
コンテキストウィンドウを大きくすれば解決するというものではありません。
ウィンドウを大きくすることには、2つの問題があります。
- コストと速度。ウィンドウサイズを2倍にすると、計算リソースの必要量が大幅に増加します。アプリは返答を速く、安価に保つために、ウィンドウサイズを制限することがよくあります。
- 中間情報の劣化(Middle degradation)。研究によると、モデルは長いテキストの最初や最後にある事実はうまく見つけられますが、中間に埋もれた事実は見落としてしまうことが示されています。
最良のアプリは、単なるウィンドウの大きさに頼りません。以下の2つの特定の手法を用いています。
- 再帰的要約(Recursive summarization):アプリが古いメッセージを短い要約に変換します。これにより、多くのスペースを消費することなく、核となる事実を維持できます。
- 検索(Retrieval):アプリが古いメッセージをデータベースに保存します。必要な時に、関連する事実だけを抽出します。これがlorebooksの仕組みです。
優れたアプリと劣ったアプリの違いは、そのアーキテクチャにあります。一方はメモリレイヤーを使用しており、もう一方は単に生のウィンドウを薄くラップしただけのものです。
もしキャラクターが個性を失ってしまったら、より大きなモデルを使うのではなく、構造を変えてください。古いターンを要約し、重要な情報を検索するようにするのです。
コンテキストウィンドウはハードドライブではなく、キャッシュとして扱うべきです。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi