人工智慧

Context window 是什麼?搞懂 AI 為什麼聊久會失憶

跟 AI 對話久一點,很多人都遇過同一個怪現象:前面十分鐘才講清楚的預算、時間、需求,聊到後面,它像完全沒聽過一樣,又問了一次一模一樣的問題,甚至忘記自己剛剛才答應過的事。第一反應大多覺得「AI 是不是變笨了」,但真正的原因跟智力沒有關係,而是每一個 AI 模型腦子裡都有一塊看不見的白板,能寫的字數是固定的,寫滿之後還想繼續寫,就得先擦掉前面寫過的東西。這塊白板的容量,就是 context window(上下文窗口),決定 AI 一次能「看到」多少內容、又能記住多久。

白板越小,對話一拉長就越容易忘東忘西,搞懂它怎麼運作,你才知道 AI 有時候答得準、有時候卻像失憶是為什麼,也才能反過來調整跟它溝通的方式,讓答案的準確度明顯提升。先從白板本身裝了什麼講起,再拆它寫滿之後怎麼取捨、現在主流 AI 的白板實際有多大,最後回到一個更實際的問題,也就是知道這些之後,你可以怎麼調整自己下指令的方式。

上下文窗口是什麼?

白板的比喻不是隨口說著玩的。IBM 官方對 context window 的解釋,就是把它類比成 AI 模型的「working memory(工作記憶)」;Google 針對 Gemini 系列的官方文件,也用「短期記憶」形容同一件事。用白板來看,三個對應關係其實很直白:白板的大小,就是這個模型能塞進去的容量上限,這個數字是固定的,依模型不同而不同;白板上正在寫的字,則是這場對話目前累積的所有內容,不只是你打的每一句話,還包括系統背後預先設定給模型的指令、AI 自己先前已經回覆過的內容、你上傳的檔案或貼上的長文字,全部都要擠進同一塊白板,沒有誰的內容比較不占空間;白板寫滿之後,能做的只剩下擦掉舊的、騰出位置寫新的。

系統提示、你的訊息、AI 回覆、上傳檔案四種內容共用同一塊容量固定的白板,寫滿就得擦掉最早寫的
context window 就是這塊白板:四種內容擠在同一條固定容量裡,誰都不會比較不占空間。

之所以會有這個上限,是模型架構本身的限制,牽涉到底層計算資源怎麼分配,這篇不深入拆這段技術細節,你只要記得,白板一定有邊界,不是想塞多少就塞多少。

上下文窗口用什麼單位計算?

白板的容量不是用「字數」算,而是用 token(詞元)當單位。IBM 官方文件估算,一個 token 大約對應四分之三個英文單字,也就是說,一段一百個英文字的內容,實際占用的 token 數通常比一百還多一些。中文的換算比例又不太一樣,中文字在斷詞上更破碎,同樣的內容,中文版本往往比英文版本更快吃掉白板的空間,這也是為什麼有些人會覺得中文對話感覺比較快撞到上限。

Token 實際上怎麼切、規則是什麼,牽涉到分詞演算法的細節,值得另外寫一篇專門拆解,這裡只需要記住一件事,token 是白板計算容量的單位,不是你肉眼數的字數。

同一句意思的內容,英文切成 7 個 token、中文切成 12 個,說明白板算的是 token 不是字數
token 不是你肉眼數的字數,而是白板的容量單位;同樣一句話,中文切得更碎、更快吃掉空間(資料來源:IBM)。

Context window 跟「AI 真的記得你」是同一件事嗎?

搞懂 token 這個單位之後,還有一個更常見的誤解值得先釐清——很多人以為 AI 之所以「記得」自己,是因為它跟人一樣,把「你」這個人存進了腦袋裡。但多數情況下,這種「記得」只是因為前面講過的內容,還留在同一塊白板,也就是同一個 context window 裡。一旦你開一個新對話,或是舊內容被擠出白板,AI 對你就真的一無所知了。

這跟部分產品另外做的「長期記憶」功能,是完全不同的兩套機制。Anthropic 官方文件說明,一次對話裡的 context window 涵蓋系統提示、每一則對話訊息、工具呼叫的結果、模型自己生成的輸出,這些全部算進同一塊容量裡,用完就是用完。至於某些 AI 助理另外做的「記住你的偏好」功能,做法不一樣,那是把資訊存進白板以外的地方,等下次需要時再撈回來用,IBM 官方也把這種做法歸類在跟 context window 不同的檢索機制底下。

換句話說,白板本身不會累積記憶,白板旁邊有沒有另外一個「檔案櫃」,才是決定 AI 有沒有長期記憶的關鍵。

