大模型超长窗口上下文与检索增强生成——RAG 原创
“ 怎么解决大模型的记忆问题,以及保证结果的准确性,目前还是大模型应用中一个亟待解决的问题 ”
看过作者文章的人对RAG技术应该有了初步的了解,但不知道是否了解大模型的窗口大小;即使没有研究过大模型的窗口,但也应该听过每次大模型输入的内容是有限的;而这个有限就是因为大模型窗口的限制。
那么,大模型窗口与检索增强的关系是什么样的?怎么解决长对话问题,随着大模型窗口的增加,RAG会死吗?
大模型窗口与RAG
RAG——检索增强这个技术就不在过多介绍了,如果对此不了解的可以看一下作者之前的文章,比如前几天的RAG与本地知识库,向量数据库,以及知识图谱的联系与区别。
那么今天主要来介绍一下大模型窗口,以及其与RAG技术的区别。
什么是大模型的窗口?
对技术有了解的人应该都知道,大模型是根据Token进行计费的,所谓的Token就是不同模态的数据,转化为向量之后的一种计算方式;而大模型的窗口全称是大模型上下文窗口,简单来说就是大模型一次能够接受的Token的大小。
大模型的窗口为什么如此重要?
原因就在于,大模型的窗口代表着大模型能够处理数据的大小,窗口越大代表着能够输入到大模型的内容越多,大模型能够捕捉的上下文就越多,内容就越全面,当然效果相对就越好。
举个栗子来说,假如你想让大模型回答一些关于四大名著的问题,那么你直接把四大名著直接都输入到大模型,这样肯定就能得到更准确,更好的回答;而如果你只是告诉大模型孙悟空三打白骨精的那一段,那么其它的问题大模型就无法回答了。
这就是大模型上下文窗口的作用,能够增加大模型上下文理解的能力,原因就在于大模型没有记忆能力。
但大模型的窗口真的是越大越好吗?大模型的窗口是否能无限大?
大模型的窗口并不是越大越好,当然更不可能无限大;原因在于,上下文窗口越长,对大模型理解能力要求越高;就类似于,让一个小学生去看上下五千年,虽然小学生可能真的能看懂,但他对很多东西都理解得不深刻。
这样就会导致一个问题,那就是大模型对长文本理解的不准确,因此控制窗口大小,让大模型找到自己理解的极限才是最好的。
因此,这也是为什么今年以来大模型的窗口一直在不断的增长,因为越长的文本处理能力,代表着模型能力越强;但从目前来看,长上下文窗口依然存在很多问题,比如理解不全面,对算力消耗更高,响应时间过长等等。
为什么说大模型上下文窗口可能会直接导致RAG的死亡?
原因就在于,如果大模型的窗口真的可以无限大,而且大模型又能够真正理解全部上下文,那么RAG就没有了存在的意义;因为,直接把全世界所有的数据和资料全部塞进大模型里,这样大模型就真的无所不知了。
但既然大模型无法做到这一步,因此RAG就肯定有其存在的空间。
其实,归根结底不论是上下午窗口,还是RAG,亦或者是长对话等等;所有的一切都是因为大模型不具备记忆能力,而想出的补偿方法。所以,不论是上下文还是RAG,本身都是为了解决大模型的记忆问题,包括长期记忆和短期记忆。
那么,思考一个问题,长对话问题怎么解决?
其实长对话问题一般有两个解决方案,就是上面的两个上下文窗口和RAG;区别就是,上下文窗口是直接把所有历史对话全部带入到上下文中,让大模型自己去理解。而RAG是把对话信息保存到外部数据库中,然后每次对话都先检索到与对话最相关的内容,然后拼接到大模型的提示词中。
当然,还有其它的方案,但暂不在此次讨论的范围之中。
当然,长对话并不只是简单的解决记忆问题,还一个重要因素就是准确性;在一些特殊的业务场景下,比如医疗,任何轻微的差别都可能导致致命的错误;因此,大模型在医疗领域的应用,怎么才能保证百分之百的准确性,这是一个值得思考的问题。
现在大家对长文本和RAG都有了一定的了解,那么你认为上下文和RAG,哪个才是大模型的最终选择?
本文转载自公众号AI探索时代 作者:DFires