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

Phụ lục — Sổ tay công thức

Lexical — BM25 và họ hàng.

BM25 (3.4b):

score(d)=tidf(t)tf(k1+1)tf+k1 ⁣(1b+bdlavgdl)\mathrm{score}(d) = \sum_t \mathrm{idf}(t) \cdot \frac{tf\,(k_1+1)}{tf + k_1\!\left(1 - b + b\,\dfrac{dl}{avgdl}\right)}

IDF — bản Lucene, không bao giờ âm:

idf(t)=ln ⁣(1+Ndf+0.5df+0.5)\mathrm{idf}(t) = \ln\!\left(1 + \frac{N - \mathrm{df} + 0.5}{\mathrm{df} + 0.5}\right)

IDF bản gốc — âm khi df>N/2\mathrm{df} > N/2:

idf(t)=lnNdf+0.5df+0.5\mathrm{idf}(t) = \ln \frac{N - \mathrm{df} + 0.5}{\mathrm{df} + 0.5}

RSJ — trọng số Robertson/Spärck Jones, idf là trường hợp riêng của nó:

w(t)=ln(r+0.5)(NRdf+r+0.5)(dfr+0.5)(Rr+0.5)w(t) = \ln \frac{(r + 0.5)\,(N - R - \mathrm{df} + r + 0.5)}{(\mathrm{df} - r + 0.5)\,(R - r + 0.5)}

BM25F — nhiều field, gom trước bão hoà sau:

tf~(t)=svstfsBs,score=tidf(t)tf~k1+tf~\tilde{tf}(t) = \sum_s v_s \cdot \frac{tf_s}{B_s}, \qquad \mathrm{score} = \sum_t \mathrm{idf}(t) \cdot \frac{\tilde{tf}}{k_1 + \tilde{tf}}

Metrics và fusion.

nDCG@k (2.3):

nDCG@k=DCG@kIDCG@k,DCG@k=i=1k2reli1log2(i+1)\text{nDCG@}k = \frac{\text{DCG@}k}{\text{IDCG@}k}, \qquad \text{DCG@}k = \sum_{i=1}^{k} \frac{2^{\mathrm{rel}_i} - 1}{\log_2(i+1)}

RRF (4.tầng 2), k60k \approx 60:

RRF(d)=hH1k+rankh(d)\mathrm{RRF}(d) = \sum_{h \in \mathcal{H}} \frac{1}{k + \mathrm{rank}_h(d)}

MMR — cân giữa liên quan và đa dạng, SS là tập đã chọn:

argmaxd[λsim(q,d)(1λ)maxdSsim(d,d)]\arg\max_{d} \left[\, \lambda \cdot \mathrm{sim}(q,d) - (1-\lambda) \cdot \max_{d' \in S} \mathrm{sim}(d,d') \,\right]

Huấn luyện embedding.

InfoNCE (4.tầng 1):

L=12[CE ⁣(ZaZbTτ,diag)+CE ⁣(ZbZaTτ,diag)]L = \tfrac{1}{2}\left[ \mathrm{CE}\!\left(\frac{Z_a Z_b^{\mathsf{T}}}{\tau}, \mathrm{diag}\right) + \mathrm{CE}\!\left(\frac{Z_b Z_a^{\mathsf{T}}}{\tau}, \mathrm{diag}\right) \right]

Gradient qua chuẩn hoá L2 — với z=u/uz = u/\lVert u\rVert:

Lu=Lz(Lzz)zu\frac{\partial L}{\partial u} = \frac{\dfrac{\partial L}{\partial z} - \left(\dfrac{\partial L}{\partial z} \cdot z\right) z}{\lVert u \rVert}

Matryoshka — loss riêng cho từng tiền tố chiều:

L=kInfoNCE(normalize(u[:k]))L = \sum_k \mathrm{InfoNCE}\bigl(\mathrm{normalize}(u_{[:k]})\bigr)
Phụ lục