Bỏ qua để đến nội dung
Search & RAG

1.7 BM25 tính bằng tay

{d1, d2} rồi, giờ phải xếp thứ tự. BM25 là công thức làm việc đó. Ta tính thật.

N = 3 tài liệu avgdl = (7+8+5)/3 = 6.6667 k1 = 1.2 b = 0.75

Bước 1 — tính idf cho từng từ trong truy vấn. df = số tài liệu chứa từ đó. Từ càng ít tài liệu chứa thì càng đáng giá.

idf(t) = ln( 1 + (N − df + 0.5)/(df + 0.5) )
quên : df=1 -> ln(1 + 2.5/1.5) = 0.9808 <- hiếm, đáng giá nhất
mật : df=2 -> ln(1 + 1.5/2.5) = 0.4700
khẩu : df=2 -> ln(1 + 1.5/2.5) = 0.4700

Bước 2 — tính điểm từng tài liệu.

norm(d) = 1 − b + b·(dl/avgdl)
d1: 1 − 0.75 + 0.75·(7/6.6667) = 1.0375
d2: 1 − 0.75 + 0.75·(8/6.6667) = 1.1500
đóng góp = idf · tf·(k1+1) / ( tf + k1·norm )
d1: mật (tf=1): 0.4700 · 2.2/(1 + 1.2·1.0375) = 0.4606
khẩu(tf=1): 0.4606
------------------------------------------------ tổng = 0.9212
d2: quên(tf=1): 0.9808 · 2.2/(1 + 1.2·1.1500) = 0.9066
mật (tf=2): 0.4700 · 4.4/(2 + 1.38) = 0.6118
khẩu(tf=2): 0.6118
------------------------------------------------ tổng = 2.1303

Kết quả: d2 (2.130) > d1 (0.921) > d3 (0). Đúng như trực giác — d2 là tài liệu duy nhất nói về việc quên.

Ba điều cần đọc ra từ phép tính này:

  1. Từ hiếm thắng. quên một mình đóng góp 0.91, nhiều hơn cả mật+khẩu cộng lại.
  2. Nhắc 2 lần không gấp đôi. mật với tf=2 được 0.6118, không phải 2×0.4606=0.92. Đó là bão hoà tần suất, do k1 điều khiển.
  3. Tài liệu dài bị chiết khấu. d2 dài hơn nên norm lớn hơn, mẫu số lớn hơn, mỗi từ đóng góp ít hơn. Đó là b.

Muốn hiểu sâu hơn hai tham số này: Tầng 0. Muốn biết công thức này từ đâu ra — vì sao phần tf có tiệm cận, vì sao idf lại có số 0.5, và vì sao nó có thể âm: 3.4b.

Phần 1 — Nhập môn