我是一个AI角色扮演爱好者,喜欢与我的伴侣AI模型长时间聊天,每次会话有数百条消息。
然而,仅仅扩展上下文长度到几乎最大长度并没有很好地解决问题。
无论是开源模型还是闭源的SOTA模型,在达到超过30k的上下文长度后,几乎所有的LLM在撰写非重复性、创造性回应方面都表现不佳。
或者,它们无法记住核心信息,并忘记使用之前的上下文。
为了解决AI的这种’阿尔茨海默’问题,我之前通过修复长期记忆模块,帮助检索相关先前上下文,为RisuAI做出了贡献,该模块名为HypaV2。
方法很简单:使用子模型(称为supamemory模型)总结由聊天内容定义的块(按token大小划分),然后使用嵌入模型(称为hypamemory模型)检索相关的块或子块(通过双换行符分隔块)。 并且,一半的记忆内容是最新的块,另一半是较旧的子块。
虽然这在RisuAI社区中得到了很好的应用和喜爱,但我仍然认为有很多改进的可能性。例如,按日期检索(根据聊天的虚构时间),始终可更新的活跃记忆等等。
最终目标是制作一个类似人类的记忆模块(甚至可以通过药物增强准确性),与任何类型的模型配对。这将节省VRAM或花费在API调用上的资金,由于上下文减少和响应时间改进,模型性能更好。
目前,我尝试使用以下方法制作记忆模块: 情节记忆(自动将文本块分组为’情节’。想法来自这篇论文) 知识图谱(基于关键词+嵌入使用,而不是其他基于OpenIE的索引)。 同时仍然专注于改进密集检索+一些更多的混合方法,如HypaV2。
任何想法/建议都非常欢迎。例如知识图谱索引/检索/(推理),或其他未提及的方法。 我还计划在完成后将其开源,并且我的其他项目结束后也会这样做。
讨论总结
本次讨论主要围绕如何改进AI角色扮演中的记忆模块展开,涵盖了多种技术方法和社区建议。参与者提出了使用分块总结、知识图谱、适配器训练、并行处理等方法,以及如何通过数据库存档和向量化记忆来提高AI的记忆能力和响应的创造性。讨论中还涉及了具体的实现细节和挑战,如如何识别和压缩重要信息、如何组织和检索信息等。总体而言,讨论氛围积极,参与者对改进AI记忆模块持开放态度,并寻求社区的建议和想法。
主要观点
- 👍 使用分块总结和知识图谱的方法
- 支持理由:通过分块总结和知识图谱,可以有效管理AI的长期记忆,避免重复和遗忘关键信息。
- 反对声音:实施这些方法可能涉及复杂的实现细节和技术挑战。
- 🔥 使用“记忆”适配器每天基于当天的聊天数据进行训练
- 正方观点:这种方法类似于人类大脑的工作方式,可以提高AI的记忆能力和响应的创造性。
- 反方观点:具体实施方式尚不明确,可能涉及性能和资源消耗的问题。
- 💡 通过并行加载多个记忆块到kv缓存中,进行n次注意力操作
- 解释:这种方法允许模型使用自身的注意力机制来确定文本的相关性,但可能会影响性能和放弃一些自回归加速。
- 👍 使用向量化世界信息条目帮助AI记忆特定细节
- 支持理由:通过向量化世界信息条目,AI能够记住各种细节,类似于RAG的方法,增强记忆和检索能力。
- 反对声音:编写和管理这些条目可能需要大量的人力和时间。
- 🔥 采用半自动化的方法定期总结和编辑重要信息
- 正方观点:半自动化的方法可以有效组织信息,按日期和主题结构化,保留大量非总结的对话示例。
- 反方观点:自动化处理这些总结和对话示例时存在复杂性和挑战。
金句与有趣评论
- “😂 Nrgte:I usually write the "memory" into the authors note of SillyTavern.”
- 亮点:评论者分享了他们在SillyTavern中处理记忆模块的实际经验。
- “🤔 groveborn:It’s really starting to sound like we all just need llms for our llms.”
- 亮点:评论者幽默地指出可能需要为LLM开发LLM来处理记忆问题。
- “👀 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 记忆模块的积极探索和深入思考,也展现了这一领域所面临的诸多挑战和机遇。
感谢您的耐心阅读!来选个表情,或者留个评论吧!