RAG Reranker Hoạt Động Thực Sự Như Thế Nào? Câu Trả Lời Thành Thật Mà Hầu Hết Kỹ Sư Dữ Liệu Sẽ Không Nói Cho Bạn
Bài viết này vén màn cơ chế hoạt động thực sự của một reranker trong hệ thống RAG, đi sâu từ kiến trúc cross-encoder đến những gì mô hình thực sự học được: sự cộng hưởng từ khóa chứ không phải khả năng hiểu ngôn ngữ. Từ đó, chúng ta sẽ thấy rõ ba hệ quả quan trọng cho kiến trúc RAG doanh nghiệp, cùng những tình huống cụ thể nên dùng hay nên thay thế reranker bằng các giải pháp rẻ hơn và minh bạch hơn.

RAG Reranker Hoạt Động Thực Sự Như Thế Nào? Câu Trả Lời Thành Thật Mà Hầu Hết Kỹ Sư Dữ Liệu Sẽ Không Nói Cho Bạn
Khi khâu truy xuất trong hệ thống RAG gây thất vọng, lời khuyên phổ biến nhất mà các kỹ sư AI nhận được là "hãy thêm một bộ reranker". Nhưng nếu hỏi tại sao nó hoạt động, câu trả lời thường dừng ở mức kiến trúc như cross-encoder hay attention chung, và không ai nói rõ mô hình thực sự đã học được điều gì.
Bài viết này sẽ đưa ra câu trả lời thành thật, có thể giải thích cho đối tác kinh doanh mà không cần dùng những thuật ngữ mơ hồ. Thực chất, reranker không hề "thông minh" hơn bước embedding bên dưới nó. Nó chạy cùng một cơ chế (liên kết từ khóa thống kê từ dữ liệu huấn luyện), chỉ khác ở điều kiện đầu vào (trên cặp truy vấn-đoạn văn thay vì từng văn bản riêng lẻ). Hiểu được điều này, câu hỏi "khi nào nên dùng reranker" sẽ không còn là "thêm vì tutorial làm vậy" mà là "chỉ thêm khi sự đánh đổi cụ thể này đáng để trả giá".
Các kỹ sư dữ liệu thường nói gì và tại sao điều đó là chưa đủ
Hỏi ba kỹ sư dữ liệu về chức năng của một reranker, bạn sẽ nhận được ba câu trả lời khác nhau, đại khái là:
- "Nó là một cross-encoder. Nó chấm điểm cặp truy vấn-đoạn văn cùng nhau và cho ra một điểm số liên quan." Về mặt kỹ thuật, điều này đúng, nhưng các từ "cross-encoder" và "liên quan" đang che giấu những gì mô hình thực sự học được.
- "Nó áp dụng attention lên cả hai văn bản, vì vậy nó thấy được sự tương tác giữa chúng." Đúng ở mức kiến trúc, nhưng kiến trúc không cho bạn biết mô hình đang làm gì với attention đó.
- "Nó được huấn luyện trên các nhãn liên quan, vì vậy nó học được đoạn văn nào trả lời câu hỏi nào." Rất gần, nhưng "học được đoạn văn nào trả lời" là động từ sai. Mô hình không học để trả lời. Nó học những token nào xuất hiện cùng nhau.
Không có câu trả lời nào trong ba câu trên là sai. Tất cả đều thiếu sót theo một cách quan trọng khi bạn phải quyết định có nên giữ reranker trong pipeline của mình hay không, có nên fine-tune nó trên kho dữ liệu của bạn hay không, hoặc có nên thay thế nó bằng một thứ rẻ hơn không.
Điều gì thực sự xảy ra bên trong một reranker
Reranker là một loại transformer cụ thể, được huấn luyện trên một loại dữ liệu cụ thể, và tạo ra một loại số cụ thể. Mỗi mảnh ghép này đều quan trọng.
Kiến trúc: cross-encoder, không phải bi-encoder
Một bộ embedding (bi-encoder) đọc riêng truy vấn, tạo ra một vector. Đọc riêng một đoạn văn, tạo ra một vector. So sánh hai vector bằng cosine. Mỗi văn bản được nhúng độc lập và mô hình không bao giờ nhìn thấy chúng cùng nhau trong quá trình chấm điểm.
Một reranker (cross-encoder) đọc truy vấn và đoạn văn cùng nhau, như một đầu vào được nối: [CLS] query [SEP] passage [SEP]. Nó chạy attention kiểu BERT trên đầu vào chung, nơi mọi token có thể chú ý đến mọi token khác. Nó xuất ra một điểm số liên quan duy nhất.
Việc "đọc chúng cùng nhau" là toàn bộ sự khác biệt về kiến trúc. Bi-encoder: hai vector, một phép so sánh. Cross-encoder: một lượt truyền tới, một điểm số. Attention chung này là lý do tại sao reranker có vẻ thông minh hơn và tại sao nó chậm hơn 30 đến 100 lần cho mỗi truy vấn.
Dữ liệu huấn luyện: MS MARCO và họ hàng của nó
Reranker học cách chấm điểm từ đâu? Từ các cặp truy vấn-đoạn văn có nhãn liên quan do con người đánh giá. Bộ dữ liệu chuẩn là MS MARCO (Bajaj và cộng sự, 2016, một triệu truy vấn tìm kiếm Bing thực tế với mức độ liên quan được con người đánh giá). Các bộ khác bao gồm: Natural Questions (tìm kiếm Google + đoạn Wikipedia), BEIR (một bộ tổng hợp benchmark), TREC.
Mỗi ví dụ huấn luyện là một bộ ba: (truy vấn, đoạn văn, nhãn_liên_quan). Mô hình thấy hàng triệu ví dụ này, và trọng số của nó điều chỉnh để các cặp được gắn nhãn là liên quan có điểm cao hơn các cặp không liên quan.
Đó là tín hiệu học tập duy nhất. Mô hình không bao giờ được đưa ra một câu hỏi và yêu cầu soạn câu trả lời; nó được đưa ra các cặp, và nó tối ưu hóa để có một điểm số phân tách các cặp liên quan khỏi các cặp không liên quan.
Điều này đặt ra câu hỏi thành thật: mô hình thực sự học được gì từ dữ liệu huấn luyện?
Mô hình thực sự học điều gì: sự cộng hưởng từ khóa ở cấp độ cặp
Đây là cấp độ sâu hơn mà hiếm khi được giải thích. Mô hình nhìn vào hàng triệu bộ ba (truy vấn, đoạn văn, liên quan) và tự hỏi: những mẫu nào trong luồng token chung dự đoán được nhãn liên quan? Mẫu chiếm ưu thế không phải là "trả lời". Nó là việc các token truy vấn nào có xu hướng xuất hiện cùng với các token đoạn văn nào trong các cặp có mức độ liên quan cao.
Cụ thể, trong MS MARCO, truy vấn "how to cancel my subscription" được gắn nhãn liên quan với các đoạn văn chứa cancel, subscription, unsubscribe, terminate, end your membership. Hàng triệu ví dụ củng cố rằng khi truy vấn chứa cancel, các đoạn văn chứa terminate hoặc unsubscribe có xu hướng được gắn nhãn liên quan. Trọng số của reranker hấp thụ sự liên kết đó.
Vì vậy, reranker "thông minh" đang thực hiện việc liên kết từ khóa, ở cấp độ cặp truy vấn-đoạn văn. Nó là một bảng liên kết được học giữa các vùng token truy vấn và các vùng token đoạn văn, được ngụy trang thành một điểm số mạng nơ-ron.
Bộ embedding cũng làm điều tương tự, nhưng với từng văn bản độc lập. Reranker làm điều đó với điều kiện dựa trên cặp. Cùng một cơ chế, khác điều kiện.
Các tín hiệu bậc hai mà reranker cũng nắm bắt: các mẫu vị trí (một thuật ngữ xuất hiện sớm trong đoạn văn thường tương quan với mức độ liên quan), cấu trúc cú pháp (mối quan hệ chủ-động-tân liên kết token truy vấn với token đoạn văn), sự hiện diện của cụm từ định nghĩa ("X là Y"). Những điều này giúp ích, nhưng chúng là bậc hai; tín hiệu chiếm ưu thế là sự cộng hưởng từ khóa.
Tại sao khung này quan trọng: một khi bạn thấy cơ chế này, câu hỏi "liệu nó có hoạt động trên kho dữ liệu của tôi không?" đã có câu trả lời rõ ràng. Nếu từ vựng kho dữ liệu và từ vựng truy vấn của bạn giống MS MARCO (tiếng Anh tổng quát, các chủ đề web phổ biến), các liên kết đã học được chuyển giao và reranker có vẻ như có phép màu. Nếu từ vựng kho dữ liệu của bạn là chuyên ngành (hợp đồng bảo hiểm, hồ sơ y tế, hồ sơ quy định), các liên kết đã học không bao phủ lĩnh vực của bạn và reranker gánh chịu những thất bại ngoài từ vựng tương tự như bộ embedding bên dưới nó.
Kiến trúc Cross-Encoder và Bi-Encoder
Cơ chế được chứng minh: nơi reranker thắng, nơi nó chạm trần
Phần 2 đưa ra một tuyên bố: reranker là một bảng liên kết được học giữa ngôn ngữ câu hỏi và ngôn ngữ câu trả lời. Tuyên bố đó có thể kiểm chứng được. Lấy một số ứng viên, chấm điểm chúng bằng ba bộ embedding (MiniLM, ada-002, text-embedding-3-large) và ba cross-encoder (bge-base, bge-large, ms-marco-MiniLM) và đọc từng hàng.
Nơi nó thắng: câu trả lời không lặp lại câu hỏi
Hỏi "What is the maximum coverage amount?" với ba đoạn văn: câu trả lời ("Cover is capped at 50,000 euros per year"), một bản sao lặp lại các từ của câu hỏi mà không trả lời ("The maximum coverage amount can be found in the benefits schedule"), và một yếu tố gây nhiễu.
Mọi bộ embedding xếp hạng bản sao đầu tiên. Nó chia sẻ maximum, coverage, amount với câu hỏi, vì vậy vector của nó nằm gần. Câu trả lời hầu như không chia sẻ gì về mặt từ vựng, vì vậy nó đứng thứ hai hoặc thứ ba. Hai bge reranker lật ngược nó: chúng đọc câu hỏi và câu trả lời cùng nhau, nhận ra rằng một đoạn văn "capped at X per year" trả lời câu hỏi "maximum coverage amount" và nâng nó lên vị trí đầu tiên. Đây là công việc thực sự duy nhất của reranker, kết nối các từ của câu hỏi với các từ của câu trả lời.
Điều này không phải là một trường hợp cá biệt. Sự lật ngược tương tự cũng xảy ra với các sự kiện đơn giản.
Nơi nó chạm trần: từ vựng riêng của bạn
Bây giờ đến trường hợp quyết định câu hỏi doanh nghiệp. Hỏi "what's the rule on contractor overtime?" trong khi câu trả lời sử dụng thuật ngữ riêng của công ty, "non-employee labor compensated beyond 40h/week" và không bao giờ nhắc đến từ "contractor".
Câu trả lời không bao giờ nói "contractor", nó nói "non-employee labor". Mọi mô hình, cả embedder lẫn reranker, đều xếp hạng nó cuối cùng. Sự khớp bề mặt ("Contractors are paid on a per-project basis") thắng. Reranker không bao giờ thấy "contractor" ánh xạ tới "non-employee labor" trong MS MARCO, vì vậy bảng liên kết của nó không có mục cho nó. Cross-attention mà nó chạy là có thật, nhưng nó chỉ có thể kích hoạt trên các liên kết mà nó đã học, và liên kết này nó chưa bao giờ học.
So sánh hiệu suất Reranker với Embedding trên dữ liệu chuyên ngành
Để vượt qua bức tường đó, bạn phải biết câu trả lời từ trước
Giải pháp mà tài liệu đưa ra là fine-tuning: cung cấp cho reranker các bộ ba (câu hỏi, đoạn văn, liên quan) có nhãn từ chính lĩnh vực của bạn cho đến khi nó học được rằng "contractor" ánh xạ tới "non-employee labor". Nhưng hãy nhìn vào những gì việc gắn nhãn một trong những bộ ba đó đòi hỏi. Một người hiểu về lĩnh vực phải chỉ vào đoạn văn phù hợp và nói rằng đoạn này trả lời câu hỏi. Để chỉ vào nó, họ phải nhận ra rằng "non-employee labor beyond 40h/week" là những gì câu trả lời trông như thế nào. Sự nhận biết đó chính là các từ khóa của câu trả lời.
Vì vậy, nhãn huấn luyện và mục từ điển mang cùng một thông tin. Đối với câu hỏi "maximum coverage amount", việc gắn nhãn câu trả lời có nghĩa là biết câu trả lời chứa capped at, up to, một loại tiền tệ, per year. Viết từ điển chuyên gia có nghĩa là gõ chính xác điều đó: {capped at, up to, maximum, €, per year}. Trong trường hợp "contractor", việc gắn nhãn các cặp có nghĩa là biết rằng "contractor" bằng "non-employee labor" trong công ty này, và mục từ điển chỉ là một dòng đó.
Sự khác biệt là chi phí và hình thức. Reranker cần hàng trăm cặp được gắn nhãn để khái quát hóa ánh xạ một cách thống kê, một lần chạy huấn luyện lại, và nó vẫn là một hộp đen chấm điểm 0.83. Từ điển cần một dòng, hoạt động một cách xác định và hiển thị chính xác từ khóa khớp dưới sự kiểm toán. Nếu bạn đã biết câu trả lời đủ tốt để gắn nhãn dữ liệu, bạn đã biết các từ khóa câu trả lời, và việc viết chúng ra là con đường rẻ hơn, có thể kiểm toán. Việc học thống kê của reranker chỉ có giá trị khi ánh xạ quá rộng để liệt kê, đó là web mở, không phải một lĩnh vực doanh nghiệp bị giới hạn.
Tại sao câu trả lời này quan trọng trong doanh nghiệp
Ba hệ quả chảy ra từ câu trả lời thành thật, và mỗi hệ quả đều thay đổi một quyết định kiến trúc mà bạn có thể đã đưa ra mà không nhận ra.
Dấu vết kiểm toán mờ mịt
Điểm số liên quan 0.83 từ một reranker không thể biện hộ dưới sự giám sát. Một cơ quan quản lý hỏi "tại sao đoạn văn này được trả về?" sẽ nhận được "reranker cho nó 0.83" như một câu trả lời. Đó không phải là dấu vết kiểm toán. Đó là một hộp đen tạo ra một con số.
Trái ngược với bộ lọc từ khóa: đoạn văn được truy xuất chứa force majeure và pandemic. Tuyên bố đó có thể kiểm tra, phát lại và biện hộ. Nếu việc truy xuất sai, bạn có thể truy tìm từ khóa nào bị thiếu trong từ điển và thêm nó. Nếu reranker sai, bạn nhún vai nhìn điểm số và tiếp tục, hoặc bạn huấn luyện lại toàn bộ.
Đối với các trường hợp sử dụng doanh nghiệp nơi các quyết định truy xuất có hậu quả tuân thủ hoặc hợp đồng (bảo lãnh bảo hiểm, khám phá pháp lý, hồ sơ y tế, báo cáo quy định), sự mờ mịt không phải là một sự đánh đổi nhỏ; nó là một yếu tố loại trừ.
Chi phí là có thật
Cross-encoder chậm hơn 30 đến 100 lần cho mỗi truy vấn so với bi-encoder. Nếu bi-encoder của bạn chấm điểm 1000 ứng viên trong 20 ms, reranker chấm điểm cùng 1000 ứng viên trong 600 ms đến 2 giây. Trong thực tế, bạn không rerank 1000 ứng viên: bạn lấy top-20 hoặc top-50 từ bi-encoder và chỉ rerank những ứng viên đó, đưa độ trễ thêm vào trong khoảng 15 đến 100 ms, tùy thuộc vào độ sâu và mô hình.
Điều đó ổn ở khối lượng truy vấn thấp. Ở 100 truy vấn mỗi giây liên tục, chi phí reranker là một hạng mục vận hành thực sự: nhiều công suất GPU hơn, độ trễ p99 dài hơn, nhiều cơ sở hạ tầng hơn để duy trì. Giá trị nó thêm vào phải biện minh cho chi phí đó, và điều đó chỉ xảy ra khi các liên kết đã học của nó thực sự bao phủ từ vựng của bạn. Trên các kho dữ liệu doanh nghiệp ngoài lĩnh vực, nó thường không như vậy.
Khoảng trống từ vựng sẽ xuất hiện
Mọi chế độ thất bại được ghi nhận cho embeddings trên từ vựng doanh nghiệp ngoài lĩnh vực cũng áp dụng cho reranker, bởi vì nó được huấn luyện trên cùng một phân phối (tìm kiếm web tổng quát). Force majeure và act of God là tương đương trong hợp đồng bảo hiểm nhưng nằm trong các vùng khác nhau trong các liên kết đã học của reranker, bởi vì nó thấy chúng trong các ngữ cảnh huấn luyện khác nhau. Rescission hiếm khi xuất hiện trong MS MARCO. ShieldPro Elite hoàn toàn không có ở đó.
Fine-tuning reranker trên kho dữ liệu lĩnh vực của bạn có thể giúp ích, nhưng chỉ đến một mức độ nào đó. Bạn cần các cặp truy vấn-đoạn văn có nhãn từ lĩnh vực của bạn để fine-tune, điều mà các nhóm doanh nghiệp hiếm khi có. Và ngay cả một reranker được fine-tune cũng thừa hưởng cùng một cơ chế cơ bản: nó vẫn học các liên kết token, chỉ từ kho dữ liệu lĩnh vực nhỏ hơn của bạn, và số lượng ví dụ bạn có thể gắn nhãn hiếm khi đạt đến hàng triệu như MS MARCO cung cấp.
So sánh trực quan giữa liên kết từ khóa học được và từ điển chuyên gia
Nên làm gì khác đi, và khi nào nên giữ lại reranker
Với cơ chế và các hệ quả doanh nghiệp, câu hỏi trở thành: điều gì xứng đáng với vị trí của reranker trong pipeline của bạn?
Lựa chọn mặc định trong RAG doanh nghiệp (theo khuyến nghị của loạt bài): một từ điển từ khóa được quản lý bởi các chuyên gia lĩnh vực. Chuyên gia đã biết rằng force majeure bằng act of God trong hợp đồng này, rescission là thuật ngữ chính thức cho những gì người dùng gọi là "hủy bỏ", ShieldPro Elite là gói nhà ở cao cấp nhất. Mã hóa điều đó một lần trong một từ điển YAML có phiên bản và chạy truy xuất dựa trên từ khóa ở trên mang lại cho bạn:
- Truy xuất có thể kiểm toán (các từ khóa khớp có thể kiểm tra)
- Độ trễ thấp (không có LLM trong đường dẫn nóng, không có chi phí GPU)
- Độ bền qua các phiên bản mô hình (từ điển tồn tại lâu hơn mọi phiên bản reranker)
- Khả năng giải thích cho doanh nghiệp (họ có thể đọc từ điển)
Reranker xứng đáng có vị trí của nó trong bốn trường hợp cụ thể. Ba trường hợp đầu là vị trí runtime, trường hợp thứ tư thì không.
- Phân phối trong lĩnh vực. Từ vựng kho dữ liệu và từ vựng truy vấn của bạn thực sự giống MS MARCO (web tổng quát, tiếng Anh phổ biến, các chủ đề tần suất cao). FAQ người tiêu dùng, cổng dịch vụ công, trợ giúp thương mại điện tử. Các liên kết đã học của reranker chuyển giao. Sử dụng nó.
- Rerank ngữ nghĩa của top-K đã lọc từ khóa. Sau khi từ điển từ khóa lọc kho dữ liệu xuống 20 ứng viên, reranker có thể sắp xếp chúng theo mức độ liên quan ngữ cảnh. Đây là vai trò tương tự mà embeddings bi-encoder đảm nhận, và cross-encoder làm chính xác hơn với chi phí độ trễ thêm. Đáng giá khi top-K nhỏ và thứ tự quan trọng.
- Các kịch bản tuân thủ nơi điểm số của chính reranker là bằng chứng kiểm toán. Nếu khung tuân thủ của bạn yêu cầu "mô hình đã chấm điểm đoạn văn này trên ngưỡng X", điểm số là bằng chứng và reranker phù hợp với yêu cầu.
- Ngoại tuyến, để khám phá những gì nên có trong từ điển. Chạy reranker trên một mẫu các câu hỏi thực tế và đọc những gì nó hiển thị. Khi nó làm lộ ra một ánh xạ mà từ điển chưa có, bạn có một bí danh ứng viên. Một chuyên gia xác nhận nó hoặc loại bỏ nó, và chỉ dòng được xác nhận mới được đưa vào sản xuất. Mô hình làm việc tìm kiếm, chuyên gia quyết định, và những gì đến được sản xuất là dòng đã được xác nhận, không bao giờ là điểm số.
Trường hợp thứ tư là trường hợp đóng khung lại ba trường hợp còn lại. Cả hai con đường đều làm cùng một công việc: học trên kho dữ liệu của người khác, hoặc viết bởi những người biết các từ ngữ.
Bên ngoài bốn trường hợp đó, reranker chủ yếu thêm chi phí: ấn tượng trong demo, đắt đỏ trong sản xuất, mờ mịt dưới kiểm toán, và không thể bù đắp cho các liên kết đã học mà nó không có.
Một sự tương đương nằm bên dưới tất cả những điều này, và đáng để nói trong một dòng duy nhất. Một reranker là một bảng liên kết từ khóa mà ai đó khác đã huấn luyện trên kho dữ liệu của người khác. Viết từ điển của riêng bạn là cùng một công việc, được thực hiện bởi những người thực sự biết từ vựng, với một phần chi phí và ở dạng mà một kiểm toán viên có thể đọc được. Sự tương đương đó vẫn vô hình khi mô hình được coi như phép màu. Mở hộp ra, như Phần 2.3 đã làm, và sự lựa chọn tự nó hiện ra: sử dụng mô hình để tìm các liên kết ứng viên, sử dụng chuyên gia để xác nhận chúng, và để bảng đã được xác nhận là thứ mà sản xuất chạy trên.
Nguồn và đọc thêm
Tài liệu về reranker rất dày đặc và phần lớn lạc quan. Đọc nó dựa trên khung của bài viết này ("cross-encoder học liên kết từ khóa ở cấp độ cặp, không phải sự hiểu") sẽ hữu ích hơn là đọc nó như một sự tán thành vô điều kiện.
Cùng hướng với bài viết:
- Nogueira & Cho, Passage Re-ranking with BERT, 2019 (arXiv:1901.04085). Bài báo giới thiệu reranking cross-encoder với BERT và thiết lập mẫu mà hầu hết các reranker hiện tại tuân theo. Đọc thành thật về những gì mô hình học.
- Khattab & Zaharia, ColBERT, SIGIR 2020 (arXiv:2004.12832). Truy xuất tương tác muộn. Được thiết kế rõ ràng để bảo toàn tín hiệu ở cấp độ token mà cả embedder lẫn cross-encoder đều mất, đây là tín hiệu kiến trúc mạnh nhất cho thấy mẫu ở cấp độ token là điều thực sự quan trọng.
Góc nhìn khác, ngữ cảnh khác:
- Bajaj et al., MS MARCO, 2016 (arXiv:1611.09268). Dữ liệu huấn luyện định hình những gì hầu hết các reranker thương mại thực sự biết. Đáng để đọc lướt để thấy phân phối truy vấn và đoạn văn mà các liên kết của reranker đến từ đó.
- Muennighoff et al., MTEB: Massive Text Embedding Benchmark, EACL 2023 (arXiv:2210.07316). Bao gồm bảng xếp hạng reranker. Bảng xếp hạng được đo trên các benchmark trong phân phối, chính xác là trường hợp reranker trông có vẻ tốt. Nó nói ít hơn về những gì xảy ra trên kho dữ liệu doanh nghiệp ngoài lĩnh vực của bạn.

