简单总结对话记忆机制 | 豆包MarsCode AI刷题

597 阅读4分钟

今日学习完了记忆:通过Memory记住客户上次的对话细节,我在本文中会对四种记忆方式进行总结

在与LLM的对话中,记忆机制是至关重要的。在用户使用过程中,每次与模型的对话都是全新的,模型不会记得之前的任何交流。尽管你可能昨天或前天与同一个模型有过对话,但模型在新的对话中并不会意识到这一点,因为它没有存储任何关于之前对话的记忆,LLM就忘记了,将无法满足用户的需求。

接下来我会总结四种常见的对话记忆机制并分析它们的优缺点,它们分别是:

缓冲记忆(ConversationBufferMemory)

缓冲窗口记忆(ConversationBufferWindowMemory)

对话总结记忆(ConversationSummaryMemory)

对话总结缓冲记忆(ConversationSummaryBufferMemory)。

1.缓冲记忆(ConversationBufferMemory)

原理: 这种记忆方式将整个对话历史存储下来并传递到模型中以获取上下文。在生成响应时,模型始终回顾整个对话历史记录,以便更好地理解和响应用户。

优点: 这种方法为对话提供了完整的上下文,允许模型利用整个先前的对话。因此,它适用于需要自由访问早期对话历史记录的场景。

缺点: 随着对话的进行,存储的对话历史会越来越多,除了模型上下文长度限制的限制因素外,还会导致Token消耗迅速增加。因此,在对话较长的情况下,这种方法并不高效。

2. 缓冲窗口记忆(ConversationBufferWindowMemory)

原理: 只保存最近几次的人类和AI的互动内容,类似于一个滑动窗口,只保留最近的几个互动。每次新的互动发生时,最早的一次互动会被移除,以保证记忆的窗口长度固定。

优点: 这种方法可以控制使用的 token 数量,并且可以减少 token 消耗和上下文提供,因此对于短期对话效果良好。

缺点: 由于只保留最近的互动,旧的对话内容将被遗忘。因此,它不适合需要经常参考早期对话信息的情况。例如,如果使用的过程由不同时间段的几次对话组成,则这种记忆方法就不合适。

3. 对话总结记忆(ConversationSummaryMemory)

原理: 通过一个辅助的语言模型对对话历史进行汇总,然后将汇总后的信息传递给主模型,而不是使用整个对话历史,这样模型的生成就可以以对话的总结信息为基础。

优点: 这种方法可以大大减少要使用的 token 数量,适用于需要长时间对话、需要存储大量对话信息的情况。而且它可以帮助模型保持对话的连续性,从而避免消耗大量 token。

缺点: 对话历史的记忆完全依赖于汇总模型的能力。如果总结模型在汇总过程中丢失了一些细节,可能会影响主模型的响应质量。此外,汇总本身也会消耗一些 token。

4. 对话总结缓冲记忆(ConversationSummaryBufferMemory)

原理: 结合了对话总结记忆和缓冲窗口记忆的特点,总结早期的互动,同时尽量保留最近互动的内容。这样,模型能够记住之前对话中讨论的内容,而不会遗漏新的重要信息。

优点: 这种方式非常灵活,能够回忆起较早的互动内容,同时保证最近的对话信息不被遗忘。因此,它适用于那些既需要引用较早对话信息,又需要保持最近对话上下文的场景。

缺点: 在较短的对话中,这种方式可能会增加 token 的使用量。这就需要设计者来抉择了。

总结

从以上四种对话记忆机制中,我们发现每种机制都有自己的优点和应用领域。在实际使用中,需要根据具体需求选择合适的记忆机制,让模型的性能和用户体验都达到最佳。