Hugging Face Blog

Một Bộ Chuyển Đổi, Hai Phương Thức: Ghi Chép Thực Tế từ Việc Xây Dựng và Vận Hành Bộ Xếp Hạng Đa Phương Thức

🕐 20/07/2026 07:32 📰 Hugging Face Blog ✅ Đã dịch sang tiếng Việt

Chúng tôi đã xây dựng LightOn-rerank, một mô hình 2B có khả năng xếp hạng lại cả đoạn văn bản và trang tài liệu, lý do tại sao chúng tôi không thể tận dụng các phương pháp tăng tốc thông thường từ xếp hạng lại văn bản, cùng một vài bất ngờ nhỏ trên đường đi!

Chúng tôi phát hành một LoRA Qwen3.5-2B có khả năng xếp hạng lại cả đoạn văn bản và hình ảnh trang tài liệu theo cài đặt listwise. Mô hình đạt 62,66 NDCG@10 trên ViDoRe V3, cải thiện 7 điểm nDCG so với giai đoạn đầu ColQwen2.5, dẫn đầu tất cả các bộ xếp hạng đa phương thức mở 2B mà chúng tôi đo lường, và duy trì tính cạnh tranh trên BEIR chỉ văn bản. Những phát hiện bất ngờ còn quan trọng hơn bảng xếp hạng: ở kích thước 2B, bộ mã hóa ViT, chứ không phải vòng lặp giải mã, là chi phí lớn nhất trên mỗi cửa sổ. Tất cả các phương pháp tăng tốc hoạt động bằng cách chia nhỏ so sánh listwise thành các tập con nhỏ hơn (lập lịch giải đấu, chấm điểm từng tài liệu độc lập) đều thất bại: mô hình xếp hạng bằng cách so sánh các ứng viên với nhau, và những thủ thuật đó loại bỏ sự so sánh. Điều thực sự hiệu quả, không có gì ngạc nhiên, là thu nhỏ tập ứng viên: xếp hạng lại top-20 ứng viên thay vì 100 giữ lại 85% mức cải thiện xếp hạng với số cửa sổ ít hơn 5 lần (top-10: 58% với số cửa sổ ít hơn 12 lần), đo trên toàn bộ benchmark. Cuối cùng, chúng tôi khám phá việc mở rộng quy mô công thức ở 0,8B và 4B và nhận thấy rằng, trong khi pointwise bão hòa theo kích thước, listwise vẫn tiếp tục mở rộng: ở 4B, nó đạt 64,69 NDCG@10 trên ViDoRe V3, vượt qua Qwen3-VL-Reranker-8B (64,23 trên giao thức của chúng tôi) với chỉ một nửa tham số.

🤗Mô hình: Bộ sưu tập LightOn-rerank

Các bộ xếp hạng đa phương thức mở rất hiếm một cách đáng ngạc nhiên. Các bộ xếp hạng văn bản thì có nhiều, nhưng đối với xếp hạng lại tài liệu trực quan, danh sách rất ngắn: MonoQwen2-VL-v0.1 của chúng tôi là bộ xếp hạng trực quan mở đầu tiên, và kể từ đó, về cơ bản chỉ có hai bộ khác được công bố (Qwen3-VL-Reranker và jina-reranker-m0). Nếu bạn đang xây dựng một pipeline truy xuất xử lý PDF, trang web và văn bản có cấu trúc, bạn hoặc phải xâu chuỗi hai bộ xếp hạng riêng biệt (một cho mỗi phương thức) hoặc chọn một mô hình lớn hơn và chấp nhận chi phí phục vụ.

Chúng tôi cho rằng có chỗ cho một bộ xếp hạng thống nhất nhỏ, xử lý tốt cả hai phương thức để hữu ích trong sản xuất. Bài viết này là phiên bản ghi chép thực địa về việc xây dựng một phiên bản kế nhiệm cho MonoQwen2-VL-v0.1: những gì thành công, những gì không, và những phần chúng tôi cho là đáng để mượn hoặc tranh luận.