白板是同一場對話用完就擦掉的暫存,檔案櫃是存在對話之外、跨對話保留的長期記憶,兩者是不同機制
AI 說「記得你」多半只是內容還留在白板上;能跨對話留下來的,是白板以外另做的那個檔案櫃。

白板寫滿之後,AI 怎麼取捨留下的內容?

白板寫滿之後,系統不會就這樣當機,而是會用幾套不同的方式決定「留誰、丟誰」。Google 官方針對 Gemini 系列的文件,把常見做法歸納成三種:動態捨棄舊訊息、把內容摘要壓縮、或是改用 RAG(檢索增強生成)去外部資料庫抓資料。Redis 官方技術部落格則對這幾套策略做了更完整的拆解,連同語意快取、agent 記憶系統一起討論。以下把最常見的三種,對應到白板比喻上各自展開。

第一種是截斷,也就是先進先出(sliding window)。白板快滿的時候,系統直接把最早期寫上去的內容擦掉,騰出空間繼續往下寫,對話因此能一直進行下去。代價是,對話最初講定的設定、你一開始交代的前提,可能就這樣被擠出白板,這也是多數聊天介面預設採用的做法。

第二種是摘要壓縮。與其整段擦掉,系統改成把快被擠出去的內容濃縮成幾句重點,寫在白板角落當備忘,原本的細節就不在了,只留下大意。Anthropic 官方文件描述了自家的伺服器端做法,也就是當對話持續變長、逼近容量上限時,系統會自動把較早的對話內容摘要壓縮,讓對話可以繼續進行,不用你自己手動整理重講一次。

第三種是檢索式補充,也就是 RAG。超出白板容量的內容,不會硬塞回白板,而是先存進白板以外的「檔案櫃」,需要用到的時候,才抓一小段放回白板裡。這種做法的好處是,白板本身不用塞滿全部資料,只在真正需要時才撈取相關的一小塊。

這三種做法各有取捨,但有一個共同的限制,模型本身不真的懂「這段話重不重要」,機械式的截斷或摘要,並不保證留下來的剛好是關鍵資訊,除非系統額外設計了判斷這件事的機制。

白板寫滿後的三種取捨:截斷擦掉最早的、摘要壓縮成備忘、檢索式補充存到白板外需要時再撈回
三種做法各有取捨,但共同限制一樣:模型不真的懂哪一段重要,留下來的不保證是關鍵資訊。

為什麼 AI 常常忘記中間內容,卻記得開頭和結尾?

白板「滿了才會忘記」只是故事的一半。學者 Liu 等人 2024 年發表在《計算語言學會會刊》(TACL)的一篇研究〈Lost in the Middle: How Language Models Use Long Contexts〉發現,就算白板還沒真正寫滿,資訊都還留在容量範圍內,模型對放在輸入開頭或結尾的內容表現最好,一旦相關資訊落在長輸入的中段,準確率就會明顯下滑。換句話說,這些內容確實還寫在白板上,但模型並沒有認真看完每一個角落。

Anthropic 官方文件把類似的現象稱為 context rot(上下文腐化),原文寫得很直接:「隨著 token 數量增加,準確率與回憶能力會下降,這個現象稱為 context rot。」也就是說,不用等到白板真的爆滿,塞進去的內容越多,答案品質就可能悄悄開始下滑,IBM 官方文件也引用了同一份研究來說明這個現象。

模型對長輸入的注意力呈 U 型,開頭與結尾讀得仔細,中段最容易被略過
資訊放在長輸入的中段時,模型認真取用的程度明顯下滑,這就是 Lost in the Middle(資料來源:Liu 等人 2024,TACL)。

這帶出一個你可以馬上用的心法,真正重要的指令或設定,放在對話最前面或最後面,會比埋在一大段中間更容易被模型認真對待。

現在主流 AI 的白板有多大?

拆完白板寫滿之後的取捨機制,再看一個更直接的問題,就是這塊白板現在能裝多大。各家目前主力模型的規格,其實都已經跳到百萬級別。以撰稿當下查證到的官方資料為準:Anthropic 最新旗艦模型系列的 context window 已經來到 100 萬 tokens;OpenAI 最新旗艦模型的規格也在 100 萬出頭的 tokens 上下;Google 官方針對 Gemini 主力模型的說法則是,主力機型提供 100 萬 tokens 起跳的容量,部分機型甚至能到 200 萬 tokens。

100 萬 tokens 裝得下多少東西,光看數字沒有量感。Google 官方文件給過一個具體的換算:100 萬 tokens 大約等於 8 本一般長度的英文小說、或是 5 萬行程式碼、又或是 200 多集一般長度 podcast 節目的逐字稿。換句話說,現在一支主力模型的白板,理論上足以一次塞進一整套書籍或一個中型專案的程式碼庫,不用像過去那樣把長文件切成好幾段分批餵給它。

