你是否好奇:「為什麼AI了解你的個人訊息?」、「為什麼AI可以記得之前的問題,來回答新的問題?」,這是因為AI使用了上下文參照(Context Window)的技術。
🌟 Context Window 原理
有趣的是,LLM 本身不會記憶對話,如果你告訴 LLM 你最喜歡的消遣是烹飪,然後問它你最喜歡的消遣是什麼,它不會知道。這稱為「無狀態性」,該特徵簡化了 LLM 的設計,使其更易於部署和擴展。
那麼為什麼 ChatGPT 能記住你跟它之間的對話呢?神奇之處在於客戶端系統架構,而不是 LLM 本身。使用 ChatGPT 時,客戶端會追蹤對話。它會在每次新的提示時將整個歷史記錄回饋給 LLM。這造成了一種記憶的錯覺。 LLM 並沒有記住,而是被提醒了。從系統面解釋,系統會將重要的資訊,連同問題一起丟給LLM處理。

🌟 系統如何過濾雜訊
然而LLM能夠接收的prompt有長度限制(Context Window有長度限制),假設一個對話視窗包含了1000則對話,系統如果將所有對話全部丟回到LLM,將會發生記憶體超載,影響回答內容,也就是「Context Window OverFlow」。

為了避免Context Window Overflow,系統就需要從1000則對話中,找出有意義的內容回傳到LLM。
先談「寫回記憶(Write)」,由於LLM的Context Window有長度限制,系統必須確保記憶存的都是重要資訊,所以在問題過程中會有監控寫入的模組,判斷哪些資訊跟使用者相關,哪些回答對未來的問答可能有幫助。甚至是在每一次的問答結束,系統都會重新整理,以優化短期記憶的內容。

再提到讀取記憶(Read),由於Write模組經常更新記憶內容,所以Read模組的工作就是分析問題,提取記憶體中的重要資訊,以強化問答內容的品質。運作邏輯類似RAG架構,Memory中的重要資訊相當於參考文本,用以輔助LLM生成更準確、上下文連貫的回答。

🌟 結論
簡單來說,Context Window 是模型可以一次性讀取與處理的字數上限。這個視窗內可以包含「System prompt」(用來設定模型的角色或語氣)、「User prompt」(使用者輸入)。
就像人類無法一次記住太多事情,語言模型的 context window 也有固定容量。例如,有些模型的視窗大小是 4,000 個 token,而進階模型可能能處理多達 128,000 個 token。但不論是哪種模型,這個容量都是有限的,超過這個範圍的內容將會被截斷,導致模型無法讀取。
在記憶空間有限的前提下,我們需要透過系統設計,挑選出最有價值的資訊,才能讓模型做出最準確、最有邏輯的回應。因此在開發AI系統時,理解Context Window的原理,是提升結果品質的關鍵。
------------------------------------------------------------------------
✨ 喜歡我的文章,歡迎繼續閱讀其他【AI 系列免費文章】!
------------------------------------------------------------------------