Việc chọn huấn luyện một mô hình kết hợp duy nhất cho cả đầu vào văn bản và trang là một quyết định riêng biệt so với công thức và kích thước. Bộ xếp hạng trực quan trước đây của chúng tôi, MonoQwen2-VL-v0.1, là một LoRA trên Qwen2-VL-2B. Thiết lập LoRA hấp dẫn chính xác bởi vì một mô hình cơ sở đã triển khai có thể lưu trữ các adapter cho nhiều tác vụ (nhúng, xếp hạng lại) và chuyển đổi giữa chúng. Nhưng adapter đó chỉ bao phủ các trang tài liệu, vì vậy xử lý văn bản và hình ảnh có nghĩa là hai adapter cho cùng một tác vụ: các bộ xếp hạng riêng biệt hoặc một hợp nhất chuyên biệt, với định tuyến và đối chiếu điểm số bên trên. Hai LoRA cho một tác vụ phá vỡ mục đích của thiết lập. Vì vậy, chúng tôi đã huấn luyện một mô hình cơ sở + một adapter từ đầu đến cuối trên một batch hỗn hợp gồm đầu vào văn bản và trang. Chúng tôi nhận được những lợi ích mong đợi (một lần triển khai, không cần định tuyến, một thang điểm duy nhất), và

Hầu hết các nghiên cứu huấn luyện đa phương thức đều báo cáo rằng hai phương thức hỗ trợ lẫn nhau thay vì gây nhiễu. Thông tin chi tiết hơn có trong phần Kết quả.

Bộ xếp hạng lại (reranker) nhận truy vấn và các ứng viên hàng đầu từ bộ truy xuất giai đoạn đầu (BM25, bộ nhúng dày đặc) và sắp xếp lại chúng bằng một mô hình mạnh hơn. Mọi nội dung trong bài viết này đều xoay quanh sự tương phản giữa hai cách thực hiện điều đó:

Hầu hết các khám phá chúng tôi thực hiện chỉ có ý nghĩa trong bối cảnh các bộ xếp hạng lại đa phương thức lớp 2B khác đã làm khác đi như thế nào. Ba điểm tham chiếu:

Trước bất kỳ con số nào, hãy nói về quy trình. Chúng tôi gọi đây là "Endgame" vì hầu hết những khó khăn trong quá trình đánh giá đến từ các thiết lập không nhất quán giữa các bài báo và thẻ HF. Để các con số dưới đây có ý nghĩa, chúng tôi đã cố định một cấu hình và chạy mọi mô hình qua đó:

Mô hình cơ sở: Qwen/Qwen3.5-2B, vốn xử lý cả đầu vào văn bản và hình ảnh thông qua bộ giải mã chung và bộ mã hóa hình ảnh ViT.

So với ba điểm tham chiếu trên, chúng tôi đã đi theo một hướng khác trên mỗi trục. Xếp hạng theo danh sách (listwise) giống RankNexus, nhưng không có giáo viên LLM: vì dữ liệu huấn luyện của chúng tôi bao gồm các mẫu khó được khai thác (hard-negatives), chúng tôi sử dụng điểm số để suy ra thứ hạng chính xác của mỗi nhóm. Sinh (generative) giống RankZephyr nhỏ, nhưng đa phương thức và kết hợp thay vì chỉ văn bản. Và không có đầu chấm điểm theo từng điểm (pointwise scoring head), không giống như bộ phân loại của Qwen và MLP của Jina; lý do là phát hiện trung tâm của bài viết này: so sánh danh sách lớn các mẫu mạnh hơn so với chấm điểm riêng lẻ hoặc với danh sách nhỏ hơn, và chúng tôi sẽ phân tích sâu bên dưới.

Đối với cả văn bản và hình ảnh, quy trình khai thác mẫu khó tạo ra điểm số, có nghĩa là thứ tự hoán vị vàng (pos > neg_0 > neg_1 > neg_2) có thể được xây dựng trực tiếp từ siêu dữ liệu. Nói chính xác, bản thân điều này là một hình thức chưng cất (distillation), trái ngược với các phương pháp khác chưng cất điểm số của bộ mã hóa chéo cho danh sách, chúng tôi chưng cất thứ hạng và sử dụng trực tiếp bộ khai thác.

Cả hai công thức đều được huấn luyện trên cùng một mô hình cơ sở, kết hợp cho văn bản và hình ảnh, vì vậy mọi so sánh pointwise-vs-listwise trong bài viết này đều bắt đầu từ cùng trọng số và dữ liệu. Pointwise: mỗi ví dụ là một bộ ba (truy vấn, tài liệu, Có/Không), và mô hình học cách đặt khối lượng xác suất vào "Có" cho các cặp phù hợp. Generative listwise: mỗi ví dụ là một nhóm (truy vấn, [doc_1, doc_2, doc_3, doc_4]) với thứ tự khó đã biết; cả bốn tài liệu được đưa vào một prompt duy nhất và mô hình được huấn luyện với cross-entropy chỉ trên các token hoán vị (ListMLE, Xia et al. 2008).

