mirror of
https://github.com/hanzoai/papers.git
synced 2026-11-03 02:27:30 +00:00
87 lines
3.0 KiB
TeX
87 lines
3.0 KiB
TeX
\section{Hybrid Retrieval}
|
|
|
|
\label{sec:retrieval}
|
|
|
|
\subsection{Sparse Retrieval (BM25)}
|
|
|
|
We use BM25 with Okapi tuning ($k_1 = 1.2$, $b = 0.75$) as the sparse baseline:
|
|
\begin{equation}
|
|
\text{BM25}(q, d) = \sum_{t \in q} \text{IDF}(t) \cdot \frac{f(t, d) \cdot (k_1 + 1)}{f(t, d) + k_1 \cdot (1 - b + b \cdot |d| / \text{avgdl})},
|
|
\end{equation}
|
|
where $f(t, d)$ is the term frequency of $t$ in document $d$ and $\text{IDF}(t) = \log((N - n(t) + 0.5) / (n(t) + 0.5))$.
|
|
|
|
\subsection{Dense Retrieval}
|
|
|
|
We compute dense relevance using a bi-encoder architecture:
|
|
\begin{equation}
|
|
\text{Dense}(q, d) = \cos(\text{Enc}_q(q), \text{Enc}_d(d)),
|
|
\end{equation}
|
|
where $\text{Enc}_q$ and $\text{Enc}_d$ are the query and document encoders (shared-weight BGE-large, fine-tuned on MS MARCO with contrastive loss).
|
|
|
|
\subsection{Learned Fusion}
|
|
|
|
We combine sparse and dense scores via a learned fusion function:
|
|
\begin{equation}
|
|
s(q, d) = \alpha(q) \cdot \text{BM25}(q, d) + (1 - \alpha(q)) \cdot \text{Dense}(q, d),
|
|
\end{equation}
|
|
where $\alpha(q) \in [0, 1]$ is a query-dependent weight predicted by a small MLP:
|
|
\begin{equation}
|
|
\alpha(q) = \sigma(W_2 \cdot \text{ReLU}(W_1 \cdot [\bm{e}_q; f_q] + b_1) + b_2),
|
|
\end{equation}
|
|
where $\bm{e}_q$ is the query embedding, $f_q$ are handcrafted features (query length, entity count, term specificity), and $\sigma$ is the sigmoid function.
|
|
|
|
\begin{proposition}
|
|
The learned fusion weight $\alpha(q)$ converges to the Bayes-optimal weight under mild regularity conditions when trained with sufficient labeled data.
|
|
\end{proposition}
|
|
|
|
We train the fusion model on 500K query-document-relevance triples from MS MARCO, achieving the following results:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lcccc}
|
|
\toprule
|
|
\textbf{Method} & \textbf{NDCG@10} & \textbf{MRR@10} & \textbf{Recall@100} \\
|
|
\midrule
|
|
BM25 & 0.381 & 0.352 & 0.857 \\
|
|
Dense (BGE-large) & 0.423 & 0.391 & 0.891 \\
|
|
Fixed fusion ($\alpha = 0.5$) & 0.441 & 0.412 & 0.912 \\
|
|
RRF (reciprocal rank) & 0.448 & 0.418 & 0.908 \\
|
|
\textbf{Learned fusion} & \textbf{0.467} & \textbf{0.437} & \textbf{0.923} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{Retrieval performance on MS MARCO dev set.}
|
|
\label{tab:retrieval}
|
|
\end{table}
|
|
|
|
\subsection{Cross-Encoder Re-ranking}
|
|
|
|
The top-100 candidates from hybrid retrieval are re-ranked using a cross-encoder (fine-tuned DeBERTa-v3-large):
|
|
\begin{equation}
|
|
s_{\text{rerank}}(q, d) = \text{CrossEnc}([q; \text{[SEP]}; d]),
|
|
\end{equation}
|
|
achieving a further 8.2\% improvement in NDCG@10 at the cost of 45ms additional latency per query.
|
|
|
|
\subsection{BEIR Benchmark Results}
|
|
|
|
We evaluate on the BEIR benchmark~\cite{thakur2021beir} across 18 diverse datasets:
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\small
|
|
\begin{tabular}{lccc}
|
|
\toprule
|
|
\textbf{System} & \textbf{Avg. NDCG@10} & \textbf{Best on $k$/18} \\
|
|
\midrule
|
|
BM25 & 0.428 & 4 \\
|
|
ColBERTv2 & 0.497 & 3 \\
|
|
E5-Mistral & 0.512 & 4 \\
|
|
BGE-large & 0.489 & 2 \\
|
|
\textbf{Hanzo Hybrid} & \textbf{0.534} & \textbf{7} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\caption{BEIR benchmark results (average NDCG@10 across 18 datasets).}
|
|
\label{tab:beir}
|
|
\end{table}
|
|
|