Cửa sổ ngữ cảnh: nạp lại không phải là nhớ (Tui hỏi AI một câu ngu – Tập 1)
BlogContents
Chào mừng bạn đến với Fx Studio. Bài này mở màn series “Tui hỏi AI một câu ngu”, bắt đầu bằng câu tui ngại hỏi nhất: sao nó không nhớ tui?
Fx Studio · series “Tui hỏi AI một câu ngu” · tập 01
Câu trả lời quen thuộc là cửa sổ ngữ cảnh có hạn, nhét nhiều quá thì cái cũ trôi ra. Không có gì trôi ra cả, vì không có gì được giữ lại: mỗi lượt hỏi đáp là một lần nạp lại toàn bộ đoạn chat từ dòng đầu. Và nạp vào được rồi cũng chưa xong, vì thứ nằm ở khúc giữa là thứ ít được dùng tới nhất.
Câu mở màn của series là câu tui ngại hỏi nhất trong đám câu ngu: sao nó không nhớ tui?
Năm mươi giây hình chỉ cõng được một ý và đúng một câu có nguồn. Nói được rằng câu trả lời quen thuộc (“cửa sổ ngữ cảnh có hạn, đầy thì cái cũ trôi ra”) sai ở hai chỗ, rồi hết giờ. Bài này là phần tui nợ lại. Có ba thứ đáng viết dài: cơ chế vì sao nó không giữ được gì, chỗ mà cái nghiên cứu tui trích không nói mạnh như người ta hay trích, và một chỗ tui tự vấp lúc ngồi truy nguồn nó.
Cửa sổ ngữ cảnh không phải là một cái thùng chứa
Lý do câu “đầy thì trôi” nghe hợp lý tới vậy không nằm ở kỹ thuật. Nó nằm ở chỗ mình có sẵn một mô hình trí nhớ trong đầu, và mô hình đó là cái thùng. Ổ đĩa đầy thì xoá file cũ. Băng ghi âm hết chỗ thì ghi đè lên đoạn đầu. Não người quên chuyện tuần trước để nhớ chuyện sáng nay. Cái thùng có sức chứa, dùng lâu thì cạn, cạn thì cái vô sớm nhất bị đẩy ra sớm nhất. Mình áp cái thùng đó vô đây, và tự nhiên mọi thứ khớp: chat lâu quá thì nó quên đầu, hợp lý.
Có điều cái thùng đó không tồn tại.
Một lượt hỏi đáp, ở mức thô nhất, là một lần gọi hàm. Đầu vào là chữ, đầu ra là chữ, gọi xong là xong, không có gì đọng lại giữa hai lần gọi. Thứ ngồi ngoài mới là thứ giữ log: cái khung chat bạn đang gõ. Mỗi lần bạn nhấn gửi, nó gom cả đoạn từ câu đầu tiên tới giờ, dán câu mới của bạn vô cuối, rồi đẩy trọn cục đó đi như một câu hỏi mới toanh. Cảm giác “nó nhớ mình” sinh ra ở cú dán đó. Không sinh ra ở bên trong.
Đây là chỗ tui thấy phân biệt được thì mọi thứ khác sáng ra: giới hạn ngữ cảnh là giới hạn của một lượt, không phải giới hạn tích luỹ. Không có cái gì đầy dần lên theo thời gian rồi tràn. Mỗi lượt là một cái thùng mới, đổ lại từ số không, và cái thùng đó có kích thước cố định. Ví dụ đoạn chat của bạn đi tới lượt thứ hai mươi, thì ở lượt hai mươi nó không đọc thêm một lượt, nó đọc lại từ lượt một. Lượt hai mươi mốt lại đọc lại từ lượt một một lần nữa. Tự nhiên câu “nó không nhớ hôm qua” nghe không còn đúng lắm, phải nói là nó được đưa cho đọc lại hôm qua, mỗi lần một lần, và lần nào cũng là lần đầu với nó.

