人工智能也要考默写?Deepseek v4:百万上下文背不完,根本背不完!

当你在看一本小说的时候,是否会发现自己经常看到后面忘了前面?当你和朋友从早聊到晚,是否会发现已经不记得最开始的话题?但最近更新的DeepSeek-V4不会忘记。

500

图源:DeepSeek-V4 技术报告(参考文献[3])

就在大前天,全新系列模型DeepSeek-V4堂堂上线并同步开源这一全新版本最厉害的能力之一,就是它拥有超长的上下文窗口,可以记住并理解长达百万字符的内容(约等于十本《哈利·波特》)。

这意味着它可以读完一整套学术论文集再回答你的问题,也可以记住几十轮长对话中的每一个细节,而不是一边聊天一边忘记前面的对话。

这听起来理所当然,但对人工智能来说,这其实是一个非常难的问题。今天,我们就从最基础的地方讲起,让你明白DeepSeek-V4的百万上下文到底有多厉害。

PART 01

模型是如何认识世界的?

首先,我们需要知道AI是如何处理人类语言的。

2017 年,Google发表了一篇名为《Attention is All You Need》(注意力就是你所需要的一切)的论文。这标题小编觉得非常欢愉啊,毕竟捏他了披头士的名曲《All You Need Is Love》,还引得后来者争相模仿这一标题范式。

500

披头士的《All You Need Is Love》封面 | 图源:网络

这篇论文提出了注意力机制,彻底改变了人工智能处理语言的方式。如今所有的大语言模型,包括 ChatGPT、DeepSeek,都是建立在这个机制之上的。

注意力机制的核心是:Q(Query,查询)、K(Key,标签)、V(Value,含义)三个矩阵。

K(Key),可以理解为一些抽象的“概念标签”,比如“动物”、“跑步”、“颜色”;

V(Value),是这些概念标签背后对应的具体含义,比如“动物”对应的V里藏着关于猫、狗、大象的各种知识。

Q(Query),你想要查找的内容,模型拿着这个查询Q去和所有的标签K比较相似度,找到最匹配的标签,然后按照匹配程度,把对应的含义V加权平均起来,得到最终的理解结果。

注意力机制的完整计算公式只有一行:

看起来很复杂,拆开来其实只有三步:

第一步:算相似度。Q·KT就是让查询Q和每一个标签K做“点积”——两个大小固定的向量方向越一致,点积越大,说明这个标签K越匹配当前的查询Q。

第二步:归一化概率。原始相似度分数可能特别大或特别小,直接用来加权不稳定,所以先除根号下dk,(dk是向量维度,开根号是为了防止数值溢出),再对其使用softmax函数。softmax本质上是用自然常数e的指数来放大差距,再归一化成概率。它能让重要的东西被大幅突出,不重要的被压得很小,模型的“注意力”因此能被聚焦。

第三步:加权求和。用第二步得到的概率分布,对所有的含义V做加权平均:权重越高的含义V,在最终结果里占比越大。这就是“注意力”的核心:让模型把注意力集中在最相关的内容上。

这里有一个关键问题:Q、K、V 从哪里来?

刚刚读到这里的小伙伴可能会有误解,那就是大模型是每次对话是生成一个查询Q去查阅一个固定的标签含义KV表,这样做确实理论上可行,但是得到的模型会很呆板:模型只能处理固定的内容,一旦超出了预设KV表的范围,它就只能两眼一抹黑了。实际的大模型使用的是“多头注意力机制”,看起来好像很复杂,别急,我们一个一个来。

自注意力机制里,Q、K、V 全部来自同一段输入,只是各自经过了一个不同的线性变换,相当于从不同角度看同一件事,分别去回答如下的问题:

它自己的Q:“我想获取什么信息?”

它自己的K:“可以通过什么来找到我?”

它自己的V:“我自己都有哪些含义?”

我们考虑一个非常简单的例子:“很重”、“重新”两个词语中的“重”,虽然这两个字都是一模一样的,但是在自注意力机制里,模型可以做到第一个“重”的标签K标记这是质量、含义V表明这个很大,查询Q去问这个对应什么东西;而第二个“重”的标签K则和次数有关,含义V表明至少是第二次,查询Q会去问这个和什么事情相关。

我们会发现,不同于静态的QKV,动态生成QKV的好处在于:模型能根据实际语境来给一个词打上更合适的标签K,赋予更合适的含义V,以及做出更准确的查询Q如此模型便可以在不同的场景中都能准确理解含义、做出贴切的回答。

多头注意力机制则着重于解答另一个问题:原版的注意力机制确实可以实现一个词多个标签K多个含义V,但查询Q只有一个,在一些多义词或者有歧义的场景面前多少有些不够看了。

