一,模型的上下文相关概念理解
1.模型上下文
模型上下文(Model Context 或 Context Length) 是指语言模型在一次推理过程中,能够同时看到并处理的最大文本长度 (以 token 为单位),就是与当前任务目标直接相关的输入数据的局部或全局关联信息
这个“上下文”包含两个部分:
部分 | 含义 |
---|---|
✅输入内容(Prompt) | 用户输入的提示、问题、指令等 |
✅输出内容(Generation) | 模型生成的回答或续写内容 |
也就是说,模型在生成每一个字的时候,都要基于它在整个上下文中已经看到的内容进行判断。
2.上下文窗口
这是模型在预测每个输出时实际使用的文本片段的范围。
在transformer模型中,context window是通过注意力机制来定义的,它决定了模型在生成每个新token时可以参照的前面tokens的数量。
context window的大小对模型的性能有显著影响,尤其是在长文本处理和内容生成方面。它决定了在生成过程中,模型可以参考的上下文信息的量。这有助于模型生成连贯且相关的文本,而不会因为参考过多的上下文而导致混乱或不相关的输出。
换句话说,大模型在生成输出时,就像从一个大型的图书馆(数据库)中寻找和调取相关信息。这些信息可以帮助模型生成准确和连贯的回答。
Context Window就像是模型能够一次性从书架上取下的书籍数量。Context Window越大,模型可以参考的信息量就越多,生成的答案也可能更详细和丰富。
3.上下文长度
这是模型的一个硬性限制参数 ,表示它在单次预测中能处理的 最大 token 数量 ,它包括了用户输入的所有token以及模型生成的所有token。由位置编码的设计(如 RoPE、ALiBi)决定 。(所以说提示词不是越长越详细越好,最好是要言简意赅)
例如:
-
如果一个模型的上下文长度是 2048 tokens
那么它最多只能处理:
- 输入 + 输出总和不超过 2048 的 token
⚠️ 超出怎么办?
如果输入内容太长(比如一整篇论文),超出了模型的上下文限制,就可能被截断或无法完整理解。
🔤 什么是 Token?
Token 是模型处理文本时的最小单位。它可以是一个词、一个标点、一个子词,甚至一个字符,具体取决于模型使用的分词器(Tokenizer) 。
举个例子:
文本 | Token 数量(LLaMA 分词器为例) |
---|---|
“Hello, world!” | 3 tokens:[“Hello”, “,”, " world!"] |
“人工智能的发展令人惊叹” | 6 tokens:[“人工”, “智能”, “的”, “发展”, “令”, “人”, “惊叹”](假设每个双字为一个 token) |
📌 常见模型支持的上下文长度举例:
模型名称 | 默认上下文长度 | 是否可扩展 |
---|---|---|
GPT-3.5 | 4096 tokens | ❌ 不可扩展 |
GPT-4 | 8192 tokens(也有 32768 版本) | ❌ 不可扩展 |
LLaMA / LLaMA2 | 2048 tokens | ✅ 可通过插值等技术扩展 |
ChatGLM(初代) | 1024 tokens | ✅ 扩展后可达数千 |
InternLM | 2048~32768 tokens(不同版本) | ✅ 支持扩展 |
Mistral | 32768 tokens | ✅ 原生支持大上下文 |
Qwen | 32768 tokens | ✅ 原生支持 |
🧱 上下文长度的作用是什么?
这决定了模型在以下任务中的表现能力:
任务 | 上下文长度影响 |
---|---|
💬 回答问题 | 需要看到完整的背景信息才能准确回答 |
📄 总结文档 | 需要读取整篇内容后提炼关键信息 |
🧾 编程辅助 | 理解整个函数/类结构后再生成代码 |
🧠 多轮对话记忆 | 维持历史记录以便上下文连贯 |
🎥 视频/音频转写分析 | 处理长文本内容进行推理或分类 |