不知道你们有没有玩过这个玩具
N 个齿轮串联,第 1 个齿轮转 10 圈第二个齿轮转 1 圈,以此类推第 N 个齿轮宇宙毁灭也不会转一圈
定义一个二维数组存记忆[[],...]每个数组定义一个最大长度 L ,AI 经历的每个记忆(问答)先记录到第 0 个数组,记满 L 后就把其中的后一部分 M 个拿出来让 AI 自己总结成一条记忆 push 到下一个记忆数组里,以此类推。
这样用有限的二维数组就可以近乎于无穷的记录记忆,只是像人类一样,越久的记忆会丢失细节或者遗忘。
可能还需要一个一维数组存储重要时刻,像结婚,大学毕业等场景可能一生都记忆犹新。在 AI 总结多条记忆时,判断其中是否有重要时刻单独提出来,和已存在的重要时刻数组成员比较大小后塞入并排序,并 pop 出最不重要的重要时刻。
1
wysnxzm 1 天前
你是否听说过 古戈尔齿轮
|
![]() |
2
cxsz 13 小时 32 分钟前
这不就是 GPT 的记忆功能么 https://help.openai.com/en/articles/8590148-memory-faq
|
![]() |
3
chairuosen OP @cxsz 文章里没提到实现方式。它也是这么实现的么?
|
![]() |
4
dongdong12345 11 小时 5 分钟前
可以从用户发送的内容中提取出记忆存储到向量库,需要用到记忆时去向量库相似度查询就行了
|
![]() |
5
chairuosen OP @dongdong12345 向量库的问题是要先知道要查询什么,寻找特定记忆片段这个过程可以用向量库来替代,但是不知道查询什么内容的时候,向量库就没用了。比如你问 A ,向量库能搜到 A 的知识补充到上下文,但是有记忆的 AI 可能会关心下你昨天的 B 进行到什么情况了。B 跟 A 毫无关系。用向量匹配不了。
|
6
teenthsch 5 小时 54 分钟前
这个 m 怎么定义的
|
![]() |
7
chairuosen OP @teenthsch 调呗。。多试试,看 l 和 m 还有 n 之间怎么配效果好
|
![]() |
8
chairuosen OP @chairuosen M 的定义就是每次 L 满了后,拿多少出来从数组[0]放到数组[1],不能全拿了,也不能只拿一部分,我感觉在 L/2 到两三个之间。 太小了压缩比不高,太大了数组[0]的短期记忆就容易出现波动太大的情况。
|
![]() |
9
chairuosen OP @chairuosen 笔误:也不能只拿太小的一部分
|
![]() |
10
yutou527 3 小时 58 分钟前
"记满 L 后就把其中的后一部分 M 个拿出来让 AI 自己总结成一条记忆 push 到下一个记忆数组里"
这总结过程是有损的吧,能无损还原? |
![]() |
11
chairuosen OP @yutou527 肯定是有损的,人类也是有损的,记个大概就行
|