Nếu đưa một bản tóm tắt pháp lý dài 300 trang hoặc một báo cáo thường niên đóng tập vào hầu hết các quy trình OCR, phần mềm sẽ âm thầm chia nhỏ nó thành từng đoạn. Trang một, xử lý, giải phóng bộ nhớ. Trang hai, xử lý, giải phóng bộ nhớ. Đến khi hệ thống chạm tới các phần phụ lục ở cuối, bất kỳ ngữ cảnh nào nó có thể thu thập được từ phần giới thiệu đều đã biến mất từ lâu. Các chú thích trở thành những phần "mồ côi". Các bảng biểu trải dài qua nhiều trang bị mất cấu trúc. Các tiêu đề tiếp nối qua các trang bị dán nhãn sai. Kết quả là một tệp văn bản được chắp vá mà con người phải tự tay lắp ghép lại.

Baidu cho rằng quy trình làm việc này về cơ bản là bị lỗi. Câu trả lời của họ là Unlimited OCR, một kiến trúc được thiết kế để nạp các tài liệu lớn, nhiều trang trong một lượt truyền xuôi (forward pass) duy nhất mà không gây ra sự bùng nổ bộ nhớ GPU như thường lệ. Bí quyết nằm ở một cơ chế chú ý (attention mechanism) mới, coi bộ nhớ ít giống như một ổ cứng mà giống như bộ nhớ làm việc của con người hơn: giữ tài liệu nguồn ngay trước mắt, nhớ những gì bạn vừa viết, và để những gì đã qua lùi xa dần.

Tại sao các tài liệu dài lại "hủy diệt" OCR tiêu chuẩn

Để hiểu được giải pháp, cần phải thấy được nơi các hệ thống OCR đầu-cuối (end-to-end) truyền thống gặp trục trặc.

Hầu hết các quy trình OCR hiện đại sử dụng một mô hình ngôn ngữ lớn làm bộ giải mã (decoder). Khi mô hình đọc một trang và tạo văn bản, nó lưu trữ các biểu diễn nội bộ gọi là KV cache—về cơ bản là một nhật ký chạy của các khóa (keys) và giá trị (values) giúp mô hình theo dõi những gì nó đã nói. Vấn đề là nhật ký này tăng trưởng tuyến tính theo mỗi dòng đầu ra mới. Xử lý mười trang, bộ nhớ đệm sẽ sâu mười trang. Xử lý một trăm trang, nó sẽ phình to lên tới hàng trăm nghìn token, ngốn sạch VRAM và làm tốc độ tạo văn bản chậm lại đáng kể.

Các kỹ sư đã đối phó với vấn đề này bằng cách... đơn giản là không đối phó. Họ cắt tài liệu thành từng trang riêng lẻ, chạy từng trang qua mô hình một cách độc lập và đặt lại KV cache sau mỗi bước. Cách này giúp hệ thống vẫn hoạt động, nhưng nó cũng tước đi của mô hình bất kỳ sợi dây liên kết liên tục nào. Một đoạn văn bắt đầu ở trang ba và kết thúc ở trang bốn sẽ bị chia cắt. Định dạng bảng xuyên trang bị tan rã. Các tham chiếu đến các phần trước đó trở thành các liên kết bị hỏng vì bộ giải mã không có bộ nhớ lưu trữ về những gì đã xảy ra trước đó. Mô hình không thực sự đang đọc tài liệu; nó chỉ đang thực hiện một loạt các thẻ ghi nhớ (flashcards) rời rạc.

Thủ thuật của con người: Reference Sliding Window Attention

Các nhà nghiên cứu của Baidu đã giải quyết vấn đề này bằng cách học hỏi từ nhận thức của con người. Hãy nghĩ về việc chép tay một đoạn văn từ một cuốn sách. Bạn không giữ mọi câu đã chép trước đó trong đầu. Bạn liếc nhìn nguồn, nhìn vào vài từ cuối cùng bạn vừa viết, và tiếp tục. Bộ nhớ làm việc của bạn rất nhỏ, nhưng vì văn bản nguồn vẫn mở ngay trước mắt, công việc đó diễn ra một cách dễ dàng.

Reference Sliding Window Attention, hay R-SWA, chính là sự cụ thể hóa chính xác trực giác này.

Về mặt kỹ thuật, KV cache trở thành một hàng đợi có độ dài cố định. Khi mô hình tạo ra một token mới, nó vẫn giữ được khả năng quan sát đầy đủ các "reference tokens"—các nhúng hình ảnh trực quan gốc và prompt ban đầu—nhưng nó chỉ nhìn lại 128 token cuối cùng mà chính nó đã tạo ra. Chỉ vậy thôi. Cho dù mô hình đang ở trang một hay trang năm mươi, mức chiếm dụng bộ nhớ của lịch sử đầu ra của chính nó vẫn được giữ cố định. Bộ nhớ đệm không tăng lên. Nó được tái sử dụng.

Đây là một