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