記憶の減衰
ペルソナの 長期記憶 は、机の上のメモのようなものだと考えてみてください。彼女は返答するたびに机の上のメモをすべて読み返すため、机がいっぱいになると返答が長くなり、コストもかさみます。記憶の減衰は、しばらくの間誰も必要としなかったメモを引き出しへと移動します。それらは捨てられるわけではありません:会話が引き出しの中のメモに触れると、彼女はそれを再び取り出します。このドキュメントでは、机の上のメモをアクティブ、引き出しの中のメモを休眠中と呼びます。
減衰には埋め込みモデルが必要です。プロバイダーとモデル を参照してください。埋め込みモデルがない場合、すべての記憶はアクティブなまま維持されます。
記憶が休眠し、呼び戻される仕組み
Section titled “記憶が休眠し、呼び戻される仕組み”- 各記憶には未使用日数のカウンターがあり、0から始まります。
- 返答ごとに、TomoriBotは1回の検索を実行します。彼女は最新のメッセージを埋め込み(意味を表現する数値のリスト。検索の仕組み を参照)に変換し、その会話で使用可能なすべての記憶と比較します。
- サーバーの記憶と個人の記憶全体から、適切に一致した最大3件の最も近い記憶が「使用された」とみなされます。それらのカウンターは0に戻ります。
- その検索に含まれる他のすべての記憶は、1日加算されます。これはメッセージが何件送信されたとしても、1日(UTC)あたり最大1回のみ発生します。
- カウントが7日に達すると、その記憶は休眠状態になります。毎回の返答に送信されることはなくなりますが、保存された状態は維持され、検索可能なまま残ります。
- その後のメッセージが休眠中の記憶と一致すると、彼女はその返答に記憶を追加し、カウンターがリセットされて再びアクティブになります。
アクティブであることは、使用されることとは異なります。記憶がアクティブであり続けるのは、何らかのメッセージにおいて上位の一致対象であり続ける間だけです。
検索に成功した日のみがカウントされます。会話のなかった日や検索に失敗した返答では何も変わらないため、単に時間が経過しただけで記憶が休眠することはありません。
あるサーバーの記憶「Junoの猫の名前はMochi」の場合:
| 会話があった日数 | 出来事 | カウンター | 状態 |
|---|---|---|---|
| 保存された日 | 保存された | 0 | アクティブ |
| その後の6日(会話あり) | ゲームの話ばかりで、Mochiの話題は出ない | 6 | アクティブ |
| 静かな1週間 | 誰とも会話していない | 6 | アクティブ(停止中) |
| 次の会話があった日 | 再びMochiの話題が出ない会話 | 7 | 休眠中 |
| その後の会話があった日 | Junoが「Mochiは元気?」と尋ねる | 0 | その返答のために呼び戻され、再びアクティブに |
誰の会話がカウントされるか
Section titled “誰の会話がカウントされるか”サーバーの記憶は、そのサーバーでペルソナが発言した日に日数が経過します。個人の記憶は、その所有者が会話に参加しているときにのみ検索されるため、それらの日についてのみ日数が経過します。Bauが月に1回訪れる場合、Bauの記憶が休眠するには話題に出ないまま7回の訪問が必要であり、常連の活発な会話によって減衰が進むことはありません。
プライバシー設定、ブラックリスト、チャンネル制限、またはタグによって非表示になっている記憶は検索されないため、日数が経過することも呼び戻されることもありません。
記憶が上限に達した場合
Section titled “記憶が上限に達した場合”各ペルソナは、デフォルトでサーバーの記憶100件と個人の記憶100件を保持できます。TomoriBotが上限に達したリストに新しい記憶を保存する際、空きを作るために休眠中の記憶を1つ忘れます。一度も一致したことのない記憶が最初に選ばれ、次いで最も長い間一致していない記憶が選ばれます。確認のメッセージには、サーバーの記憶通知の表示設定に従って、何が保存され、何が忘れられたかが表示されます。
以下の記憶が忘れられることはありません:
- Globalの個人の記憶
- 誰かが
/memoriesまたは/personal memoriesで追加または編集した記憶
インポートされた記憶は保護されません。保護するには、/memories または /personal memories で一度編集して保存してください。保護された記憶も休眠して検索を通じて呼び戻されることはありますが、保護によって忘れられることが防がれます。
対象となる記憶がない場合、またはその返答で検索が利用できない場合、保存は拒否されます。
指示は別の場所で設定する
Section titled “指示は別の場所で設定する”「常にJunoにはスペイン語で返答する」のような記憶は、人々が話す内容と一致することがめったにないため、休眠して適用されなくなる可能性があります。常に適用すべき指示は、ペルソナ属性、ペルソナプロンプト、または 常時有効(Always On)のロアブックエントリ に設定してください。
コストとプロンプトキャッシュ
Section titled “コストとプロンプトキャッシュ”検索は返答ごとに1回の埋め込みリクエストで行われ、ドキュメント 検索と共有されます。呼び戻された記憶はプロンプトの末尾近く、ドキュメントの隣に配置されるため、返答間でもプロンプトの先頭部分は同じまま保たれます。プロバイダーは繰り返されるプロンプト先頭部分に割引を適用するため、呼び出しはこの割引を維持できます。先頭部分が変化するのは、記憶がアクティブと休眠中の間を移動した直後の返答のみです。
減衰をオフにする
Section titled “減衰をオフにする”セルフホスト管理者は MEMORY_DECAY_ENABLED=false を設定することで、インスタンス全体で減衰をオフにできます。その場合、すべての記憶がアクティブなまま維持され、空きを作るために忘れられることはなくなり、上限に達したリストでは新規の保存が拒否されます。ドキュメント検索は引き続き機能します。また、減衰には pgvector データベース拡張機能も必要です。手動セットアップ を参照してください。