我们需要记忆来存储之前的对话历史.
例如: 上个问题为: 用户: Python 助理中的文件处理:解释文件处理.
下次,用户问:用户:其中模式是什么?
LLM应该理解背景,然后作出反应.
以下为可存储在内存中的细节.
我们在系统中指定的过去对话用户首选项提示,例如JSON格式的过去决定前任务,基于我们存储的细节,我们将在长期或短期内存中选择.
短期内存Redis,Valkey,Memcached,和Cosmos都是被缓存的数据库,可用于短期内存来存储最后几段对话或摘要.
我们可以设定一般数据无效化规则来去除内容或使用LRU缓存驱逐政策,其中最近使用的数据将从数据库去除.
长期记忆 Postgres, Pinecone,和MongoDB 可用于长期记忆存储长对话历史.
整个对话历史摘要将储存在短期记忆中,以便在需要时减少延迟。
Episodic Memory Episodic内存是一类存储过去所发生特定事件或经历的内存,通常与发生时,发生时,以及周围背景的信息一起.
我们可以根据使用情况使用短期或长期内存数据库.
这是一种短期和长期记忆的结合。
用户:我计划去巴黎旅行。
你会住几天?
用户:5天.
稍后,用户:你能提出行程吗?
第1集"用户想去巴黎".
旅行时间:5天。
前述用户:目的地=巴黎 持续时间=5天 这一信息可用于提供更相关的答复。
这有助于LLM了解之前发生的事情.
语义记忆语义记忆包含从之前的对话史上取出的事实.
语义记忆一般被认为是长期记忆.
例子巴黎是法国的首都.
卢浮宫是巴黎的一座博物馆.
法国使用欧元.
即是通识.
滑动窗口内存 这是一个短期记忆。
在这里,我们储存了最后3到4个对话。
Redis或Valkey与任何缓存内存一样,都可以被使用.
每次总结内存,包括用户查询和回复在内的对话都会被总结.
尽管在汇总期间象征性消费较多,但总体象征性消费将减少。
这是一个长期的记忆。
实体事实记忆 这种记忆被用来存储特定实体的事实.
实体事实记忆和语义记忆的区别在于:语义记忆是更广泛的类别.
实体事实记忆是组织和存储特定实体的语义知识的一种方式.
它可以用作长期或短期记忆.
语义记忆实体:Python Python-是编程语言 Python-用于AI Python-支持面向对象的编程 Python-由Guido van Rossum实体事实记忆实体:Alice Alice-在ABC公司Alice-更喜欢Python Alice-在"项目X"中工作,这不是保存整个对话的好做法.
我们可以根据谈话做出决定,然后储存相关信息。
这是一个很好的做法.