Repository navigation
Conversation
… multilingual prefixes
…ain vs experimental A/B workflow
kylerchin
marked this pull request as ready for review
November 11, 2026 20:34
…y compile A/B indexes
…fore country import
… skip allocations
… preflight its CLI
…ecessor regression
kylerchin
marked this pull request as draft
November 12, 2026 08:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Experiment
Compare pinned Cypress main's delta-varint token index against this branch's scalar Roaring-inspired hybrid index. Import complete Switzerland, Germany, France, United Kingdom and Italy extracts into one disposable Scylla database. The 184 multilingual CH/DE/FR queries stay fixed to measure corpus growth and competing matches; this is not a GB/IT query-quality benchmark.
The experiment retains canonical multilingual StringIds, FST lookup, rarest-first posting selection, fuzzy fallback and existing final ranking. Sparse containers use u16 arrays; dense containers use 8192-byte bitmaps. This custom implementation does not include upstream Roaring SIMD or run containers.
Intersections now filter the decoded anchor buffer in place and advance a forward container cursor for each probe, avoiding a second candidate vector and repeated top-level binary searches.
Cache protocol and diagnostics
After each variant's index compilation, flush and restart the disposable Scylla container, wait for CQL readiness, then start its query server. Preserve the database contents.
Record one first pass without warmup separately from two warmup cycles and eleven measured cycles. A Scylla restart resets process caches but leaves Linux page cache intact; compilation and mmap validation touch index pages. Adding countries increases corpus size but does not guarantee cold-disk lookups.
Report RSS, anonymous/file RSS and process high-water RSS. Archive smaps_rollup, fault counters, process I/O, host memory and Scylla snapshots at startup, after first pass and after measurement. Automatically summarize request phases and fallback counts in log-analysis.json.
Findings from the previous three-country run
Inspected run 43209312101, including the query logs and full observations:
Both variants had 598 fallback plans out of 2,392 logged plans, including warmup. Experimental logs attribute 10,475 ms to fallback bigram expansion, 6,464 ms to count-snapshot caching and 6,365 ms to cosine candidates. Scylla place fetches totalled 466 ms. Nested timers overlap and these totals are not isolated CPU profiles.
Compiler logs show 3,630,618 array containers versus only 55 bitmap containers: sparse-container headers impose substantial overhead. The format remains unchanged in this adjustment; the new measurements must decide whether its space/latency tradeoff is worthwhile.
Paper audit
See the experiment notes for encoding, audit details and reproducibility.
Validation
Run the A/B workflow on branch
bench/switzerland-open-geocode-ab. Keep this experimental until the expanded benchmark establishes acceptable latency, RSS and ranking parity.