当前位置: 首页 > news >正文

【词汇专栏】Long Context:长上下文——AI的超长记忆

Long Context:长上下文——AI的超长记忆

一句话理解

Long Context(长上下文)是大模型处理超长文本的能力——从几千Token到上百万Token,让AI能"读完一本书再回答"。

传统模型:上下文窗口 = 4K / 8K / 32K tokens 长上下文模型:上下文窗口 = 128K / 1M / 10M tokens (可处理整本书、全部代码库、整年聊天记录)

为什么需要长上下文?

短上下文的局限性

场景问题结果
聊天记录分析可能有100K tokens,模型只支持8K只能看最近几天,断章取义
代码库问答可能有100万行,模型只能读前几百行问函数定义,模型一脸懵
法律合同分析可能有100页,模型只能读前20页遗漏关键条款,风险巨大

长上下文解决了什么

场景短上下文长上下文
文档问答只看摘要完整读完原文档
代码分析只看当前文件理解整个代码库
数据分析只看样本处理全量数据
对话记忆只记最近几轮记住整个对话历史
多文档比较逐一分析同时理解所有文档

技术原理

注意力机制的挑战

标准Transformer的注意力复杂度: Attention(Q, K, V) = softmax(QK^T / √d) × V 其中 QK^T 的计算复杂度:O(N²) N = 序列长度
序列长度计算次数体验
N = 1,0001,000,000 次可接受
N = 10,000100,000,000 次有点慢
N = 100,00010,000,000,000 次爆炸!
N = 1,000,0001,000,000,000,000 次不可能

解决方案:优化注意力机制

主流优化技术

1. 稀疏注意力(Sparse Attention)
核心思想:不是所有Token都需要attend to所有其他Token ┌────────────────────────────────────────────────────────┐ │ │ │ Full Attention(全连接): │ │ [A] ───[●]───[●]───[●]───[●] │ │ [●] ───[●]───[●]───[●]───[●] │ │ [●] ───[●]───[●]───[●]───[●] │ │ [●] ───[●]───[●]───[●]───[●] │ │ [●] ───[●]───[●]───[●]───[●] │ │ │ │ Sparse Attention(稀疏): │ │ [A] ───[●]──────────[●] │ │ [●] ───[●]──────────[●] │ │ [●] ─────────────[●]──[●] │ │ [●] ─────────────[●]──[●] │ │ [●] ───[●]──────────[●] │ │ │ │ A=锚点 ●=局部 ●=全局 │ │ │ └────────────────────────────────────────────────────────┘ 只计算重要的注意力连接,忽略不相关的
2. 滑动窗口注意力(Sliding Window)
每个Token只关注最近的N个Token: ┌────────────────────────────────────────────────────────┐ │ │ │ 窗口大小 = 3: │ │ Token 1: attend [1, 2, 3, 4] │ │ Token 2: attend [1, 2, 3, 4, 5] │ │ Token 3: attend [2, 3, 4, 5, 6] │ │ ... │ │ │ │ 复杂度:O(N × W),W=窗口大小 │ │ 比O(N²)小很多! │ │ │ └────────────────────────────────────────────────────────┘
3. 线性注意力(Linear Attention)

将 softmax(QK^T) 近似为线性操作:

Attention ≈ φ(Q) × (φ(K)^T × V)

其中 φ 是某种变换

方案复杂度100K tokens计算量
标准注意力O(N²)10,000,000,000 ops
线性注意力O(N)100,000 ops

快了10万倍!

4. KV Cache优化(见W19)
配合KV Cache: - 稀疏注意力 + KV Cache = 推理加速 - 分块管理 + PagedAttention = 支持更长序列

2026年主流模型上下文对比

模型上下文窗口技术特点
Claude 3.7 Sonnet200K tokens原生支持,精准召回
Gemini 1.5 Pro2M tokens200K → 1M → 2M演进
GPT-4o128K tokens原生支持
DeepSeek-V3128K tokens64K专家 + 动态路由
Qwen2.51M tokens开源最强
GLM-4128K tokens中文优化

实际应用场景

1. 文档分析与问答

# 典型应用:基于长文档的问答document=load_pdf("年度财务报告.pdf")# 500页,~200K tokensprompt=f""" 请分析以下文档,回答问题。 文档内容:{_document}问题: 1. 公司去年的营收增长是多少? 2. 主要风险因素有哪些? 3. 未来战略规划是什么? """# 传统模型:无法处理,需要先摘要# 长上下文模型:直接全文分析response=model.generate(prompt)

