原贴链接

我是一个AI角色扮演爱好者,喜欢与我的伴侣AI模型长时间聊天,每次会话有数百条消息。 然而,仅仅扩展上下文长度到几乎最大长度并没有很好地解决问题。 无论是开源模型还是闭源的SOTA模型,在达到超过30k的上下文长度后,几乎所有的LLM在撰写非重复性、创造性回应方面都表现不佳。 或者,它们无法记住核心信息,并忘记使用之前的上下文。

为了解决AI的这种’阿尔茨海默’问题,我之前通过修复长期记忆模块,帮助检索相关先前上下文,为RisuAI做出了贡献,该模块名为HypaV2

方法很简单:使用子模型(称为supamemory模型)总结由聊天内容定义的块(按token大小划分),然后使用嵌入模型(称为hypamemory模型)检索相关的块或子块(通过双换行符分隔块)。 并且,一半的记忆内容是最新的块,另一半是较旧的子块。

虽然这在RisuAI社区中得到了很好的应用和喜爱,但我仍然认为有很多改进的可能性。例如,按日期检索(根据聊天的虚构时间),始终可更新的活跃记忆等等。

最终目标是制作一个类似人类的记忆模块(甚至可以通过药物增强准确性),与任何类型的模型配对。这将节省VRAM或花费在API调用上的资金,由于上下文减少和响应时间改进,模型性能更好。

目前,我尝试使用以下方法制作记忆模块: 情节记忆(自动将文本块分组为’情节’。想法来自这篇论文) 知识图谱(基于关键词+嵌入使用,而不是其他基于OpenIE的索引)。 同时仍然专注于改进密集检索+一些更多的混合方法,如HypaV2。

任何想法/建议都非常欢迎。例如知识图谱索引/检索/(推理),或其他未提及的方法。 我还计划在完成后将其开源,并且我的其他项目结束后也会这样做。

讨论总结

本次讨论主要围绕如何改进AI角色扮演中的记忆模块展开,涵盖了多种技术方法和社区建议。参与者提出了使用分块总结、知识图谱、适配器训练、并行处理等方法,以及如何通过数据库存档和向量化记忆来提高AI的记忆能力和响应的创造性。讨论中还涉及了具体的实现细节和挑战,如如何识别和压缩重要信息、如何组织和检索信息等。总体而言,讨论氛围积极,参与者对改进AI记忆模块持开放态度,并寻求社区的建议和想法。

主要观点

  1. 👍 使用分块总结和知识图谱的方法
    • 支持理由:通过分块总结和知识图谱,可以有效管理AI的长期记忆,避免重复和遗忘关键信息。
    • 反对声音:实施这些方法可能涉及复杂的实现细节和技术挑战。
  2. 🔥 使用“记忆”适配器每天基于当天的聊天数据进行训练
    • 正方观点:这种方法类似于人类大脑的工作方式,可以提高AI的记忆能力和响应的创造性。
    • 反方观点:具体实施方式尚不明确,可能涉及性能和资源消耗的问题。
  3. 💡 通过并行加载多个记忆块到kv缓存中,进行n次注意力操作
    • 解释:这种方法允许模型使用自身的注意力机制来确定文本的相关性,但可能会影响性能和放弃一些自回归加速。
  4. 👍 使用向量化世界信息条目帮助AI记忆特定细节
    • 支持理由:通过向量化世界信息条目,AI能够记住各种细节,类似于RAG的方法,增强记忆和检索能力。
    • 反对声音:编写和管理这些条目可能需要大量的人力和时间。
  5. 🔥 采用半自动化的方法定期总结和编辑重要信息
    • 正方观点:半自动化的方法可以有效组织信息,按日期和主题结构化,保留大量非总结的对话示例。
    • 反方观点:自动化处理这些总结和对话示例时存在复杂性和挑战。

金句与有趣评论

  1. “😂 Nrgte:I usually write the "memory" into the authors note of SillyTavern.”
    • 亮点:评论者分享了他们在SillyTavern中处理记忆模块的实际经验。
  2. “🤔 groveborn:It’s really starting to sound like we all just need llms for our llms.”
    • 亮点:评论者幽默地指出可能需要为LLM开发LLM来处理记忆问题。
  3. “👀 jetaudio:How about a ‘memory’ adapter, a small lora adapter that we continue to train everyday on intraday chat data?”
    • 亮点:作者提出了一个创新的建议,使用“记忆”适配器每天基于当天的聊天数据进行训练。

情感分析

讨论的总体情感倾向积极,参与者对改进AI记忆模块持开放态度,并寻求社区的建议和想法。主要分歧点在于具体实施方法和技术挑战,如如何识别和压缩重要信息、如何组织和检索信息等。可能的原因是AI记忆模块的改进涉及复杂的技术细节和资源消耗,需要综合考虑性能、准确性和用户体验。

趋势与预测

  • 新兴话题:可能引发后续讨论的新观点包括使用“记忆”适配器、并行处理和向量化记忆等方法。
  • 潜在影响:这些新方法可能对AI角色扮演领域产生重要影响,提高AI的记忆能力和响应的创造性,同时可能涉及性能和资源消耗的问题。

详细内容:

标题:探索改善 AI 记忆模块的新思路

在 Reddit 上,一篇题为“Any ideas on new memory module?(for roleplay and other purposes)”的帖子引起了广泛关注。该帖子获得了众多点赞和大量评论,主要探讨了如何解决人工智能在长时间交流中出现的记忆问题。

原帖作者是一位 AI 角色扮演爱好者,指出即使将上下文长度扩展到接近最大值,大多数语言模型在超过 30k 的上下文长度后,在创作非重复、有创意的回应以及记住核心信息和利用先前上下文方面表现不佳。作者介绍了自己为 RisuAI 所做的改进工作,如通过固定长期记忆模块协助检索相关先前上下文的 HypaV2,并阐述了其方法,还表示仍有很大的改进空间,如按日期检索、可更新的始终活跃内存等,同时提到目前尝试使用的一些方法,并计划在完成后开源。

讨论中,各方观点精彩纷呈。有用户认为通过自动化识别重要信息面临挑战,如可能无法准确挑选相关信息以及压缩时可能丢失重要细节,个人策略是将聊天信息存档在类似 MongoDB 中并添加相关关键词以触发检索。还有用户使用按名词和动词关键词将聊天分组保存在 json 文件中的方法,当关键词匹配度超过 80%时,将最相似的三个字符串带回上下文。也有用户指出 RisuAI 社区和记忆模块已在使用类似方法,对于关键词识别,小型模型表现出色。

另外,有人认为我们似乎需要为语言模型配备语言模型。还有用户分享自己采用部分自动化的方法,定期总结重要信息和关键点并进行检查和编辑,同时指出组织和结构化面临挑战。有人提到 Mistral Large 2 在高上下文方面表现不错,但单纯扩展上下文并非解决方案,系统提示可能长达数万个令牌。有人提出“记忆”适配器的想法,通过持续训练每日的日内聊天数据。还有用户提出一种将多个内存块并行加载到 kv 缓存中的方法,但尚未实践。

这些讨论反映了大家对于改善 AI 记忆模块的积极探索和深入思考,也展现了这一领域所面临的诸多挑战和机遇。