为什么大模型需要上下文窗口?
为什么大模型需要上下文窗口?
月伴飞鱼大家好呀,我是飞鱼
这篇文章想讲讲:为什么大模型需要上下文窗口?
其实大模型工作分成两个阶段。
第一个阶段是训练:
❝
大量的文本不断的去输送给模型,模型从中去学习知识和解决问题的方式,然后进入模型参数。
第二阶段是推理:
❝
模型需要处理你当前提供的信息,比如系统提示、聊天记录、上传的文档以及这一次的问题。
这些内容加在一起不能超过模型单次可以处理的范围(少于上下文的窗口)。
总结就是训练的数据量是模型它累计学过的数据,上下文窗口限制的是模型一次能够处理多少数据。
那模型之前那么大的训练数据是怎么去处理完的呢?
❝
训练数据会先走到清洗,清洗完之后再被切成 Token。
切成 Token 以后再整理成一段一段的有限长度的文本,这些文本会组成一个一个小的批次。
最后再送给模型去训练。
模型处理完这一批以后会去更新参数,然后再进入下一批的训练数据。
其实训练数据特别大的时候,一般不能把它一次塞进模型的。
❝
不能把它一次的全部的塞进内存,因为内存是有限的,而且现在内存的价格非常高。
所以需要惰性加载。
我们正常使用 AI 的时候:
❝
像系统规则、之前的对话、上传资料和当前问题,都要转换成Token,放进这一次的上下文窗口。
而且模型接下来生成的内容通常也会占用这样的空间。
那当总量接近或者超过限制的时候,产品可能会采取不同的处理方式。
❝
有的会直接提示说输入过长,有的会删掉较早的对话,有的会先做摘要。
还有的会从文档中检索出相关片段,只把这片段交给模型。
所以当 AI 漏掉前面的某个内容时,不一定是它从来没学过,更可能情况就是这段信息可能被移出了当前上下文。
❝
上下文越长的时候,不等于模型一定能同样准确抓住其中每一个细节。
当我们去处理长文档时,可以有以下几种方式。
比如是单纯的总结?
❝
可以按章节分块处理,再逐层的合并的摘要。
如果是针对于文章的提问?
❝
可以先建立目录、关键词和索引,提问时只去找到相关的片段。
如果对话已经很长?
❝
可以把确认过的目标、结论、约束再整理成一个摘要,简短记录,再带着它开始新的对话。
所以像我们很熟悉的 RAG 文档检索,本质上也在解决同一个问题。
❝
最后:文章会收录到我的个人网站:http://hardyfish.top/