2. 代码库理解

场景:问"这个函数被哪些地方调用?"

  • 代码库规模:100万行代码
方案步骤结果
短上下文1. 用语义搜索找到函数定义遗漏远处的调用
2. 在附近几页代码中搜索调用
长上下文1. 将整个代码库加载到上下文准确找到所有调用点
2. 模型直接分析调用关系图
3. 准确找到所有调用点

3. 多文档比较

场景:比较10份竞品分析报告,找出差异点 传统做法: - 一份一份读,逐一对比 - 容易遗忘,信息碎片化 长上下文做法: - 10份报告一起读 - 直接输出对比分析 - 不会遗漏任何信息

代码示例

使用LangChain处理长文档

fromlangchain_community.document_loadersimportPyPDFLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.vectorstoresimportChromafromlangchain_openaiimportOpenAIEmbeddingsfromlangchain.chainsimportRetrievalQA# 1. 加载PDF(500页)loader=PyPDFLoader("annual_report.pdf")documents=loader.load()# 2. 切分文档(保留重叠,保证上下文连续性)splitter=RecursiveCharacterTextSplitter(chunk_size=4000,# 4K tokenschunk_overlap=500,# 500 tokens重叠length_function=len,)chunks=splitter.split_documents(documents)# 3. 存入向量数据库embeddings=OpenAIEmbeddings()vectorstore=Chroma.from_documents(chunks,embeddings)# 4. 检索增强生成(RAG)qa_chain=RetrievalQA.from_chain_type(llm=model,retriever=vectorstore.as_retriever(search_kwargs={"k":5}),)# 5. 问答result=qa_chain.invoke({"query":"公司去年营收增长了多少?"})

配合Long Context API

fromanthropicimportAnthropic client=Anthropic()# Claude 3.7支持200K上下文response=client.messages.create(model="claude-sonnet-4-20250514",max_tokens=4096,messages=[{"role":"user","content":[{"type":"document","source":{"type":"pdf","source":{"type":"upload"}},"context":"这是一份年度财务报告,请分析其中的关键信息。"}]}])

长上下文的挑战与解决方案

挑战1:信息召回率

问题:上下文太长,模型容易"迷失"在信息海洋中

位置记忆程度说明
前10K tokens容易记住位置效应
中间50K tokens容易遗忘“Lost in the middle”
最后10K tokens容易记住Recency effect(近因效应)

中间部分 = “Lost in the middle”

解决方案

  • 增强检索:先用向量搜索找到相关段落
  • 分块处理:将长文档分成多段,逐一处理
  • 层级总结:先摘要,再基于摘要回答

挑战2:推理成本

成本对比(GPT-4o 128K上下文): 输入 1K tokens:$0.003 输入 128K tokens:$0.384(128倍!) 解决方案: 1. 只上传必要的内容 2. 使用压缩技术(如LLMlingua) 3. 检索增强,不要全量上传

挑战3:KV Cache显存

128K tokens的KV Cache有多大? 以半精度(FP16)计算: - 32层 × 隐藏维度12896 × 2字节 × 128K × 2(K+V) ≈ 200GB显存! 解决方案: - PagedAttention(vLLM) - ChunkKV压缩 - 量化到INT8/INT4

2026年最新进展

Gemini 2.0 Flash长上下文

2026年最新突破: ├─ 上下文窗口:10M tokens(1000万!) ├─ 可处理:4小时的视频 + 音频 + 文本 ├─ 技术:动态稀疏注意力 + 金字塔检索 └─ 价格:相比Gemini 1.5降低80%

Long Context Model的新评测标准

传统评测:大海捞针(Needle in Haystack)
把一个秘密藏在100K tokens中,让模型找出来

模型Needle in Haystack结果
GPT-4o95%+ 准确率(128K)
Claude 3.799%+ 准确率(200K)
Gemini 1.5 Pro98%+ 准确率(1M)

但这只是最基础的测试!

新评测标准(2026年):

  1. 多跳推理:需要综合多个位置的信息
  2. 关系追踪:追踪实体在整个文档中的变化
  3. 隐式信息:信息隐藏在代码/表格/图表中

常见问题

