Files
papers/hanzo-multi-hop-retrieval/hanzo-multi-hop-retrieval.tex
zeekayandHanzo Dev b79b939f11 We are based in San Francisco
Every author block and the authorship standard said Los Angeles; Hanzo has
been in San Francisco since at least 2016. The five catalogue PDFs whose
sources changed are rebuilt so papers.hanzo.ai says so too.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-24 16:14:51 -07:00

101 lines
4.5 KiB
TeX

% Hops Do Not Fix Multi-Hop Retrieval
\documentclass[11pt]{article}
\usepackage{../shared/hanzocover}
\usepackage{amsmath, amssymb}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{enumitem}
\usepackage{array}
\usepackage{listings}
\input{../shared/lstlang}
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=black,citecolor=blue,urlcolor=blue}
\newcommand{\meas}{\textcolor{blue!60!black}{\small[measured]}}
\newcommand{\cited}{\textcolor{purple!70!black}{\small[cited]}}
\newcommand{\ph}{\textbf{XXX}}
\newcommand{\rQsingle}{\ph} \newcommand{\rQmulti}{\ph}
\newcommand{\rSearchMs}{\ph}
\newcommand{\rSallFive}{\ph} \newcommand{\rSallTen}{\ph}
\newcommand{\rSallTwenty}{\ph} \newcommand{\rSanyFive}{\ph}
\newcommand{\rSanyTen}{\ph} \newcommand{\rSanyTwenty}{\ph}
\newcommand{\rMallFive}{\ph} \newcommand{\rMallTen}{\ph}
\newcommand{\rMallTwenty}{\ph} \newcommand{\rManyFive}{\ph}
\newcommand{\rManyTen}{\ph} \newcommand{\rManyTwenty}{\ph}
\newcommand{\rPolSingleS}{\ph} \newcommand{\rPolSingleM}{\ph}
\newcommand{\rPolSingleMs}{\ph} \newcommand{\rPolPrfS}{\ph}
\newcommand{\rPolPrfM}{\ph} \newcommand{\rPolPrfMs}{\ph}
\newcommand{\rPolMultiS}{\ph} \newcommand{\rPolMultiM}{\ph}
\newcommand{\rPolMultiMs}{\ph} \newcommand{\rPolChainS}{\ph}
\newcommand{\rPolChainM}{\ph} \newcommand{\rPolChainMs}{\ph}
\newcommand{\rBestDelta}{\ph} \newcommand{\rWorstDelta}{\ph}
\newcommand{\rGoldAvg}{\ph} \newcommand{\rGoldMax}{\ph}
\newcommand{\rSpanSessions}{\ph}\newcommand{\rMedRank}{\ph}
\newcommand{\rMedWorst}{\ph} \newcommand{\rBeyondTwenty}{\ph}
\newcommand{\rBeyondHundred}{\ph}
\input{results-data}
\title{Hops Do Not Fix Multi-Hop Retrieval\\[0.3em]
{\large A Negative Result on Long-Horizon Conversational Memory,\\
and What the Failure Actually Is}}
\author{
Hanzo AI Research\thanks{Corresponding author: [email protected]} \\
\textit{Hanzo Industries Inc (Techstars '17)} \\
San Francisco, California \\
\texttt{https://hanzo.ai}
}
\date{Measurement pass: 2026-09-07 (LoCoMo, \texttt{zen-embedding-0.6b})}
\begin{document}
\hanzocoverpage
\maketitle
\begin{abstract}
Retrieval over a long conversation fails in a specific and reproducible way, and
the standard remedy does not work. On LoCoMo~\cite{locomo}, a dense retriever
answering \emph{single-hop} questions finds every required turn
\rSallTwenty{}\% of the time at $k{=}20$ \meas{}. On \emph{multi-hop} questions
the same retriever over the same index finds every required turn
\rMallTwenty{}\% of the time --- but finds \emph{at least one} of them
\rManyTwenty{}\% of the time, which is essentially the single-hop rate. The
retriever is not failing to understand the question. It reliably finds a
relevant turn and reliably misses the rest.
The textbook fix is to search more than once and let the first result inform the
second~\cite{rocchio,ircot}. We implemented four retrieval policies over one
index --- a single search, pseudo-relevance feedback, a union over neighbours of
the top hits, and a two-deep chain of those --- so that the only variable is the
policy. \textbf{None of them fixes it.} The best gained
\rBestDelta{}\,percentage points on multi-hop at double the latency; two were
\emph{worse} than a single search; and the one that gained on multi-hop lost
\rWorstDelta{}\,points on single-hop, so it is not a free choice either.
A diagnostic says why, and it is not subtle. Multi-hop questions need
\rGoldAvg{} gold turns on average (up to \rGoldMax{}), and
\textbf{\rSpanSessions{}\% of that evidence spans more than one conversation
session}. The median gold turn sits at rank \rMedRank{}; the median
\emph{worst} gold turn sits at rank \rMedWorst{}, beyond $k{=}20$ for
\rBeyondTwenty{}\% of questions and beyond $k{=}100$ for
\rBeyondHundred{}\%. Additional hops re-search the same similarity space, and a
turn that is far away in that space stays far no matter how many times it is
queried. The missing signal is not similarity and cannot be recovered by
spending more of it. It is \emph{linkage} --- which turns concern the same
entity across sessions --- and that is a structure to be built, not a search to
be repeated. We publish this because the negative result is the useful part: it
rules out the cheap fix and names the expensive one.
\end{abstract}
\input{sections/01-introduction}
\input{sections/02-setup}
\input{sections/03-baseline}
\input{sections/04-policies}
\input{sections/05-diagnostic}
\input{sections/06-implications}
\input{sections/07-limits}
\input{sections/99-conclusion}
\end{document}