
Reranker không phải là phép màu: Khi lớp Cross-Encoder xứng đáng với chi phí bỏ ra
Tình báo Tài liệu Doanh nghiệp [Tập 1 Số 2bis] Tại sao việc xếp chồng một reranker lên trên một hệ thống truy xuất yếu không thể cứu vãn nó, những gì cross-encoder thực sự khắc phục so với những gì chúng không thể, và quan điểm biên tập của loạt bài này. Bài viết Rerankers cũng không phải là phép thuật: Khi lớp Cross-Encoder đáng giá chi phí xuất hiện lần đầu trên Towards Data Science.
Ứng dụng LLM
Reranker cũng không phải là phép màu: Khi lớp Cross-Encoder xứng đáng với chi phí bỏ ra
Enterprise Document Intelligence [Tập 1 #2bis] Tại sao việc xếp chồng một reranker lên trên một hệ thống truy xuất yếu kém không thể cứu vãn nó, những gì cross-encoder thực sự khắc phục được và những gì không, và quan điểm biên tập của loạt bài này.
Angela Shi
Ngày 31/5/2026
20 phút đọc
Chia sẻ
Hình ảnh của Rushikesh Gaikwad qua Unsplash
Thiết lập tương tự như bài viết về embedding. Hai tình huống.
Tình huống 1. Một nhóm đang xây dựng hệ thống RAG trên vài trăm hợp đồng đã đọc Bài viết 2. Embedding gặp lỗi với phủ định, với các định danh chính xác, với khoảng cách giữa câu hỏi và câu trả lời. Phản xạ đầu tiên của nhóm là điều mà tài liệu gợi ý: thêm một reranker. Cross-encoder, nhỏ hơn LLM, thông minh hơn cosine, đặt nó giữa embedding và LLM. Họ kết nối bge-reranker-base, gửi 100 kết quả hàng đầu từ giai đoạn embedding, giữ lại 10 kết quả hàng đầu. Một vài truy vấn bị lỗi hôm qua dường như hoạt động hôm nay. Nhóm được khuyến khích.
Tình huống 2. Hai tuần sau, mô hình hoạt động tương tự từ Bài viết 2 quay trở lại. Người dùng hỏi “liệt kê tất cả các điều khoản đề cập đến chấm dứt hợp đồng” và hệ thống trả về ba điều khoản “liên quan nhất”, chính xác là ba, được xếp hạng. Hợp đồng có mười một điều khoản. Người dùng hỏi “quy tắc hủy bỏ đối với người không phải là nhân viên là gì?” Reranker chưa bao giờ thấy thuật ngữ “non-employee labor” của công ty và xếp hạng một đoạn văn không liên quan lên trên cùng. Người dùng hỏi “có điều khoản nào KHÔNG đề cập đến bồi thường không?” Lỗi phủ định tương tự như trước; cross-encoder không nhìn thấy sự bổ sung logic nhiều hơn embedding. Trong khi đó, độ trễ hiện đã lên đến hàng trăm mili giây. Cross-encoder chạy tại thời điểm truy vấn trên mọi ứng viên và không có cách nào để tính toán trước. Tệ hơn: khi họ chạy so sánh song song với text-embedding-3-large mà không có reranker, chỉ riêng embedding thường khớp hoặc vượt trội so với ada-002 + bge-reranker-base.
Phễu truy xuất cổ điển trông giống như trong Bài viết 2. Độ tương đồng embedding giá rẻ ở phía dưới thu hẹp hàng triệu ứng viên xuống còn hàng nghìn. Một reranker cross-encoder tùy chọn ở giữa thu hẹp hàng nghìn xuống còn hàng chục. LLM hoàn thành trò chuyện ở trên đọc hàng chục kết quả. Reranker là lớp nằm giữa hai hằng số lớn trên thang chi phí và chất lượng. Biết được mỗi giai đoạn thực sự làm gì là điều khiến phễu hoạt động; mong đợi phép màu từ bất kỳ giai đoạn nào là cách các nhóm mất sáu tháng. Bài viết này kiểm tra gradient chi phí-hiệu suất một cách thực nghiệm: bốn mô hình embedding từ năm 2014 đến 2024, cộng với ba reranker cross-encoder có sẵn, được chấm điểm song song trên các trường hợp được liệt kê trong Bài viết 2. Kết quả đáng ngạc nhiên hơn những gì phễu gợi ý.
Bài viết này kiểm tra gradient chi phí-hiệu suất một cách thực nghiệm: bốn mô hình embedding từ năm 2014 đến 2024, cộng với ba reranker cross-encoder có sẵn, được chấm điểm song song trên các trường hợp được liệt kê trong Bài viết 2. Kết quả đáng ngạc nhiên hơn những gì phễu gợi ý.
Bảy mô hình được thử nghiệm, với URL chứng thực giấy phép của chúng (URL của trang mà tác giả mô hình tự tuyên bố giấy phép):
GloVe-avg (2014, vectơ từ 300 chiều): Apache 2.0, được tuyên bố trên thẻ mô hình HuggingFace.
all-MiniLM-L6-v2 (2021, 22 triệu tham số, 384 chiều): Apache 2.0, được tuyên bố trên thẻ mô hình HuggingFace.
text-embedding-ada-002 (OpenAI 2022, 1536 chiều): độc quyền; Điều khoản sử dụng của OpenAI.
text-embedding-3-large (OpenAI 2024, 3072 chiều): độc quyền; Điều khoản sử dụng của OpenAI.
bge-reranker-base (BAAI 2023, 278M tham số): Giấy phép MIT, được công bố trên thẻ mô hình HuggingFace.
bge-reranker-large (BAAI 2023, 560M tham số): Giấy phép MIT, được công bố trên thẻ mô hình HuggingFace.
cross-encoder/ms-marco-MiniLM-L-12-v2 (mô hình cơ sở lịch sử): Apache 2.0, được công bố trên thẻ mô hình HuggingFace.
from sentence_transformers import CrossEncoder
from openai import OpenAI
# Bi-encoder (giai đoạn nhúng từ Bài viết 2).
# Mỗi văn bản trở thành một vector ĐỘC LẬP. Cosine trong không gian vector.
client = OpenAI()
def cosine_score(query, passage):
v_q = client.embeddings.create(input=query, model="text-embedding-ada-002").data[0].embedding
v_p = client.embeddings.create(input=passage, model="text-embedding-ada-002").data[0].embedding
return dot(v_q, v_p) / (norm(v_q) * norm(v_p))
# Bộ sắp xếp lại Cross-encoder.
# Truy vấn và đoạn văn được MÃ HÓA CÙNG NHAU và được xử lý chung.
# Một lần chuyển tiếp cho mỗi cặp (truy vấn, đoạn văn). Trả về một điểm số liên quan duy nhất.
reranker = CrossEncoder("BAAI/bge-reranker-base")
def rerank_score(query, passage):
return reranker.predict([(query, passage)])[0]
Bài viết này là một phần trong chuỗi Entreprise Document Intelligence Tập 1, xây dựng hệ thống RAG (Retrieval Augmented Generation) cấp doanh nghiệp từng bước, từ một đường ống cơ sở đến kiến trúc quy mô lớn.
1. Bộ sắp xếp lại thực chất là gì
Trước các thử nghiệm thực nghiệm, cần có cái nhìn tổng quan về kiến trúc. Có hai lý do khiến điều này quan trọng: bộ sắp xếp lại là một đối tượng kỹ thuật thực tế với chi phí thực tế, và quan điểm biên tập mà chuỗi bài này bảo vệ chỉ có ý nghĩa khi vai trò cổ điển được đưa ra.
1.1 Độ dốc chi phí/độ chính xác
Ba giai đoạn, được sắp xếp theo chi phí trên mỗi truy vấn:
Độ tương đồng nhúng Bi-encoder. Một vector được tính toán trước cho mỗi tài liệu. Tại thời điểm truy vấn, mô hình mã hóa truy vấn một lần và chạy độ tương đồng cosine so với chỉ mục. Mất vài mili giây cho hàng triệu ứng viên. Rẻ và gần đúng.
Bộ sắp xếp lại Cross-encoder. Truy vấn và đoạn văn được mã hóa cùng nhau và được truyền qua một bộ biến đổi (transformer) xử lý cả hai. Đầu ra là một điểm số liên quan duy nhất cho mỗi cặp. Không thể tính toán trước vì truy vấn là một phần của đầu vào. Mất hàng chục mili giây cho mỗi cặp. Chi phí trung bình, độ chính xác trung bình.
LLM hoàn thành trò chuyện. Đọc một tập hợp ứng viên nhỏ và tạo ra một câu trả lời có cấu trúc. Hàng trăm mili giây, đô la cho mỗi triệu token. Đắt nhất, chính xác nhất.
Mỗi giai đoạn được biện minh bởi những gì nó có thể làm rẻ hơn giai đoạn tiếp theo. Nhúng không thể làm mọi thứ mà LLM có thể làm, nhưng chúng có thể chấm điểm một triệu ứng viên trong thời gian mà LLM đọc mười ứng viên.




Nguồn tin: Towards Data Science — Tác giả: angela shi. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.