haiku.rag/tests
Yiorgis Gozadinos f4bfc12293
ARM ONLY, NEVER MERGE: z-scored branch fusion
Hybrid without a reranker keeps each database's vector and FTS branches
apart and compares every candidate by per-branch z-score, summing both
branches for a chunk found in each. Databases are then compared by how
exceptional a hit is for them rather than by raw score, which is not
comparable across indexes.

Targets the measured ceiling on rank-and-score fusion: 73% of candidates at
n=4 and 84% at n=8 tie on both score and rank, so no key built from those
two can separate them and they fall to declaration order under every other
arm. Continuous keys should barely collide.

Implementation from the multi-fusion session; branch depth via
HAIKU_RAG_BRANCH_DEPTH, default 20.

Claude-Session: https://claude.ai/code/session_01WhudUtZm6qqiuv8Y1sbwSc
2026-08-31 19:10:22 +03:00
..
capabilities Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
cassettes Render collection identity only for multi-collection searches 2026-08-27 12:41:05 +03:00
chat Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
data
docker
ingester State what the code does, not what it replaced 2026-08-28 15:13:52 +03:00
multi_db ARM ONLY, NEVER MERGE: z-scored branch fusion 2026-08-31 19:10:22 +03:00
sandbox Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
sources Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
store Update lancedb to 0.37.1 2026-08-31 18:54:48 +03:00
tools Name the collection on a retrieved image, not only in the text 2026-08-28 12:02:16 +03:00
__init__.py
conftest.py State what the code does, not what it replaced 2026-08-28 15:13:52 +03:00
json_body_serializer.py Keep cross-encoder rerank scores apart when they saturate 2026-08-07 14:07:53 +03:00
services.py
test_app.py Add --full-citations to ask and analyze 2026-08-31 16:31:09 +03:00
test_ask_images.py
test_cascade_delete.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_chunk.py Repair an FTS index that covers no rows on write 2026-08-31 18:54:48 +03:00
test_chunker.py Reject unknown and out-of-range configuration values 2026-08-19 15:32:51 +03:00
test_cli.py Add --full-citations to ask and analyze 2026-08-31 16:31:09 +03:00
test_client.py Build the chunks FTS index on the first write instead of at table creation 2026-08-31 18:42:31 +03:00
test_client_analyze.py
test_config.py Honor configured vector metric during search 2026-08-31 21:38:00 +08:00
test_context.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_context_enhancement.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_converters.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_database_autocreate.py Drop the indirection around what a client covers 2026-08-26 13:34:09 +03:00
test_database_scope.py State what the code does, not what it replaced 2026-08-28 15:13:52 +03:00
test_docling_serve_client.py Wire providers.docling_serve.timeout through to the client 2026-08-19 13:30:45 +03:00
test_doctor.py Guard against an FTS index that covers no rows 2026-08-31 18:42:31 +03:00
test_document.py Load document blobs only when asked 2026-08-06 13:04:51 +03:00
test_download_models.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_duplicate_ingestion.py
test_embedder.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_embedder_config.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_enrichment_batching.py Stop the reranker fetch reading text it discards 2026-08-18 18:00:00 +03:00
test_filter.py Update lancedb to 0.37.1 2026-08-31 18:54:48 +03:00
test_info.py Finish the comment pass, and escape document fields everywhere Rich renders 2026-08-28 15:34:47 +03:00
test_inspector.py State what the code does, not what it replaced 2026-08-28 15:13:52 +03:00
test_lancedb_connection.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_logging.py
test_mcp.py Guard against an FTS index that covers no rows 2026-08-31 18:42:31 +03:00
test_pdf_attachments.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_pdf_concurrency.py
test_pdf_split.py
test_picture_description.py
test_picture_in_context.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_processing.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_reader.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_rebuild.py Repair an FTS index that covers no rows on write 2026-08-31 18:54:48 +03:00
test_reranker.py Accept a /v1 suffix on the vLLM reranker base_url 2026-08-28 15:46:42 +03:00
test_s3_integration.py State what the code does, not what it replaced 2026-08-28 15:13:52 +03:00
test_s3_source.py
test_search.py Build one reranker for the databases searched together 2026-08-27 17:07:41 +03:00
test_search_phases.py Resolve the search type once per search 2026-08-24 15:28:21 +03:00
test_settings.py Move ConfigMismatchError to the store exceptions module 2026-08-24 10:03:46 +03:00
test_telemetry.py
test_title_generation.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_uri.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_utils.py Add --full-citations to ask and analyze 2026-08-31 16:31:09 +03:00
test_vacuum_debounce.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_versioning.py Ask the session which database an operation works on 2026-08-25 09:28:20 +03:00