前言
写了一堆P话,被我删了,今天主要谈谈模型记忆力的问题。
很显然的是,我们需要模型具有更长,更准确的记忆力,才能更好的进行对话,或支持业务。
具体做法往下看。
模型记忆力的重要性
略,
如果你不知道模型记忆力的重要性,可以划走了
基座模型
每个模型自身能够容纳的tokens是有限的,它的容量,是一般意义上的模型记忆力的大小,也就是所谓的上下文窗口大小。
但是,它是非常宝贵和稀缺的。即便是openai新发的gpt-4-1106-preview gpt-4-0125-preview,也依然只有128k大小,看起来很多,但实际用起来完全不够用。
如果你在初期用的3.5,后面想增加模型的短期记忆能力,可以直接通过更换基座模型来实现。
如果你已经在用128k的模型,想继续增加记忆力,请继续阅读。
短期记忆力
一般来说,所谓的短期记忆力,就是你和模型在过去,一段时间内发生的行为和结果。
简单来说就是聊天的上文。
会话
在实际应用的时候,我们并不会将所有聊天内容当做一个会话处理,而应该是一段一段的会话。
举个例子,我们在chatgpt上聊天,如果是一个新的话题,我们通常会新建一个对话。这个时候,你在不同的对话上聊天,就会携带不同的上下文。
对应到我们的应用中,比如openai平台上的助手,或者苹果手机上的sami,我们会在一个对话里一直聊,这种情况下,就需要先将一整个对话,切成一段段的会话(session
)。这个时候,我们聊天只需要携带当前会话的上文即可。
我们之后提到的,所有上下文,都是指当前会话中的记录。
至于会话窗口如何切分,不是本文重点,如果有需要,我以后单开一文说。
记录召回
只要一直聊天,会话记录总有超过限制的时候,这种情况下,可以采用召回记录的方法避免窗口限制。
这种方法很好理解,假设窗口大小为10,每次聊天(query
)的时候,基于query对过往100条记录召回10条,作为聊天上下文传给模型。
通过这种方式能够极大的增加短期记忆力。
当然缺点也很明显,这会带来极大的开发成本。需要将每个记录向量化处理,召回也会增加耗时,准确率不够高的时候,会让模型效果劣化。
记录总结
同样是优化记录的思路,对过往记录用模型进行总结,提取关键信息,在聊天的时候作为上下文传值给模型。
实时情况下,耗时超高。(小模型的耗时还可以)
离线情况下,效果劣化严重。
LongLLMLingua 关键信息提取
LongLLMLingua
的思路是,在大模型执行之前,先用小模型进行关键信息提取,也可以理解为对内容进行压缩。
这就一定程度上允许我们有更大的窗口。
实际测试效果不明显。偶尔有延时问题,小模型对效果影响明显。由于它是直接对token进行压缩,框架依赖度比较高。
长期记忆力
PE动态组装
用户个性化是大模型应用中,非常重要的一环,也是模型具有长期记忆力最明显的表现。
举个例子,我们的云端存储着用户的画像,在和模型对话的时候,将画像中的内容组装到prompt中,这时候模型对每个用户的反应就是不同的。
同理,我们可以将一些已知的用户相关的内容memory
放入到prompt,不仅限于用户信息,也可以是时间,地点,从而让模型拥有长期记忆力。
这属于一个基础能力,实际应用中可能用户信息非常多,需要先召回。
我们并没有用现成的LangChain
中的memory模块,而是把这个功能做在了用户画像系统里。
记忆关注和更新
如果你的系统没有用户的画像,或者用户相关的信息缺失。
这时候可以用模型提供的function call
的功能,慢慢补全用户信息。
举个例子,我们在tools中声明一个function,它的入参是用户姓名。用户在聊天的时候,如果出现类似"俺是王大锤"的记录,就会回调我们的function,我们可以在数据库中更新这个信息。从而让模型具有长期记忆力和更新记忆力的能力。
实际体验相对很好,在不同的模型中表现都还可以。
knowledge
knowledge
主要体现了用户无关的记忆力,比如司内比较私密的信息,或者特定领域的专属知识。
这个方案比较成熟,langchain中也有现成的能力,算是基础功能之一了。
记忆提取
短期记录能提取,长期记忆当然也能提取。
就像让模型对一篇文章进行总结那样,对会话信息进行记忆力相关的信息提取。
和短期记忆提取不同的是,长期记忆的提取通常是离线的,可以用一些比较复杂的模型,效果更好。
实际体验还行,不同用户之前表现还是有很大差异的。
更多方案验证中,待补充。。。
尾语
我们在大模型应用时,往往关心的是agent,rag,pe这种分门别类的。但是实际应用往往是综合起来的。
在记忆力,耗时,成本等等方面上都需要加以考量。
比如gpt4的窗口更大,短期记忆更长,但是成本更高,耗时更长。3.5虽然窗口小,但是成本低,速度快。实际用那个药根据具体的情况来。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