比如在一个经典的“逗老外”短句“一行行行行行”中,连着出现了五个“行”,对于其中每一个“行”如何理解,显然一个查询Q是远远不够用的,因为“行”有两个读音和两套含义:háng(行列、行业)和 xíng(行走、可以),如果只有一个查询Q,它只能问一个维度的问题,要是问到了“这个字是动作吗?”——答案是都不是,所有“行”最后的含义V都是一样的,整个句子都乱套了。多头注意力相当于给每个词配了多个查询Q,每个查询Q负责一个不同的关注角度:“这个是动作么”、“这个是名词么”、“这个是形容词么”,哪怕有些查询Q确实无法分辨,模型最终还是可以分清每一个“行”究竟是什么。

那么怎么让模型能一次发出多次查询Q呢?

答案也非常简单,我们可以通过同时跑h组独立的注意力(称为h个" attention head注意力头"),每个头各自学习不同的Q、K、V矩阵,能够从不同维度来理解同一段输入。最后把h个头的结果拼接起来,得到更全面的表示。这就像是同时委托了32个侦探,每人从一个不同线索探案(作案时间,作案方法,人际关系……),最后汇总成一份全面的报告。

以上就是第一代多头注意力机制的实现方法,初代GPT 、BERT都用的是这套方案。但是这种方法存在一个问题,每个头都有独立的标签K、含义V,使用时必须把h份KV全部缓存在显存里,显存开销随头数等比增加,用起来实在是太肉痛了(如果你正好读了下一部分的内容就会发现,随着模型处理文字数量的增加,这些KV也会进一步线性增长,吃掉你更多宝贵的显存,这下更肉痛了!)。

所以,现在第二代多头注意力机制GQA(分组查询注意力,Grouped Query Attention)不再让每个查询Q都有独立对应的标签K和含义V,而是让多个查询Q共享同一对标签K和含义V。比如我们原来有32个注意力头,现在我们把32个查询Q分成8组,每组4个查询Q共用同一对KV。这样KV的存储量直接降为原来的1/4,但模型的表达能力损失不大,因为每个查询Q还是独立提问,只是查的是同一份档案。就如同32个侦探仍然各自独立分析问题,但情报档案室从32份缩减为8份,每4个侦探共享一份资料。这节省了大量档案室空间,侦探们的分析视角却没什么损失。GQA 被 LLaMA 2/3、Mistral、Gemma 等模型广泛采用,是当前工程实践中显存与性能平衡的主流方案。

PART 02

上下文是什么,为什么需要它?

现在我们有了注意力机制,可以理解单个词了。但语言不是孤立的词语堆砌,而是有前后联系的句子、段落、篇章。

上下文,说白了就是“前面说过的话”。

模型处理一个新词的时候,不仅要理解这个词本身,还要理解它和前面所有词的关系。新词的查询Q除了和自己的标签K比较,还要去和所有之前读过的词的标签K比较一遍。这样,模型就能“看到”整个已读内容的全貌,理解前后的关联。

举个小学一年级语文考试里的经典题型:“它”在文中指代什么?模型要理解“它”,就得让“它”的查询Q去和前面所有词的标签K做比较,看看哪个名词的标签K和“它”最匹配,找到之后,就可以尽可能地继承那个名词的含义V,从而正确理解“它”代指的是谁。

所以,上下文越长,模型理解越深入。但上下文太长也有一些代价——

第一,存储压力大。模型必须把从对话开始的所有KV都存在显存里。上下文越长,要存的KV越多,显存很快就撑不住了。

第二,计算量爆炸。每个新的查询Q都要和所有之前的标签K做比较。如果上下文长度是n,每处理一个新词就要做n次比较,整个处理过程的总计算量就和n2成正比——这是个等差数列求和,幼儿园就学过,增长非常快。上下文翻倍,计算量会变成原来的四倍。

第三,重要信息被淹没。每个查询Q最终得到的是所有含义V的加权平均,如果上下文太长,大量不太重要的含义V会“稀释”掉真正关键的信息。就像在32个侦探发现的100个线索里寻找真正凶手的印迹,就可能被无关线索淹没。

PART 03

上下文压缩

为了解决上下文过长的问题,研究者们想出了一个办法——压缩稀疏注意力(CSA,Compressed Sparse Attention)。老规矩,我们挨个看前面的前缀是啥意思。

首先,压缩。把一系列前后相连的标签含义KV分组打包,合并成一个更紧凑的KV,丢掉没什么用的细节。就像你读完一章书,不用记住每一句话,只需要记住这一章大概讲了什么。压缩之后,存储的KV数量大幅减少,计算量自然也降下来了。

其次,稀疏。每次新的查询Q来了,不让它和所有的标签K都比较,而是先用一个小型筛选器,挑出它认为最重要的若干个KV,只让这些KV参与计算。就像考试前,老师会划重点一样,我们只要复习最重要的知识点就好。与此同时,这个筛选器通常还保留一个滑动窗口,让最近的一些KV更容易被选中。

利用CSA,存储压力变小了,计算量也不再随上下文长度的平方增长,而且理论上能突出核心信息,避免重要内容被淹没。但它也带来了新的问题,即注意力涣散