Nghe tới đây thì phản xạ tiếp theo của tui hồi đó là: ừ thì đọc lại, nhưng đọc lại đủ thì cũng như nhớ mà, có sao đâu.
Chỗ đó mới là chỗ có nghiên cứu.
Nằm trong ngữ cảnh không đồng nghĩa với được nhìn tới
Bài tui dựa vào là “Lost in the Middle: How Language Models Use Long Contexts”, của Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni và Percy Liang, in trên TACL tập 12 năm 2024, bản arXiv số 2307.03172.
Chỗ hay của bài này là họ không đo theo lượng, họ đo theo vị trí. Cùng một đống thông tin, cùng một câu hỏi, chỉ dịch cái mẩu cần dùng đi chỗ khác trong đống đó, rồi xem điểm thay đổi thế nào. Nguyên văn abstract của họ: “we observe that performance is often highest when relevant information occurs at the beginning or end of the input context, and significantly degrades when models must access relevant information in the middle of long contexts, even for explicitly long-context models.”
Hình chữ U. Hai đầu sáng, khúc giữa tối. Và cái đuôi câu đó là chỗ tui đọc xong phải ngồi im một lúc: kể cả với mô hình được làm riêng cho ngữ cảnh dài.
Nên cái nếp “nhét lại toàn bộ” nó tốn công mà vẫn có một vùng mù, và vùng mù đó có hình dạng đo được. Thứ bạn dán vô khúc giữa thì nó vẫn nằm đó, vẫn được tính là đã đưa vào, mà lại là thứ ít được dùng tới nhất.

