目前我们所使用的 Memory,大多只存在于内存中,一旦进程关闭、用户刷新页面,所有历史对话都会丢失。实际项目中,我们常常希望:
- 让用户“第二次回来”还能接着上次对话继续聊
- 将多轮聊天记录保存在本地或数据库中,用于分析、审计、训练、回溯
这时候,我们就需要将 Memory 做持久化操作,从而实现“记忆不丢失”。
要进行持久化操作,无非就两种方式:
- 存储至文件
- 存储至数据库
课堂练习:手动封装一个做持久化处理的 FileChatMessageHistory 类。
什么时候做持久化?
不需要每一轮都写磁盘,这样太频繁了:
- 文件 I/O 频繁写入会带来性能开销;
- 若使用数据库,也可能造成 写操作压力大;
通常采用“退出写入”的机制,或者推荐如下的触发时机:
| 触发时机 | 推荐用途 |
|---|---|
| 每隔几分钟 | 自动同步、做日志 |
| 用户关闭页面 | 防止会话丢失 |
| 用户点击保存 | 主动存档、构建知识库 |