RAG - 内存系统

2026年8月13日1 次浏览来源:Dev.to阅读原文

我们需要记忆来存储之前的对话历史.

例如: 上个问题为: 用户: 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"中工作,这不是保存整个对话的好做法.

我们可以根据谈话做出决定,然后储存相关信息。

这是一个很好的做法.

分享