Phản biện: bài đó đo hai việc rất cụ thể, không đo việc tui làm
Đây là phần tui thấy người trích hay bỏ, kể cả tui.
Liu và cộng sự đo trên đúng hai tác vụ: multi-document question answering và key-value retrieval. Cái thứ nhất là đưa nhiều tài liệu, hỏi một câu mà đáp án nằm trong một tài liệu duy nhất. Cái thứ hai gọn hơn nữa, đưa một mớ cặp khoá và giá trị, đưa một khoá, đòi lại đúng cái giá trị của nó.
Nhìn ra hình dạng chung chưa? Cả hai đều là tìm đúng một mẩu trong một đống. Có một đáp án đúng, nằm ở một chỗ, và nhiệm vụ là chỉ tay vô đúng chỗ đó.
Còn việc mình thực sự làm với nó cả ngày thì hiếm khi có hình dạng đó. Nhờ viết lại một đoạn cho gọn hơn. Đưa một file code, hỏi chỗ này sai ở đâu. Bàn một ý, cãi qua cãi lại vài lượt. Mấy việc này không có “một mẩu đúng ở một chỗ”, nó cần trải qua cả đống chứ không cần chỉ tay. Có thể vùng mù ở khúc giữa vẫn còn đó, có thể nó còn nặng hơn, mà cũng có thể nó nhoè đi vì nhiệm vụ không phụ thuộc vào một điểm duy nhất. Bài đó không nói. Bài đó không đo cái đó.
Cho nên câu “nó không đọc kỹ khúc giữa của mọi thứ” là một câu tui thấy nhiều người nói, và nó đi xa hơn dữ liệu một bước. Câu đứng được là câu hẹp hơn: với việc phải tìm ra một mẩu thông tin trong ngữ cảnh dài, vị trí của mẩu đó ảnh hưởng tới kết quả, và giữa là chỗ tệ nhất.
Chỗ phản biện thứ hai thì về thời gian. Bản arXiv là năm 2023, in tạp chí năm 2024. Từ đó tới giờ mô hình đổi mấy vòng rồi, cửa sổ ngữ cảnh nở ra tới cỡ hồi đó không ai đo. Nếu ai đó lấy hình chữ U của Liu ra mà nói “mô hình bây giờ vẫn y như vậy” thì cái đó không phải kết luận của bài. Bản thân bài cũng không hứa như vậy. Câu cuối abstract của họ nói rõ họ đưa ra cái gì: “provides new evaluation protocols for future long-context language models.” Tức là họ đưa cách đo cho các mô hình sau, chứ không đưa một con số vĩnh viễn. Cách đo thì sống lâu hơn kết quả. Đó là phần tui tin còn nguyên giá trị, còn con số cụ thể của năm 2023 thì tui không cầm nó đi đâu cả.
Nói vậy thì luận điểm của tập này có sụp không? Tui nghĩ là không, mà phải nói cho rõ nó đứng bằng chân nào. Tầng thứ nhất, chuyện mỗi lượt là nạp lại từ đầu, cái đó không cần Liu, nó là cách hệ thống được ghép lại. Liu là tầng thứ hai, tầng cho thấy “nạp đủ vô” cũng chưa phải xong. Rút Liu ra thì tập này mất một tầng và trở thành ý kiến của tui. Giữ Liu lại thì phải giữ luôn cái phạm vi của Liu.
Chỗ tui vấp: cái nhãn gọn nhất là cái nhãn làm mất người
Đây là phần tui thích nhất trong cả tập, mà nó không lên video được.
Bài này gần như ở đâu cũng được gọi là “nghiên cứu của Stanford”. Trong kho nguồn tui tự soạn cho series cũng ghi “nhóm Stanford”. Voice của video tập này, chính tui viết, đọc nguyên câu “nhóm Stanford, trong bài Lost in the Middle”.
Rồi tui ngồi mở trang bài ra đọc phần cơ quan, đúng cái việc lẽ ra phải làm trước khi gõ chữ nào.
Bảy tác giả, ba nơi. Stanford có ba người: Nelson F. Liu, John Hewitt, Percy Liang. UC Berkeley một người: Kevin Lin. Còn ba người nữa, Ashwin Paranjape, Michele Bevilacqua và Fabio Petroni, ở Samaya AI, một công ty.
Ba trên bảy. Cái nhãn tui đang dùng gói được ba phần bảy số tác giả, và làm mất hai thứ: bốn người còn lại, và chuyện đây là một bài hợp tác giữa trường và công ty chứ không phải một bài từ một phòng lab.
Tui không nói ai trích sai. Gọi “nghiên cứu Stanford” thì không có câu nào trong đó là câu sai, và trong năm mươi giây hình thì tui vẫn chưa biết cách nào gọn hơn mà không hụt hơi. Có điều cái nhãn nào cũng có giá của nó, và giá ở đây là ba tác giả với một nửa câu chuyện về việc bài đó được làm ra kiểu gì. Chỗ này tui viết ra không phải để bắt lỗi ai. Viết ra vì đây là chỗ tui vấp bằng chính tay mình, trong chính tập của mình, và nếu tui im thì bài blog này sẽ tử tế hơn cái video của nó một cách không thành thật.
Sau cú đó tui đổi một cái nếp làm việc: con số nào tui định đưa lên hình thì tui phải mở trang gốc, không phải mở bài viết về nó. Cái nếp này chậm hơn nhiều. Mà mấy lần đầu áp dụng, cái tui thấy ở trang gốc đều thú vị hơn cái con số tui định trích.
Vậy cái nó thiếu là gì
Nếu chỗ hụt là dung lượng, thì mọi thứ đã giải quyết xong từ lâu rồi. Cửa sổ đã to lên nhiều lần so với hồi Liu đo, mà cái cảm giác “nó không nhớ tui” thì chẳng đi đâu cả.
Vì cái hụt không phải chỗ chứa. Có bao nhiêu chỗ chứa thì mỗi sáng nó vẫn được đưa cho đọc lại từ dòng một, và khúc giữa của cái đống đó vẫn là khúc nó nhìn nhạt nhất. Thêm chỗ chứa là làm cái đống dài ra. Cái đống dài ra thì khúc giữa dài ra theo.
Thứ nó không làm được là thứ mình làm suốt mà không để ý: bỏ đi. Sau một buổi nói chuyện với ai đó, mình không mang theo biên bản. Mình mang theo bốn năm mẩu, và mấy mẩu đó không phải mẩu mới nhất hay mẩu dài nhất, nó là mẩu đáng mang. Cái chọn đó xảy ra âm thầm, mình không thấy mình đang làm nó, nên mình cũng không thấy đó là phần khó.
Nhớ không phải là giữ lại được. Nhớ là chọn được cái đáng mang theo.
Mà nếu nó chưa tự chọn được cái đáng mang theo, thì mình chọn giùm nó chứ gì. Mình dặn kỹ hơn, dặn rõ hơn, viết dài ra cho chắc. Tập 02 tui đi thử đúng chuyện đó.
Nguồn:
- Nelson F. Liu, Kevin Lin, John Hewitt, Ashwin Paranjape, Michele Bevilacqua, Fabio Petroni, Percy Liang.
- “Lost in the Middle: How Language Models Use Long Contexts”.
- Transactions of the Association for Computational Linguistics, tập 12 (2024). arXiv 2307.03172.
Cảm ơn bạn đã đọc bài viết này!
Related Posts:
Written by chuotfx
Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!
Leave a Reply Cancel reply
Fan page
Tags
Recent Posts
- Cửa sổ ngữ cảnh: nạp lại không phải là nhớ (Tui hỏi AI một câu ngu – Tập 1)
- Kill switch cho AI agent: guard in “Blocked”, lệnh vẫn chạy
- Nghĩa địa skill – Tập 5: xoá skill không dùng
- Nghĩa địa skill – Tập 4: vì sao AI agent chọn công cụ sai
- Nghĩa địa skill – Tập 3: con số tính năng không ai dùng
- Nghĩa địa skill – Tập 2: chi phí token của cái đã chết
- Nghĩa địa skill – Tập 1: Cái tui không nhớ
- Claude Certification – Chứng chỉ chính thức của Anthropic có gì đáng chú ý?
- Sau Vibe Coding thì gì?
- Tui Học AI – 3 cái bẫy khiến bạn tưởng đã lên bậc nhưng chưa
You may also like:
Archives
- September 2026 (8)
- August 2026 (2)
- July 2026 (7)
- June 2026 (13)
- May 2026 (2)
- April 2026 (5)
- March 2026 (5)
- February 2026 (1)
- January 2026 (10)
- December 2025 (1)
- October 2025 (1)
- September 2025 (4)
- August 2025 (5)
- July 2025 (10)
- June 2025 (1)
- May 2025 (2)
- April 2025 (1)
- March 2025 (8)
- January 2025 (7)
- December 2024 (4)
- September 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (4)
- April 2024 (2)
- March 2024 (5)
- January 2024 (4)
- February 2023 (1)
- January 2023 (2)
- November 2022 (2)
- October 2022 (1)
- September 2022 (5)
- August 2022 (6)
- July 2022 (7)
- June 2022 (8)
- May 2022 (5)
- April 2022 (1)
- March 2022 (3)
- February 2022 (5)
- January 2022 (4)
- December 2021 (6)
- November 2021 (8)
- October 2021 (8)
- September 2021 (8)
- August 2021 (8)
- July 2021 (9)
- June 2021 (8)
- May 2021 (7)
- April 2021 (11)
- March 2021 (12)
- February 2021 (3)
- January 2021 (3)
- December 2020 (3)
- November 2020 (9)
- October 2020 (7)
- September 2020 (17)
- August 2020 (1)
- July 2020 (3)
- June 2020 (1)
- May 2020 (2)
- April 2020 (3)
- March 2020 (20)
- February 2020 (5)
- January 2020 (2)
- December 2019 (12)
- November 2019 (12)
- October 2019 (19)
- September 2019 (17)
- August 2019 (10)

![[Swift 6.2] Raw Identifiers - Đặt tên hàm có dấu cách, tại sao không? feature_bg_swift_04](https://fxstudio.dev/wp-content/uploads/2019/11/feature_bg_swift_04.jpg)







