載入中

上下文如何影響 Claude 的效能與成本

Claude 對這個世界的所有了解,不是在訓練過程中內建到模型中,就是屬於目前上下文的一部分。了解 Claude 的回答來自何處、您可能在哪些地方使用了比預期更多的 token,以及如何有意識地權衡成本與品質之間的取捨。

20 分鐘

許多人將 AI 聊天用作搜尋的替代方案。要安全地做到這一點,了解 LLM 的資訊來源非常重要。當 LLM 產生不正確的資訊時,通常是缺少、不正確或低品質上下文所造成的副作用。

如果您不知道這種情況發生的原因,很容易會覺得模型是在試圖編造資訊來欺騙您。但一旦您了解模型的知識來源,就能更清楚地預測它可能在哪裡出錯。您也能看清您的 token 都花到哪裡去了,並決定何時值得為更多上下文付費。

答案從何而來

這是個暖身題 - 猜猜看就好。

快速檢查

當 AI 聊天模型回答您的問題時,答案是從哪裡來的?

這三種情況都會發生。本課程將依序說明這三者:來自訓練的知識、您放入對話中的內容,以及模型自行查詢的內容。

參數記憶

模型有時候就是……知道一些事情。這種內建的知識稱為參數記憶,因為它被內建在模型的權重,也就是參數之中。

沒有人一開始就打算建造一本百科全書,但 LLM 能夠從記憶中背誦出來的事實,是學習預測文字過程中所產生的副作用。

參數記憶的極限

參數記憶在某些方面表現得比其他方面更好。以下是模型正在透過預測最有可能出現的下一個字來撰寫的句子。點擊以顯示每個句子接下來的幾個字,然後自行判斷模型產生的資訊是否正確。

載入中

加入上下文

來看看一個 Claude 僅憑訓練無法回答的問題。

在這個小工具中,如果我們透過提供額外的上下文來調整問題,這項任務對模型來說會明顯變得更容易。

載入中

上下文視窗

語言模型的上下文有最大大小限制。在撰寫本文時,目前 Claude 旗艦模型最多可容納一百萬個 token。

這大約相當於三本《白鯨記》的份量。那麼人們究竟是怎麼把空間用完的呢?

在 AI 聊天的早期,碰到限制就意味著要重新開始。您自己可能在 2024 年或 2025 年的某個時間點,在聊天介面中遇到過這個限制。然而當這種情況發生時,您知道自己寫的內容遠遠少於一本甚至三本小說——我們大多數人都沒有那麼多話要說。那麼您的那一百萬個 token 到底跑到哪裡去了呢?讓我們來探討一下。

填滿視窗

進行一次正常的聊天互動,觀察您的上下文視窗如何被填滿。為了讓這個範例更容易理解,我們假設一個上下文視窗小得多的模型,只有 1,000 個 token。

載入中

壓縮

當上下文視窗接近其限制時,應用程式會要求 Claude 總結目前為止的整個對話,然後這份摘要會取代先前存在的上下文。

壓縮讓您可以繼續對話,而不必重新開始一個新的對話。以下是其運作方式:

  1. 首先,應用程式會察覺到。 應用程式不會傳送可能使上下文視窗超載的請求,而是暫時保留您的下一輪發言,並啟動壓縮。
  2. 接著,Claude 進行總結。 目前為止的對話會連同一個提示傳遞給 Claude,提示內容類似於「附件是一段人類與模型之間的對話。請總結目前為止發生的一切。」
  3. 最後,對話會從這份摘要繼續進行。 摘要會取代對話歷史紀錄,接著步驟 1 中被保留的查詢會被傳遞給 Claude 以取得回應。

實際試試看:壓縮

載入中

書面記憶

記憶是一個嚴格限制的視窗能夠感覺起來無限的原因:Claude 在一次對話中寫下筆記,而這些筆記會在下一次對話開始時被重新加入。

可以把記憶想像成 Claude 以 Memento 式的方式把事情寫下來,並在之後讀回來:Claude 小睡一番後完全清醒過來,可以環顧四周,查看它先前為自己寫下的記憶檔案。我們將稱之為書面記憶,以免與參數記憶混淆。

壓縮是 Claude 能夠將單次對話延續超出上下文限制的方式。書面記憶則是 Claude 在多次對話之間,於上下文中保留重要細節的方式。

請由左至右閱讀這段示意圖。星期二您表達了一項偏好,Claude 明顯地將它寫了下來。接著,在星期四的一段全新對話中,沒有人再次告訴 Claude 這項偏好。但這份記憶筆記會在您的第一則訊息之前,悄悄地被插入上下文中。這個過程讓 Claude 能夠根據您直接分享的回饋,隨著時間記住您的偏好。

載入中

這份記憶會延續到未來的對話中,即使是在一個沒有星期二完整上下文的全新對話中也是如此。

不同的 Claude 產品以不同方式實作記憶。Claude Code 會讀取整個程式碼庫中的 CLAUDE.md 檔案,而 claude.ai 則將記憶保存在其設定中。但即使位置不同,其過程是一樣的:Claude 會將重要資訊寫下來,之後 Claude 的後續實例會在下一次對話開始時讀回這些資訊。

一週的記憶

與同一個助理共度五天。留意它寫下了什麼,並將其與它重新查詢的內容做比較。

載入中

前置上下文

放大來看,在 Claude 看到您的第一個 token 之前,已經有大量內容被加入到上下文中。下方的小工具展示了在與 Claude 的對話中,可能會被加入哪些前置上下文。確切的內容會因產品而異。

載入中

代理式上下文

既然您已經知道上下文對增強 Claude 能力有多重要,接下來重要的是理解代理式上下文:也就是 Claude 在回答之前,自行決定取得更多上下文的情況。您在先前關於番茄植物的範例中已經看過這種情況發生,當時 Claude 使用了搜尋工具,而不是依賴參數記憶或已有的上下文來回答。

在以下的小工具中,想像您就是 Claude。側邊欄顯示了一些在使用者訊息之前,悄悄被插入上下文中的資訊。針對每個提示,請決定是要根據您已經知道的內容回答,還是要向外尋求更多上下文。

載入中

Claude 在每一輪都會做出同樣的決定,而它多容易去尋求更多上下文,部分取決於努力程度設定。在較高的努力程度下,Claude 更有可能在回答之前進行搜尋、閱讀和查核,這通常意味著更好的答案和更大的上下文視窗。在較低的努力程度下,Claude 更有可能直接回答。了解如何在 Claude 中選擇努力程度,或是在 Claude Code 中選擇。

追蹤上下文

來看看 Claude 的這個範例回覆。每個標示出來的部分都受到某些前置上下文的影響。點擊某個部分,並找出您認為它的來源。

載入中

您現在可以做到的事

  • 您可以說出在權重中(參數記憶)和在視窗中(上下文)兩者之間的區別。
  • 您知道視窗有一個上限,而且填滿它的並不只有您一個人。
  • 您知道每一輪都會重新傳送整個視窗,並且能夠有意識地決定何時該開始一個新的對話。
  • 您了解壓縮是一種總結技術,能讓視窗感覺起來無限,但可能會遺漏細節。
  • 您可以解釋書面記憶是如何在不同對話之間得以保留的。
  • 您可以查看 Claude 的回覆,並猜測前置上下文可能如何形塑了這個回覆。

下一步:在 Claude 中選擇努力程度 · 在 Claude Code 中選擇

深入了解:AI 如何運作 · AI 的能力與限制