前幾天完成語音對話、Streaming 和 Barge-in 之後,AI Companion 已經可以比較自然地和使用者對話。
但目前還有一個問題:
每次重新開始對話,AI 幾乎都像第一次認識我。
如果今天告訴 AI:
我平常晚上喜歡出去散步。
下次聊天時它卻完全不記得,就很難真的做到「陪伴」。
所以今天開始加入第一版 Memory。
最簡單的方法是直接保存所有聊天紀錄,但聊天紀錄不代表長期記憶。
例如:
User:我平常晚上喜歡散步。
AI:你通常會去哪裡散步?
Conversation History 保存的是完整對話,而 Memory 要做的是從裡面找出「未來還值得記住的資訊」。
例如:
{
"category": "preference",
"content": "晚上喜歡散步"
}
第一版先把 Memory 分成兩類:
Memory
├─ General Memory
│ ├─ 喜好
│ ├─ 家人
│ ├─ 生活習慣
│ └─ 過去事件
│
└─ Health Memory
├─ 睡眠
├─ 飲食
├─ 活動
├─ 用藥
└─ 身體不適
General Memory 主要讓 AI 更了解使用者,例如喜歡散步、每天早上會去市場。
Health Memory 則為之後的高齡智慧健康照護做準備,例如:
我昨天晚上只睡四個小時。
可以轉成:
{
"type": "health",
"category": "sleep",
"content": "昨晚約睡 4 小時"
}
目前只負責記錄,還不進行健康判斷。
我希望使用者不需要自己告訴 AI「請記住這件事」,而是讓 LLM 自動判斷哪些資訊值得保存。
流程變成:
使用者對話
↓
LLM Memory Extraction
↓
判斷是否值得記
↓
轉成結構化 Memory
↓
Memory Store
例如:
「我平常晚上喜歡出去散步。」
↓
Memory Extraction
{
"type": "general",
"category": "preference",
"content": "晚上喜歡散步"
}
這樣一句普通的聊天內容,就能變成之後可以使用的長期記憶。
Memory 也不能什麼都存。
像「哈囉」、「等我一下」這類內容,未來幾乎沒有使用價值。
所以真正需要解決的是:
哪些事情值得讓 AI 長期記住?
第一版先透過 LLM 判斷,再將有價值的資訊存進 Memory。
今天先完成:
Conversation
↓
Memory Extraction
↓
General / Health Memory
↓
Memory Store
但當 Memory 越來越多,下一個問題也出現了:
AI 下一次對話時,到底該想起哪一段記憶?
Day 10 就來處理 Memory Retrieval。