人類的記憶是出了名的不講道理:越重要的事越容易忘,越無聊的八卦反而烙在腦子裏揮之不去。AI 的記憶也同樣有它的怪脾氣。你給它一句短話,它理解得幹淨利落;你丟給它三百頁文檔,它立刻變成了一個“熱心但糊塗的誌願者”,該記的不記,不該記的倒是記得牢,最後總結出來的內容像你媽給你轉達你爸轉達你奶奶轉達你叔叔說的話——每一環都誠懇,每一環都變形。
於是問題來了:長上下文為什麽這麽難?不是說模型無所不能嗎?
很遺憾,不是。長上下文對大模型來說,是世界上最難的事情之一——比寫代碼、寫詩、寫情書都難。因為這件事不是“會不會”,而是“能不能”;不是智商問題,而是體力問題。
要理解這一點,先得承認一個事實:大模型根本沒有“記憶”。沒有抽屜、沒有硬盤、沒有一個它能偷偷放你文檔的地方。你給它長文,它做的不是“記住”,而是一個非常計算味的動作:把整段文本切成一串向量,再讓所有向量彼此“互相觀看”,在這張巨大網裏找出關係。文本越長,向量越多,關係越複雜,計算就越像奔跑的馬拉鬆。
它不是記住,而是每次都從頭到尾重新計算。你讓它解釋一段,就像讓它每次都把整本《資治通鑒》重新讀一遍並即時總結。它不是忘,是累。
真正的麻煩來自 Self-Attention 的天生昂貴。Self-Attention 的原則很浪漫:每個詞都要看所有詞,彼此理解彼此。這聽起來像烏托邦式的民主會議,實際卻是典型的計算災難。如果文本長度是 N,這種“大家互相看”需要 N×N 次計算,也就是著名的 O(N²)。
幾百 token 時沒事;幾千 token 時模型開始喝咖啡;一萬 token 時 GPU 已經通紅;十萬時工程師開始猶豫自己是不是走錯行;百萬時,顯卡和工程師一起申請年假。
人類讀長文靠跳讀、靠忽略、靠憑直覺找重點;模型不行,它必須把所有 token 全部算過一輪再說。
長上下文真正難的不是“理解”,而是“計算”。
但計算撐住了,也還有第二座大山:模型的注意力會被稀釋。注意力機製本意是讓模型找出文本裏最重要、最相關的內容,可當上下文從 1000 token 膨脹到 100,000 時,重點會在巨量噪音裏被衝得幹幹淨淨,仿佛你在一個人聲鼎沸的音樂節裏試圖找到朋友——燈太暗、人太多,你甚至懷疑自己根本沒有朋友。
模型也一樣。上下文越長,它越容易抓不住核心、搞不清主線,忘掉前文的設定,甚至自己和自己打架。不是智力不足,而是注意力總量有限,被稀釋成了均勻的白開水。
第三個難點埋在模型的內部結構裏:Transformer 本質上是“短記憶動物”。它的表示空間天生偏向保留局部模式,而不是維持長達十萬字的全局結構。語言模型擅長的是風格、連貫性、情緒、思維鏈,擅長抓“模式”,但並不擅長保存“細節”。
它能輕鬆總結全篇散文,卻很難告訴你第 14 萬行裏具體寫了哪句。這不是因為它懶,而是因為它內部沒有一個設計來保留長距離、精細細節的結構。它更像寫綜述的學者,而不是做逐字抄寫的書記員。
可那它到底是怎麽“記”長文的?
實際上是三步:
它對小片段理解很好,能把 100 字以內的塊吃得很透。它會建立全局關係,讓重要片段互相“高關注度連接”。就像你讀小說時會自動把“第一次出場的嫌疑人”與“第七章的關鍵證據”連起來。它會自動提煉主題、主線、關鍵角色,最終壓縮成一個相對緊湊的向量表征。
但你要是讓它說出一份三十萬字會議紀要第 142,008 行的原話,它絕對冒汗。因為這一行早就被表示壓縮吞掉,隻剩下模糊的語義影子,而非逐字逐句的記錄。
那為什麽越來越多模型號稱能處理“百萬上下文”?
因為工程師開始堆魔法了。比如擴展 RoPE(旋轉位置編碼),讓模型的位置信息更穩定;用滑動注意力、分塊注意力、稀疏注意力、樹狀注意力,把注意力隻放在必要區域;甚至用外部記憶、用向量數據庫,用 RAG 混合,把“記憶”外包出去。
這些手段的本質,就是讓模型能夠像人一樣“跳讀”“挑重點”“查閱筆記”,不再傻乎乎地把所有 token 都看一遍。
一句話總結:如果語言模型是“會說話的概率機器”,Self-Attention 是它的靈魂,那麽長上下文就是讓這台概率機器在極度擁擠的信息海裏既不溺水,還要精準找到你要的那根稻草。難的不是理解,而是精力分配;硬傷不是文本長度,而是注意力、計算量、結構極限與信息稀釋。
這就是為什麽“讓模型讀懂一百萬字”是 AI 工程史上最難啃的骨頭之一。