What is Context Window(上下文視窗)?
語言模型在單次輸入輸出序列中能處理的最大 token 數量,決定了模型一次能「看到」多少文字。
Definition
上下文視窗(也稱為上下文長度或序列長度)定義了語言模型在單次互動中能處理的 token 總數上限——包括輸入提示和生成輸出。擁有 4,096 token 上下文視窗的模型大約可以處理 3,000 個英文字的組合輸入和輸出;擁有 128,000 token 視窗的模型可以處理相當於一部短篇小說的內容。
上下文視窗是在預訓練期間內建到模型中的架構約束。它由位置編碼方案和注意力矩陣的大小決定。在標準自注意力機制中,記憶體和計算隨序列長度呈二次方擴展(O(n²)),這就是為什麼上下文視窗在歷史上受到限制。現代技術如旋轉位置嵌入(RoPE)、滑動窗口注意力和 FlashAttention 已使上下文視窗從早期模型的 2K-4K token 增長到最近架構的 128K-1M token,同時保持資源使用可控。
對於微調,上下文視窗對訓練資料準備有實際影響。每個訓練範例必須適合模型的上下文視窗——如果範例超過限制,它將被截斷,可能丟失關鍵資訊。訓練上下文長度有時可以比模型的最大值更短以節省記憶體(例如在支援 8,192 的模型上以 2,048 token 進行訓練),代價是微調後的模型在超出訓練長度時可能表現不太可靠。
Why It Matters
上下文視窗決定了模型能實際執行什麼任務。摘要一份 50 頁的文件需要足夠大的上下文視窗來容納整個文件加上摘要。多輪對話助手需要上下文來維持完整的對話歷史。對於涉及長文件的企業應用——法律合約、醫療記錄、程式碼庫——上下文視窗長度通常是模型選擇的決定性因素。此外,上下文視窗限制影響微調經濟性:較長的訓練範例每批次消耗更多 GPU 記憶體,增加訓練成本。
How It Works
當文字提交給模型時,分詞器將其轉換為 token ID 序列。如果此序列超過上下文視窗,必須截斷否則請求將失敗。在處理過程中,注意力機制計算視窗內所有 token 之間的關係——每個 token 可以關注每個前面的 token(在因果模型中)。位置嵌入編碼每個 token 的位置,使模型理解詞序。在推論時,鍵值快取(KV cache)儲存先前生成 token 的注意力狀態以避免冗餘計算,但此快取隨上下文長度線性增長,對於長序列可能佔據主要的 GPU 記憶體使用。
Example Use Case
一家法律科技公司建立合約審查助手時發現,他們的平均合約長度為 12,000 token。他們選擇了具有 32K 上下文視窗的基礎模型,以舒適地容納完整合約加上系統提示和生成的分析。在微調期間,他們將最大序列長度設定為 16,384 token(資料集中最長的範例加上安全餘裕),以平衡訓練記憶體使用和覆蓋範圍。在生產中,模型在單次處理中處理整個合約,不會因截斷而丟失關鍵條款。
Key Takeaways
- 上下文視窗限制了模型一次能處理的 token 總數(輸入 + 輸出)。
- 現代模型從 4K 到 1M token 不等,8K-128K 最為常見。
- 注意力記憶體隨序列長度呈二次方擴展,使長上下文成本昂貴。
- 訓練範例必須適合上下文視窗,否則將被截斷。
- 上下文視窗長度是文件密集型應用中模型選擇的關鍵因素。
How Ertas Helps
Ertas Studio 在其模型目錄中顯示每個基礎模型的上下文視窗,幫助使用者為其用例選擇正確的模型。平台的資料驗證步驟標記超過配置上下文長度的訓練範例,防止靜默截斷。使用者可以在 Studio 的超參數面板中配置訓練序列長度,Ertas 提供關於平衡上下文長度與 GPU 記憶體以優化訓練效率的指導。
Related Resources
Attention
Base Model
Embedding
Tokenizer
Transformer
Getting Started with Ertas: Fine-Tune and Deploy Custom AI Models
Privacy-Conscious AI Development: Fine-Tune in the Cloud, Run on Your Terms
Hugging Face
llama.cpp
Ollama
Ertas for Healthcare
Ertas for SaaS Product Teams
Ertas for Customer Support
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.