关键要点
- 截至2026年4月,大多数Llama 3.x、Qwen2.5和Mistral Small模型支持128K标记上下文窗口。
- 128K标记 ≈ 96,000个词 ≈ 300页书。处理这些内容需要比标准4K上下文推理多2-4倍的RAM。
- 实际质量上限:大多数7B-8B模型在16K-32K标记内保持可靠质量。超过32K,上下文开头的信息可能"丢失"或被忽略。
- 长上下文所需RAM随上下文长度扩展:Q4_K_M量化的7B模型在128K上下文时需要约12-16 GB RAM,而4K上下文只需约6 GB。
- 对于真正的长文档(100K+标记),云模型(Gemini 3.1 Pro支持1M标记)仍比本地推理实用得多。
- Ollama默认只使用2048标记的上下文----而非128K。务必在Modelfile中显式设置num_ctx,或在运行时使用--ctx以访问长上下文。
什么是上下文长度,为什么它对本地LLM很重要?
上下文长度是模型在单次推理调用中可处理的最大标记数----输入(你的文档、对话历史、系统提示)和输出(模型响应)的合计大小。 1个标记 ≈ 0.75个英文词;128K标记 ≈ 96,000个词。
对于本地LLM使用场景,长上下文支持:总结整本书或长报告、在单个提示中分析完整代码库、处理数小时的会议记录,以及维护长对话历史而不丢失早期内容。
关键区别在于标注的上下文长度(模型架构支持的)和实际上下文长度(质量保持可靠的范围)。模型技术上可能支持128K标记,但在100K标记处呈现的信息质量可能会下降。
2026年哪些本地LLM支持128K标记上下文?
| 模型 | 上下文窗口 | 实际上限 | Ollama命令 |
|---|---|---|---|
| Llama 3.1 8B | 128K | 约32K可靠 | ollama run llama3.2 |
| Llama 3.2 3B | 128K | 约16K可靠 | ollama run llama3.2:3b |
| Llama 3.3 70B | 128K | 约64K可靠 | ollama run llama3.3:70b |
| Qwen2.5 7B | 128K | 约32K可靠 | ollama run qwen2.5:7b |
| Qwen2.5 72B | 128K | 约64K可靠 | ollama run qwen2.5:72b |
| Mistral Small 3.1 24B | 128K | 约32K可靠 | ollama run mistral-small3.1 |
| Gemma 2 2B | 8K | 约6K可靠 | ollama run gemma2:2b |
| Mistral 7B v0.3 | 32K | 约16K可靠 | ollama run llama3.2 |
长上下文处理需要多少RAM?
RAM使用量随模型大小和上下文长度双重扩展。 KV缓存(键值缓存)存储所有已处理标记的注意力状态----这随上下文长度线性增长。
截至2026年4月,Q4_K_M量化的7B模型在4K上下文下使用约6 GB RAM。同一模型在32K上下文下使用约8-9 GB RAM;128K上下文:约12-16 GB RAM。
| 模型 | 4K上下文 | 32K上下文 | 128K上下文 |
|---|---|---|---|
| Llama 3.1 8B Q4_K_M | 约6 GB | 约9 GB | 约14 GB |
| Qwen2.5 14B Q4_K_M | 约9 GB | 约12 GB | 约18 GB |
| Mistral Small 3.1 24B Q4_K_M | 约14 GB | 约17 GB | 约24 GB |
| Llama 3.3 70B Q4_K_M | 约40 GB | 约45 GB | 约55 GB |
为什么实际上下文长度比标注最大值更短?
使用RoPE位置编码(Llama、Qwen、Mistral使用)训练的LLM在技术上可以处理到最大上下文长度的标记,但质量会以一种称为"中间迷失"效应的已知模式下降。
研究表明,语言模型最善于利用上下文窗口开头和结尾的信息。放置在很长上下文中间的信息检索可靠性较低。实际上,这意味着拥有128K上下文窗口的模型可能可靠地回答前32K标记和后16K标记内容的问题,但会错过40K-80K标记范围内的细节。
对于本地模型,实际可靠上限随模型大小扩展:3B模型约8K-16K可靠;7B-8B模型约16K-32K可靠;70B模型约64K可靠。这些是近似值----实际上限取决于具体任务和检索信息的"重要性"。
长上下文窗口可以输入更多内容,但提示词结构决定了模型是否能有效利用这些上下文。RAG、提示词链和上下文窗口管理策略等技术在Prompt工程指南中均有介绍。
如何在Ollama中设置上下文长度?
除非另行配置,Ollama默认使用2048标记的上下文。要使用模型的完整上下文窗口:
上下文窗口大小决定了模型可以处理多少文本,但提示词结构决定了它能多有效地利用这些上下文。深入了解模型为何会遗忘早期输入以及应对策略,请参阅上下文窗口详解:AI为何会忘记。
# 在运行时设置上下文长度
ollama run llama3.2 --ctx 32768
# 或使用Modelfile创建自定义模型
cat << EOF > Modelfile
FROM llama3.1:8b
PARAMETER num_ctx 32768
EOF
ollama create llama3.1-32k -f Modelfile
ollama run llama3.1-32k长上下文本地LLM:地区背景
欧盟 / GDPR + AI法: 欧盟AI法(2025年2月生效)将大规模处理个人数据的AI系统归类为潜在高风险。用于法律文件分析、医疗记录总结或HR文档处理的长上下文本地推理属于这一风险层级。本地运行消除了GDPR第28条下的第三方数据处理器风险----数据不离开组织。
对于德国BSI合规,处理本地敏感文档AI系统的推荐配置是Q4_K_M量化的7B模型,32K上下文(在标准工作站上占用9-10 GB RAM)。这在50页文档上提供可靠质量,同时保持所有数据在本地。
日本(METI): 由于分词器差异,日文文档比等效英文文档需要1.5-2倍以上的标记。一份50页的日文报告可能消耗25K-35K标记----在Qwen2.5 7B可靠范围内(32K实际上限),但需要在Ollama中显式配置上下文:PARAMETER num_ctx 32768。
中国: 根据中国《数据安全法》,通过云API处理敏感文档需要额外的监管合规。通过Qwen2.5(阿里巴巴)进行本地长上下文推理可将所有文档内容保留在本地。Qwen2.5的原生中文分词器使其比Llama对中文文档的标记效率高30-40%。
长上下文本地LLM的常见错误
- 假设128K上下文与4K同样有效: "中间迷失"效应意味着30K-80K标记之前呈现的信息检索可靠性低于开头或结尾的信息。对于关键文档分析,将长文档分成16K-32K节段分别处理,而不是一次性输入整个100K文档。
- 未增加Ollama的默认上下文大小: 无论模型最大值如何,Ollama默认使用2048标记。超过2048标记的对话将截断早期消息。务必显式设置num_ctx:在Modelfile中添加PARAMETER num_ctx 32768,或在运行时使用--ctx。
- 在RAM不足时运行长上下文: 在总共8 GB RAM上运行带128K上下文的7B模型会导致严重的交换使用。模型权重(约4.5 GB)加上128K KV缓存(约8+ GB)超过8 GB。将上下文减少到32K(约9 GB适用)或使用16+ GB RAM进行128K上下文推理。
常见问题
我可以用本地LLM总结整本书吗?
典型的300页书籍有90,000-120,000个词----大约120K-160K个标记。这超过了大多数7B模型的实际可靠上下文,需要70B模型(64K可靠)或分块处理。对于7B模型,将书籍分成20K词的章节,分别总结每章,然后总结章节摘要。
32K标记能容纳多少页文本?
大约50-70页标准英文文本(每页250词)。32K标记上下文能容纳一部短篇小说、一篇附录齐全的完整研究论文或一份完整的技术规格文档。
增加上下文长度会减慢推理吗?
是的----在同一硬件上处理32K上下文比处理4K上下文耗时约3-4倍,由于注意力计算的二次缩放。生成速度(每秒标记数)不受显著影响,但首标记时间(TTFT)随输入长度缩放。
哪个本地LLM在RAG方面比长上下文表现更好?
对于文档搜索和检索任务,RAG(检索增强生成)通常比将整个文档作为上下文更有效。RAG从大型文档集中检索3-5个最相关的块,仅将这些提供给模型。这使用4K-8K标记的上下文,避免了"中间迷失"问题。GPT4All LocalDocs和LlamaIndex等工具实现本地RAG。
什么是KV缓存,为什么它随上下文长度增长?
KV缓存(键值缓存)存储上下文窗口中每个已处理标记的注意力状态。每个标记需要固定的内存用于其键和值向量----因此32K上下文需要比4K上下文多8倍的KV缓存内存。这就是为什么Q4_K_M量化的7B模型在4K上下文需要约6 GB,但在32K上下文需要约9 GB。模型权重保持不变----只有KV缓存增长。
本地模型能处理像Gemini 3.1 Pro一样的1M标记上下文吗?
不能----截至2026年4月,没有本地可运行的模型支持1M标记上下文。Gemini 3.1 Pro的1M标记窗口需要Google的TPU基础设施。本地支持的最大上下文由当前消费者硬件决定,为128K。对于需要1M+标记上下文的任务,云API仍是唯一实际选择。
什么是"中间迷失"问题,如何避免?
研究表明,LLM可靠地检索上下文窗口开头和结尾的信息,但会错过中间的细节。对于128K上下文,放置在40K-80K标记处的内容最可能被忽略。避免方法:将重要信息放在提示开头,使用RAG仅检索相关块,或以重叠的16K-32K节段处理长文档。
如何检查Ollama正在使用的上下文长度?
运行`ollama show <model>`----输出列出参数,包括num_ctx。如果显示2048,Ollama使用的是默认值,而非模型的完整上下文窗口。要持久更改,创建包含PARAMETER num_ctx 32768的Modelfile并运行ollama create <name> -f Modelfile。用ollama ps检查活动会话。
文档问答用长上下文还是RAG更好?
RAG通常比长上下文在文档问答中更有效且RAM效率更高。RAG从大型语料库中检索3-5个相关块(总计4K-8K标记),避免了"中间迷失"问题。当模型需要理解整个文档结构或节段间的精确顺序和关系时,长上下文更好。对于大多数实际文档问答,从RAG开始。
参考资源
- 中间迷失:语言模型如何使用长上下文 -- arxiv.org/abs/2307.03172
- Ollama上下文长度配置 -- github.com/ollama/ollama/blob/main/docs/modelfile.md
- Llama 3.1技术报告 -- ai.meta.com/research/publications/the-llama-3-herd-of-models/
- 欧盟AI法官方文本 -- artificialintelligenceact.eu