100 萬 tokens 大約等於 8 本英文小說、5 萬行程式碼或 200 多集 podcast 逐字稿
把 100 萬 tokens 換算成日常單位,就是約 8 本英文小說、5 萬行程式碼、或 200 多集 podcast 逐字稿(資料來源:Google)。

只是這個數字代表的是容量上限,不代表 AI 在整塊白板範圍內都看得一樣仔細。前面提到的 context rot 與 Lost in the Middle 的發現,一樣適用在這裡,白板做得再大,塞進去的東西一旦太多,中段內容被認真看待的機率還是會下降。白板數字持續變大是事實,但單看這個數字,不足以判斷一次對話實際能撐多穩。

重要資訊放最前或最後,AI 才比較不會漏看

前面拆的這些機制,最後都要落回你實際能用的做法上。以下三個做法,都能直接用在你平常跟 AI 對話的習慣上。

  1. 重要指令放在對話開頭,或當下這句話的最後面。Google 官方針對 Gemini 系列的 FAQ 就建議,尤其當整段提示很長時,把你真正要問的問題放在提示的最後面,效果通常比塞在提示中段更好。這正好呼應前面 Lost in the Middle 的發現,重要的東西放頭尾,比埋在一堆背景資訊中間更容易被認真處理。
  2. 一次講太多、太長的資訊時,分段給,不要一口氣塞成一大段。與其把所有背景、要求、限制條件擠進同一段長文字,不如拆開來講,或是先講最重要的結論,再視需要補細節。
  3. 明顯感覺到 AI 開始答非所問、忘東忘西時,重新開一個對話,通常比繼續在同一串硬凹更有效率。Anthropic 官方文件也提到,當對話持續變長、逼近容量上限時,與其硬撐,搭配伺服器端的自動壓縮機制、或是主動重新講一次關鍵背景,都是常見的因應做法。

這三件事做起來都不難,而且都在講同一件事,也就是白板容量有限,是目前所有 AI 模型共同的限制,理解它、順著它的邏輯去溝通,會比一味追求「這家白板比較大」的數字更實用。

AI 不是真的失憶,也沒有變笨,只是白板的容量本來就有限,再加上模型天生對中段內容的關注力比較弱,這兩件事加在一起,才會變成你感受到的忘東忘西。搞懂這塊白板怎麼運作,比只盯著「哪一家白板比較大」這個數字更有幫助,畢竟數字會持續往上跳,但寫滿了要取捨、塞得越多越容易恍神,這個本質短時間內不會改變。懂得怎麼跟白板配合著溝通,永遠比追逐更大的容量數字划算。

常見問答

本區問答由 AI 依文章內容自動整理,僅供快速參考,正式內容仍以全文為準。

Context window 是什麼?

Context window(上下文窗口)是 AI 模型裡容量固定的工作記憶,決定一次對話能同時塞進多少內容,包括你打的每句話、系統指令、AI 先前的回覆與上傳的檔案。這個容量會因模型而異,寫滿之後就得先擦掉舊內容,才能繼續寫入新的內容。

上下文窗口的容量用什麼單位計算?

容量是用 token(詞元)計算,不是用字數算。IBM 官方估算,一個 token 大約對應四分之三個英文單字。中文斷詞比較破碎,所以同樣內容換成中文,通常會比英文版本更快用完容量上限。

AI 記得你,代表它記住了你本人嗎?

多數情況下不是。AI 之所以像記得你,只是因為之前講過的內容還留在同一個 context window 裡;一旦開新對話,或舊內容被移出 context window,AI 就對你一無所知了。這跟另外設計的長期記憶功能是完全不同的機制。

為什麼 AI 常忘記對話中段的內容?

Liu 等學者在 2024 年的研究指出,就算容量還沒完全塞滿,模型對放在輸入開頭或結尾的內容表現最好,落在中段的資訊準確率會明顯下滑。Anthropic 官方把這種塞得越多、準確率悄悄下降的現象稱為 context rot。

現在主流 AI 模型的上下文窗口有多大?

以官方公開資料來看,主力模型大多落在 100 萬 tokens 上下,部分機型甚至到 200 萬 tokens。Google 官方換算,100 萬 tokens 大約等於 8 本一般長度的英文小說,或 5 萬行程式碼。

資料來源
  1. What is a context window? — IBM
  2. Long context | Gemini API | Google AI for Developers — Google
  3. Context windows — Anthropic
  4. LLM context windows: Understanding and optimizing working memory — Redis
  5. Lost in the Middle: How Language Models Use Long Contexts(TACL, 2024) — Liu 等人