𝗔𝗜 𝗠𝗲𝗺𝗼𝗿𝘆 𝗜𝘀 𝗔 𝗣𝗿𝗼𝗱𝘂𝗰𝘁 𝗦𝘁𝗮𝘁𝗲, 𝗡𝗼𝘁 𝗔 𝗣𝗿𝗼𝗺𝗽𝘁 𝗧𝗿𝗶𝗰𝗸
メモリを持つAIプロダクトを構築するのは困難です。
簡単な方法は、事実を保存して次のプロンプトに含めることです。これは、ユーザーの好みを記憶するといった単純なタスクには有効です。
しかし、ユーザーが個人データを共有する場合、この方法は失敗します。プロダクトが夢、気分、あるいは個人的な内省などを扱う場合、メモリを一つの「バケツ」として扱うことはできません。
メモリに対して単一の「オン/オフ」スイッチを用意するだけでは、複雑すぎる実態を隠してしまいます。ユーザーが所有するものと、モデルが使用するものは切り離さなければなりません。
私は内省的なAIプロダクトを構築する過程で、このことに気づきました。メモリは単一の概念ではなく、いくつかの異なるレイヤーで構成されているのです。
- 会話(Conversation):生のチャット履歴。
- セッションノート(Session notes):チャット後に作成される要約。
- メモリ項目(Memory items):ユーザーが承認した特定の事実。
- ユーザーコンテキスト(User context):ユーザー自身が記述した背景情報。
- 検索根拠(Retrieval evidence):特定のターンに対してシステムが選択したデータ。
- プロンプトコンテキスト(Prompt context):モデルが実際に目にする最終的なデータ。
各レイヤーには、それぞれ独自のルールが必要です。
最大のミスは、保存されたメモリとプロンプト実行時のメモリを混同することです。ユーザーはメモリ資産を所有していても、モデルに「今すぐ」それを使ってほしくない場合があります。
これを管理するためには、アクセスレイヤーが必要です。「メモリはオンか?」と問うのではなく、「このメモリをプロンプトに含めてよいか?」と問うべきなのです。
この区別によって、多くの問題が解決します。
- 無料ユーザーは、すべてのチャットでメモリを有効にすることなくデータを保存できる。
- ユーザーは履歴を削除することなく、メモリを一時停止できる。
- サブスクリプションの変更時に、データを安全に保持したまま、モデルによるデータ利用を停止できる。
また、なぜAIがそれを覚えているのかを説明する必要もあります。AIが2週間前の夢の話を突然持ち出してきたとき、その理由を説明できなければ、ユーザーは不気味に感じてしまうかもしれません。
システムはメタデータを保持すべきです。そのメモリがユーザーによる直接的なメモなのか、それともモデルによる推論なのかを明示する必要があります。
メモリをプロンプトのテクニックとして扱うのはやめましょう。プロダクトの状態として扱うのです。
機密性の高いデータや個人データを扱うプロダクトを構築する場合は、以下のルールに従ってください。
- 生の書き起こしデータを長期メモリとして使用しない。
- 重要なメモリ項目にはユーザーの承認を必須とする。
- 保存されたデータと、プロンプトに投入されるデータを分離する。
- アカウント全体だけでなく、個別の項目を削除できるようにする。
- 保存期間と削除ルールを、明確で当たり前(標準的)なものにする。
メモリが強力なものになる前に、その内容を検証可能にしておくべきです。
出典: https://dev.to/woshiliyana/ai-memory-should-be-a-product-state-not-a-prompt-trick-4m20