首先,它会遗忘重要的事。如果上下文太长,要点太多,超过了筛选器的截断上限,后续的查询Q就永远看不到那些被排在上限之外的标签内容KV了。

第二,可能出现前言不搭后语的现象。一旦超出了滑动窗口(这个通常不会太大,一般是数百个词),当上下文太大时,你又正好和模型进行一段比较长的交流,那你刚刚和模型说的话就可能入不了筛选器的法眼,导致模型前后两段前言不搭后语。

PART 04

DeepSeek V4 的混合注意力

说了这么多,总算能进入我们的正题了,很激动有木有!

本次DeepSeek-V4的核心架构创新,正是把两种不同“压缩力度”的注意力机制混合起来用:CSA(压缩稀疏注意力)+ HCA(重度压缩注意力,Heavily Compressed Attention)。

CSA(压缩稀疏注意力) 是我们刚刚谈到的老朋友了,在 DeepSeek-V4 中,CSA 把每32个连续的的标签含义KV打包压缩成1个输入。压缩之后,再用一个轻量级的“闪电筛选器”从中挑出最相关的若干个KV,让查询Q只关注这些被选中的部分。此外,CSA 还保留了一个滑动窗口,把最近几个词的原始KV原封不动地留下来,保证模型对刚说过的话仍然有清晰的记忆。

这就像是在读一本书时,每 32 页写一段总结(压缩),做题时从所有总结里找最相关的几段(稀疏),同时把当前翻开的那一页原文留着随时查(滑动窗口)。

500

CSA 的核心架构,它首先对KV进行压缩,然后筛选最重要的一些KV,此外还会保留最近的一些原始KV。 | 图源:DeepSeek-V4 技术报告(参考文献[3])

HCA(重度压缩注意力)则更加剑走偏锋,它嫌弃CSA的压缩力度还是太保守了:其把每128个相邻的标签含义KV都压缩成1个输入,是CSA压缩率的四倍。代价是细节损失更大,但好处是压缩后剩下的输入数量已经少得可以不做稀疏筛选了,直接让Q看到所有压缩后的输入,彻底避免了"筛选器漏掉重要信息"的问题。

这就像是把一整部小说的每 128 页浓缩成一句话(高度摘要),虽然细节基本都没了,但因为总结的数量足够少,可以把每一条都看一遍,不会因为筛选器而遗漏。

500

HCA的核心架构,它使用了更激进的压缩,并且不对压缩后的内容进行筛选,此外,HCA同样保留了一个能看见最近原始KV输入的滑动窗口。 | 图源:DeepSeek-V4 技术报告(参考文献[3])

DeepSeek-V4在模型内部将CSA层和HCA层交替排列CSA层负责近中距离的精细依赖,保留更多细节,带稀疏筛选;HCA层负责超远距离的模糊记忆,极度压缩,全量关注。两者配合,让模型既不会忘记刚才说的话,也不会对几十万字之前的内容完全没有印象。

在两种技术的支持下,百万上下文推理计算量和KV显存占用都得到了显著的降低。

500

图源:DeepSeek-V4 技术报告(参考文献[3])

其实,这种混合注意力机制,和人类的记忆方式惊人地相似短期记忆对应CSA的滑动窗口,就如同你刚才说的话,我记得清清楚楚;中期记忆对应CSA的压缩+筛选:上个月讨论过某个话题,大概知道是什么,但细节记不太清了,只有印象最深的几点还记得;长期记忆对应HCA的重度压缩:很久之前发生的事,已经浓缩成了几个模糊的印象,细节基本忘光,但"大概发生过什么"还是知道的。

DeepSeek-V4的混合注意力,正是在模拟这种分层的记忆机制。用工程的方式,让机器拥有接近人类的记忆结构。

PART 05

结语

DeepSeek-V4 凭借CSA + HCA混合注意力架构,真正实现了原生百万上下文。在长上下文任务的多项评测中,DeepSeek V4-Pro-Max超越了 Gemini-3.1-Pro,成为目前开源模型中长上下文能力最强的选手

500

 图源:DeepSeek-V4 技术报告(参考文献[3])

当然,再好的评测成绩,也比不上大家用起来的感受。现在,DeepSeek-V4已经向公众开放,欢迎大家前去试用,感受它的厉害之处。也欢迎大家在评论区告诉小编,新版本的使用感想如何?哪里让你惊喜,哪里又需要改善?

参考文献

[1] 姚期智, 黄隆波, 等. 人工智能[M]. 北京: 清华大学出版社, 2022.

[2] DeepSeek. DeepSeek-V4 预览版:迈入百万上下文普惠时代[EB/OL]. (2026-04-24). https://mp.weixin.qq.com/s/8bxXqS2R8Fx5-1TLDBiEDg.

[3] DeepSeek AI. DeepSeek-V4:Towards Highly Efficient Million-Token Context Intelligence[R/OL]. (2026-04-24). https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro/blob/main/DeepSeek_V4.pdf.

站务

全部专栏