关于LLM及RAG中上下文窗口工作机制的技术问询
LLM上下文窗口机制及在RAG中的作用解释
一、LLM上下文窗口的核心工作机制
简单来说,上下文窗口就是大语言模型(LLM)能同时处理的最大token序列长度——这个长度包含用户输入的所有内容(比如问题、系统提示、附加的文档片段)加上模型自己生成的回复内容。
LLM基于Transformer架构运行,核心的自注意力机制需要计算序列中每个token和其他所有token的关联关系,以此理解上下文逻辑。模型在训练阶段就被限定了固定的最大序列长度(也就是上下文窗口大小),超出这个长度的token会被直接截断,或者模型无法对其建立有效注意力关联——说白了就是“看不到”这些内容,更没法基于它们生成有逻辑的输出。
不同模型的窗口大小不同:比如GPT-3是2048 token,GPT-4基础版是8192 token,还有32768 token的扩展版。
二、GPT-3的2048-token窗口不是“前后各2048”
你提到的“前后各2048 tokens”是误解。GPT-3的2048是总token上限:比如你输入了1500 token的prompt(包括问题和用来召回的文档片段),那模型最多只能生成548 token的回复,总长度一旦触及2048,模型就会停止生成或者截断超出的内容。
三、上下文窗口在RAG中的作用逻辑
RAG(检索增强生成)的核心是把外部文档拆成片段,筛选出和问题相关的部分塞进prompt,再让LLM基于这些片段生成回答。这时候上下文窗口的限制直接决定了:
- 你能塞进prompt的文档片段数量和长度有限,必须精准筛选最相关的片段,不然总token超了就得截断;
- LLM只能对窗口范围内的文档片段进行信息召回——窗口外的内容不管是未被选中的文档片段,还是更早的对话历史,模型都无法访问,自然没法基于这些内容生成对应的回答。
举个例子:如果你的文档拆完后有个关键片段刚好因为长度原因没被塞进窗口,那就算这个片段和问题高度相关,模型也完全不知道它的存在,更别提召回里面的信息了。
内容的提问来源于stack exchange,提问作者Naoki Yokoyama
相关产品推荐
相关产品推荐

