BM25
Định nghĩa
BM25 là thuật toán sparse retrieval dùng overlap từ khóa để xếp hạng document theo mức liên quan với query. Nó thường được dùng như baseline mạnh cho search và Question Answering pipeline.
Cách hiểu bằng lời của tôi
BM25 giống một phiên bản thông minh hơn của keyword search. Một document được điểm cao nếu chứa các từ quan trọng trong query, nhưng điểm không tăng vô hạn khi một từ lặp lại quá nhiều và cũng được điều chỉnh theo độ dài document.
query terms
-> tìm document chứa các term đó
-> tăng điểm nếu term hiếm và match tốt
-> giảm thiên vị document quá dài
-> trả về top-k passages cho [[Reader]]Công thức trực giác
Một dạng điểm BM25 cho document D và query Q:
score(D, Q) = sum IDF(q_i) * (f(q_i, D) * (k1 + 1))
/ (f(q_i, D) + k1 * (1 - b + b * |D| / avgdl))Thành phần
q_i: term trong query.f(q_i, D): số lần termq_ixuất hiện trong documentD.IDF(q_i): độ hiếm của term trong corpus; term hiếm thường có trọng số cao hơn.|D|: độ dài document.avgdl: độ dài document trung bình trong corpus.k1: điều khiển mức bão hòa của term frequency.b: điều khiển mức normalize theo độ dài document.
Trực giác
- Term hiếm quan trọng hơn term phổ biến: từ xuất hiện ở ít document giúp phân biệt kết quả tốt hơn.
- Lặp từ có lợi nhưng bão hòa: term xuất hiện nhiều lần làm tăng điểm, nhưng tăng chậm dần.
- Document quá dài không tự nhiên được lợi: length normalization giảm thiên vị do document dài chứa nhiều từ hơn.
Khi áp dụng
- Dùng làm retriever nhanh và dễ debug trong Using Haystack to Build a QA Pipeline.
- Dùng làm baseline trước khi thử dense retriever hoặc Semantic Search.
- Hợp khi query và document có overlap từ khóa rõ.
- Kém hơn dense retrieval khi query dùng từ khác nhưng cùng nghĩa với document.
Điểm cần cẩn thận
- BM25 không thật sự hiểu nghĩa; nó chủ yếu dựa vào matching lexical.
- Tiền xử lý text như lowercase, tokenization, stop words và stemming có thể ảnh hưởng mạnh đến kết quả.
- Với QA pipeline, BM25 tốt nghĩa là passage chứa đáp án có mặt trong top-k; reader vẫn phải trích answer đúng.
Câu hỏi review
- Vì sao BM25 được xem là sparse retrieval?
- IDF giúp BM25 tránh lỗi gì?
- Vì sao term frequency trong BM25 cần bão hòa?
- BM25 yếu hơn dense retrieval trong tình huống nào?
Gợi ý trả lời câu hỏi review
- Vì nó dựa trên các term rời rạc và overlap từ khóa, không biểu diễn document bằng dense vector ngữ nghĩa.
- Nó giảm trọng số của từ quá phổ biến và tăng trọng số của từ phân biệt tốt hơn.
- Vì một từ lặp lại nhiều lần không nên làm điểm tăng tuyến tính vô hạn.
- Khi query và document diễn đạt cùng nghĩa bằng từ khác nhau, hoặc cần hiểu paraphrase/semantic similarity.