5.12 Đo xem reranker có thực sự giúp không
Reranker là tầng dễ tưởng là có ích nhất, vì bạn nhìn vào top-5 sau khi rerank và thấy nó “trông hợp lý hơn”. Cảm giác đó không phải số đo. Mục này về cách đo tử tế.
Nền tảng metric đã có ở Phần 2 — Metrics; ở đây chỉ nói những gì riêng cho một tầng rerank.
Bốn số phải báo cùng nhau
Phần tiêu đề “Bốn số phải báo cùng nhau”Báo một số duy nhất (“nDCG@5 tăng lên 0,71”) là vô nghĩa vì không ai biết nó tăng từ đâu và trần ở đâu. Tối thiểu phải là bốn dòng:
| Dòng | Nghĩa | Vì sao bắt buộc |
|---|---|---|
recall@k của stage 1 | trần | Không có nó thì không biết reranker còn dư địa bao nhiêu (5.4) |
nDCG@5 trước rerank | mốc | Đây là baseline thật, không phải một cấu hình yếu dựng lên cho đẹp |
nDCG@5 sau rerank | kết quả | |
| latency p95 thêm vào | giá phải trả | Một tăng +3% mà thêm 400 ms có thể là lỗ |
Và luôn tách theo lớp truy vấn. Cẩm nang này chia 4 lớp (A lexical / B paraphrase / C multi-hop / D phủ định) vì một con số tổng che mất mọi thứ đáng biết:
| Lớp | Kỳ vọng hợp lý với một tầng rerank |
|---|---|
| A — lexical/exact | Gần như không tăng. BM25 đã đạt nDCG 0.971 (baseline đã đo). Reranker ở đây chỉ có thể làm hỏng |
| B — paraphrase | Chỗ dư địa lớn nhất. nDCG 0.456 là điểm đau thật |
| C — multi-hop | Tăng vừa, nhưng cần cả diversity, không chỉ relevance (5.11) |
| D — phủ định/abstention | Cẩn thận: retrieval đã 0.888. Reranker giúp ở đây chủ yếu qua điểm thấp đều → tín hiệu abstention (5.3) |
Dòng lớp A đáng nhìn hai lần. Trên các truy vấn mà lexical đã gần hoàn hảo, một
reranker chung chung thường kéo xuống: nó ưu tiên đoạn “đọc thấy hợp” hơn đoạn
chứa đúng mã lỗi E2003. Nếu bạn chỉ báo số tổng, mức sụt đó bị lớp B che đi.
Bẫy lớn nhất: đo trên thứ model đã học
Phần tiêu đề “Bẫy lớn nhất: đo trên thứ model đã học”Gần như mọi reranker công khai được huấn luyện trên MS MARCO (5.5). Rất nhiều leaderboard cũng đo trên MS MARCO hoặc các tập của BEIR mà một số model đã thấy trong lúc huấn luyện.
Nghĩa là: điểm cao trên leaderboard không nói gì về dữ liệu của bạn. Nó nói rằng model làm tốt trên tin tức, Wikipedia và Q&A tiếng Anh. Corpus của bạn có thể là tài liệu hỗ trợ nội bộ tiếng Việt, đầy mã lỗi và tên gói sản phẩm.
→ Cách duy nhất đáng tin: golden set của chính bạn. 20–50 truy vấn thật lấy từ log, gán nhãn tay, chia lớp. Cẩm nang này dùng 24 truy vấn — nhỏ, và nó thừa nhận điều đó (Phần 2 — 6. Ý nghĩa thống kê).
Golden set nhỏ: cái gì đo được, cái gì không
Phần tiêu đề “Golden set nhỏ: cái gì đo được, cái gì không”Với 24 truy vấn, một chênh lệch 2 điểm phần trăm ở nDCG không là tín hiệu. Cách xử lý đúng:
| Việc | Với n = 24 |
|---|---|
| So hai reranker khác nhau rõ rệt (Δ > 10%) | Đọc được |
| So hai reranker gần nhau (Δ ≈ 2%) | Không đọc được. Cần test thống kê và thường là cần thêm dữ liệu |
| Tìm truy vấn bị hỏng bởi reranker | Rất đọc được — và đây là giá trị lớn nhất của golden set nhỏ |
| Kết luận “model X tốt hơn model Y nói chung” | Không. Chỉ kết luận được trên corpus này |
Dòng thứ ba là cách dùng golden set nhỏ đúng nhất: đừng dùng nó để xếp hạng model, dùng nó để tìm hồi quy. Truy vấn nào rerank xong tệ hơn trước? Đọc từng cái một. Ba truy vấn đọc kỹ dạy nhiều hơn một con số trung bình.
Đo offline vs đo online
Phần tiêu đề “Đo offline vs đo online”| Offline (golden set) | Online (người dùng thật) | |
|---|---|---|
| Trả lời được | “thứ tự có đúng hơn không” | “người ta có dùng được hơn không” |
| Tốc độ | phút | ngày đến tuần |
| Chi phí | gần như 0 | rủi ro sản phẩm |
| Sai ở đâu | nhãn của bạn có thể sai/thiên lệch | tín hiệu click bị position bias |
| Dùng để | sàng lọc, chặn hồi quy, chọn k | quyết định cuối |
Position bias là lý do đừng đọc click log một cách hồn nhiên: người dùng click vào kết quả số 1 nhiều hơn số 5 kể cả khi số 5 tốt hơn, chỉ vì nó ở trên. Một tầng rerank mới sẽ luôn “trông có vẻ tốt hơn” theo CTR ở vị trí đầu. Cách chuẩn để so hai bộ xếp hạng trên lưu lượng thật là interleaving — trộn kết quả của hai hệ vào một danh sách duy nhất rồi xem người dùng chọn của bên nào — vì nó triệt tiêu phần lớn thiên lệch vị trí.
Thứ tự làm, cho một tầng rerank mới
Phần tiêu đề “Thứ tự làm, cho một tầng rerank mới”1. Đo recall@k stage 1. → nếu thấp: dừng, sửa retrieval (5.4)2. Đo nDCG@5 trước rerank. → mốc so sánh3. Chạy 2–3 reranker ứng viên trên golden set, tách theo lớp.4. Xem danh sách truy vấn BỊ TỆ HƠN. Đọc tay từng cái.5. Đo p95 latency ở k thật, trên hạ tầng thật (không phải trên máy bạn).6. Chốt (model, k, cách cắt) → ghim vào config kèm số đo (5.3).7. Bật cho 5% lưu lượng, so bằng interleaving hoặc A/B.8. Ghi lại phân phối điểm hôm bật. Đây là mốc để phát hiện trôi về sau (5.13).Bước 8 hay bị bỏ, và nó là bước rẻ nhất trong danh sách.
→ Nên áp dụng vào AI Agent: metric cần đưa lên dashboard không phải “nDCG sau rerank”
mà là khoảng cách giữa recall@k và nDCG@5. Khoảng cách đó co lại nghĩa là
reranker đang làm việc; nó rộng ra nghĩa là bạn đang trả tiền cho một tầng vô ích.