Q1:上下文窗口越大越好吗?

不是,需要权衡:

因素短上下文长上下文
成本
延迟
准确性可能遗漏全面
适用场景简单任务复杂分析

建议:能用短上下文解决就不用长上下文

Q2:如何选择合适的chunk size?

# 经验法则chunk_size=min(模型最大上下文/4,# 不超过1/410000,# 最大1万tokens目标段落长度的2# 确保完整语义)# 重叠度chunk_overlap=chunk_size*0.1# 10%重叠

Q3:长上下文会遗忘信息吗?

,这是著名的"lost in the middle"问题:

解决方案: 1. 结构化文档 └─ 用标题分隔,每个chunk保留层级信息 2. 增强检索 └─ 用向量搜索找到关键段落,单独处理 3. 分层处理 └─ 先对各段摘要,再整体分析

总结

Long Context的核心价值:

  • 让AI从"看摘要"到"读全文"
  • 支持整本书、代码库、长对话分析
  • 2026年主流:128K-2M tokens
  • Gemini 2.0达到10M tokens里程碑

技术支撑:

  • 稀疏注意力:减少无效计算
  • 滑动窗口:局部高效计算
  • KV Cache:避免重复计算
  • PagedAttention:显存优化

使用建议:

  • 能用短就不用长
  • 用检索增强,不要全量上传
  • 注意成本和延迟的权衡

延伸阅读

相关文章说明
W19 KV Cache推理加速技术
W03 RAG检索增强生成
W07 上下文窗口上下文窗口基础

本文收录于「AI词汇专栏」
相关阅读:W03 RAG · W19 KV Cache

http://www.jsqmd.com/news/638604/

相关文章:

  • 【Neural Whole-Body Control: HOVER ExBody2 神经全身控制实战】 4.3 训练流水线实现 - 完整代码套件
  • AI Agent岗位加班严重吗:工程师生活状态
  • Code Runner配置[C语言]多目录多文件编译【Windows环境】【Cursor】
  • 2007-2020 年税调与关键数字技术专利数据匹配结果
  • 支付宝立减金回收,认准京尔回收安全又靠谱 - 购物卡回收找京尔回收
  • B站会员购抢票神器:告别手速焦虑,让每一次抢票都胸有成竹
  • Fish-Speech-1.5在客服机器人中的应用实践
  • 出海小游戏开发周期多久?附流程 + 案例 + 避坑指南
  • 告别模组管理混乱:XXMI启动器如何一键管理所有二次元游戏模组
  • 2026年彩钢板隔断厂家推荐:防潮板隔断/SPC蜂窝板隔断厂家精选 - 品牌推荐官
  • OBS多路RTMP推流插件架构解析与配置指南
  • Asian Beauty Z-Image Turbo开源可部署:MIT许可证,商用免费,无隐性授权风险
  • Qwen3.5-2B开源大模型企业应用:客服知识图谱+图片工单识别落地案例
  • 2026年GEO(生成式引擎优化)服务商口碑榜
  • 如何快速构建个人数字图书馆:番茄小说下载器完整指南
  • resnet的模型结构和block是什么样的,怎么对应到代码中的网络搭建
  • Terraform State 管理:本地与远程后端
  • 《神泣:纷争》手游官网公测预约开启,光与怒的指尖史诗,十年情怀热血重燃!
  • P2H-Python字符串格式化完全指南-format和f-string的Python编程利器
  • 团队协同+合规安全!2026 Agent智能体平台推荐排行 企业团队优选版
  • 终极解锁:AMD Ryzen处理器SMU调试工具完全指南
  • WandEnhancer终极指南:5分钟解锁WeMod完整功能
  • granite-4.0-h-350m效果展示:Ollama本地运行下韩语/葡萄牙语指令响应
  • 2026届毕业生推荐的五大降重复率神器实测分析
  • DeepSeek总结的 DuckDB 1.5.2发版说明
  • ERTEC 系列 PROFINET 芯片级硬件过滤器分析喂
  • S2-Pro生成技术架构图描述:对比PlantUML与Mermaid输出效果
  • 终极指南:3步掌握安卓虚拟定位技术,FakeLocation实现应用级位置隔离
  • Rust高性能编程:Yi-Coder-1.5B所有权模型解析
  • 多模态AI轻松上手:Qwen3-VL-WEBUI部署使用一条龙指南