Lựa chọn kiến trúc trung tâm cho mô hình của chúng tôi: bốn tài liệu phải chú ý lẫn nhau trong một lượt truyền xuôi duy nhất.

Hình ảnh được thay đổi kích thước thành 512×512 (vuông LANCZOS) tại thời điểm huấn luyện. Đây là chi tiết nhỏ nhất nhưng có hậu quả lớn nhất ở hạ nguồn: ở 512×512, mỗi trang trở thành ~256 token hình ảnh (patch 16, merge 2), vì vậy bốn trang vừa vặn trong ngân sách 2048 token hình ảnh cùng với prompt. Mô hình chỉ từng thấy đầu vào huấn luyện 512², với bất kỳ sự biến dạng tỷ lệ khung hình nào mà việc thay đổi kích thước vuông áp đặt lên một trang tài liệu.

Điều này lại xuất hiện trong phần quét độ phân giải bên dưới.

Toàn bộ siêu tham số (hạng LoRA, bộ tối ưu, bộ lập lịch, độ dài chuỗi) được trình bày trong Phụ lục.

Trong prompt dạng danh sách, cả bốn tài liệu cùng nằm trong một ngữ cảnh. Do đó, biểu diễn của mỗi tài liệu được tính toán trong khi chú ý đến truy vấn và ba ứng viên còn lại. Đây là ý nghĩa của chú ý chéo tài liệu: mô hình không bao giờ trả lời "tài liệu này có liên quan không?" trong chân không, mà trả lời "tài liệu này có tốt hơn các tài liệu khác không?". Phần này là bằng chứng cho thấy chính sự so sánh này, chứ không phải hàm mất mát dạng danh sách hay định dạng prompt, mới là nguồn gốc của chất lượng xếp hạng lại. Chúng tôi đã học được điều này hai lần: một lần theo cách rẻ, một lần theo cách đắt.

**Phiên bản Đắt.** Một lần chạy trước đây sử dụng hàm mất mát dạng danh sách: nhóm bốn tài liệu, softmax cross-entropy trên thứ hạng vàng, nhưng mỗi tài liệu vẫn được chấm điểm độc lập với lượt chạy forward riêng. Trên văn bản, điều này có vẻ tiến bộ, nhưng trên ViDoRe V3 lại đi lùi. NDCG@10 tổng thể là 51.86, thấp hơn khoảng 8.0 điểm so với baseline điểm đơn (59.87) và thấp hơn 3.7 điểm so với giai đoạn đầu tiên đang được xếp hạng lại (55.60). Nó thua baseline điểm đơn trên tất cả 16 phân vùng và thua cả trường hợp không xếp hạng lại trên 11/16 phân vùng, trong đó tiếng Pháp bị ảnh hưởng nặng nhất (−12.3). Cùng kho ngữ liệu, cùng pipeline khai thác, nhưng tín hiệu huấn luyện lại có nhiều thông tin hơn.

Lần lặp tiếp theo giữ nguyên hàm mất mát dạng danh sách nhưng đưa cả bốn tài liệu vào một prompt, để mô hình tạo ra một hoán vị dưới dạng một chuỗi giải mã duy nhất thay vì bốn điểm số độc lập. Điều này đã đảo ngược kết quả: 62.66, cao hơn +2.8 so với baseline điểm đơn, tức là một sự thay đổi 10.8 điểm NDCG chỉ nhờ vào ngữ cảnh chung, được đo lường trong cùng một giao thức. Việc bốn tài liệu nhìn thấy nhau trong lượt chạy forward chính là yếu tố giúp phục hồi và vượt qua con số của baseline điểm đơn.

**Phiên bản Rẻ.** Cửa sổ trượt là phần phiền phức khi phục vụ một mô hình dạng danh sách: 49 cửa sổ tuần tự cho mỗi truy vấn, kèm theo vòng lặp giải mã. Chấm điểm điểm đơn sẽ loại bỏ hoàn toàn vấn đề này và

📎 Nguồn gốc: Hugging Face Blog Xem bài gốc →