haiku.rag/haiku_rag_slim/haiku/rag/client
Yiorgis Gozadinos 5de04b0108
ARM ONLY, NEVER MERGE: retrieval score first, RRF rank second
Merge-and-sort discards rank, so where raw scores tie exactly it falls back
to lancedb.databases declaration order. Rank and score are independent
discriminators, not the same information at different resolution: a
single-branch rank-0 candidate and a rank-2 candidate with two both-branch
candidates above it can carry the same score.

So keep score primary, which is what buys merge-and-sort its recall, and
resolve score ties by within-database position instead of by YAML order.
That prefers the candidate nothing in its own collection beat, which is
signal.

Measures whether merge-and-sort's order sensitivity at n=4 (1.49pp against
the tie-break's 0.56pp) is reducible without moving to continuous scores.

Claude-Session: https://claude.ai/code/session_01WhudUtZm6qqiuv8Y1sbwSc
2026-08-31 19:10:19 +03:00
..
__init__.py Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
agents.py Name the databases before the model runs 2026-08-27 17:07:41 +03:00
documents.py Name the database a write wrote to 2026-08-28 08:47:36 +03:00
downloads.py Delete comments that restate the line below them 2026-08-20 15:22:33 +03:00
exceptions.py typed UnsupportedSourceError replaces pipeline string-marker matching 2026-05-26 11:44:46 +03:00
processing.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
rebuild.py Repair an FTS index that covers no rows on write 2026-08-31 18:54:48 +03:00
scope.py Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
search.py ARM ONLY, NEVER MERGE: retrieval score first, RRF rank second 2026-08-31 19:10:19 +03:00
session.py Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
titles.py Extract title generation into client/titles.py 2026-04-24 14:42:53 +03:00