Sheron Yang

Building something fun

    Inline-GroC: Disk-Resident Learned Sparse Retrieval via Inline Postings and Global Ranking of Clusters

    *Click here to see project details.

    As a software development engineer intern at Amazon Web Services, I designed and implemented Inline-GroC, a retrieval engine that serves learned sparse indexes from disk instead of RAM. SEISMIC, the state of the art for learned sparse retrieval, answers queries in under a millisecond at high recall, but it keeps a full copy of every document vector in memory for exact scoring. Moving that copy to disk saves the memory but pushes latency to tens of milliseconds, because scoring a block now takes many random reads. On NVMe drives, latency follows the number of random reads rather than the bytes moved, so the goal was to issue fewer reads, not to load less data.

    Inline-GroC combines two ideas. An inline posting layout stores each document's full vector inside every block that contains it, so scoring a block takes one contiguous read no matter how many documents it holds. Global ranking of clusters (GroC) then replaces SEISMIC's threshold-based traversal, where each read depends on the scores computed before it. GroC scores every candidate block summary up front and keeps the global top K', so the whole read set is known before the first read. These reads are independent, so they can be deduplicated, sorted by offset, and submitted together as one asynchronous batch. I built the engine in Rust, with an asynchronous I/O stack on Linux AIO and page-aligned O_DIRECT buffers, plus a benchmarking framework to separate hardware bottlenecks from software ones.

    Reading one block at a time, Inline-GroC is 14.5–18.7× faster than disk-resident SEISMIC at matched recall on MS MARCO v1 (8.8 million documents, encoded with SPLADE), cutting latency from 34.3 ms to 1.83 ms at 88% recall and from 110 ms to 7.63 ms at 96%. Batching the reads lowers latency a further 3.7–5.6× with identical results, and throughput scales 21× from 1 to 48 threads, reaching 6,834 queries per second at about 92% recall. An ablation study showed that the layout provides most of the gain (8.7–15.2×), cutting reads 14–20× while moving only about 3× the bytes. The same design gains only 1.41–1.84× in RAM, since the access it removes costs about 550× more on disk than in memory. Inline-GroC was also faster than DiskANN and SPANN at every recall from 88% to 96% (each measured against its own encoder), and 3.5–3.7× faster than DiskANN with each system at its best configuration. The margin over SEISMIC reproduced on Natural Questions and under E-SPLADE, and at 96% recall nDCG@10 stayed within 0.008 of exact full-collection scoring on every collection and encoder we tested.

    At 138 million documents on MS MARCO v2, a collection 15.65× larger, latency grows only about 3×. Even with SEISMIC on the same inline layout, the batched engine's advantage widens from 4.2–8.9× on v1 to 5.7–14.3×, and its p99 latency is 18–58× lower. The main costs are space and memory. Inlining takes 9.6× the storage of the forward index on v1 and reaches 587.58 GB on v2, with about 31 GB resident in memory, though removing the page padding recovers 31.2% of that disk space for 1.9–2.6% more latency. The latency results are cold-disk, single-query measurements on a local NVMe drive, and the design only pays off when an index cannot stay in RAM.

    Adaptive Momentum–Reversal Allocation: A Rigor-First Backtesting Framework

    *Click here to see project details.

    A small trial towards statistical arbitrage. I tested whether a regime-aware allocator over two classic signals: 12-1 momentum and short-term reversal, beats simple baselines out-of-sample on point-in-time, survivorship-bias-free US equities, prioritizing reproducibility, matched comparison, and honest significance over headline returns. The codebase is structured as modular LEAN algorithms computing both factors from one shared 252-bar rolling window, with every allocation rule behind a single extensibility hook and every research lever exposed as a named constant. The results show that volatility-scaling lifted the trend leg's Sharpe from 0.27 to 0.40, an anti-correlated reversal leg halved drawdown, naive return-timing whipsawed and failed, and the overall edge deflates to suggestive-but-not-conclusive over 26 years. I called to stop the model before over-fitting and decides that there are more things I need to learn before I do deeper investigations.

    NLP for Readability Assessment: Out-of-Sample Text Difficulty Prediction

    *Click here to see project details.

    I led a four-person team extending the CommonLit Readability Prize winning solution into a system that predicts text difficulty out-of-sample. We built a evaluation pipeline before training any models, using held-out corpora, rank-based metrics, three-seed experiments, and bootstrap confidence intervals. A config-driven framework with automated checks and 34 pytest tests made experiments reproducible and easy to compare. Our results challenged several initial assumptions. Pseudo-labeling showed no out-of-sample benefit, while adding one human-labeled corpus delivered 4–11× the gains of any architecture change. Traditional readability formulas hurt as training features but improved predictions through rank aggregation. Our largest improvement came from 20,000 Simple/standard Wikipedia article pairs and a group-masked pairwise-ranking objective, raising held-out Spearman correlation from 0.446 to 0.594 while reducing variance sixfold. Follow-up experiments showed the gains came entirely from better cross-document ranking. We also diagnosed a DeBERTa-v3 NaN failure and audited a silent text-windowing bug. The final system beat traditional readability baselines across all three evaluations, achieving Spearman correlations of 0.89 vs. 0.49 in-corpus, and 0.59 vs. 0.40 and 0.845 vs. 0.79 cross-corpus.

    Filtered Vector Search at 100M Scale: Contributions to BigFANN (PVLDB 2026)

    *Click here to see the published paper.

    As an undergraduate researcher at MIT CSAIL, I contributed to BigFANN (PVLDB 2026), a filtered vector search framework that combines a hybrid graph index with join-free filtering. The graph balances label-specific edges that preserve connectivity within each filter and shared edges that reduce memory overhead, while join-free filtering avoids expensive candidate merging for double-filter queries. Across six datasets of up to 100 million vectors, BigFANN achieved up to 786× higher throughput than UNG and 4× over ParlayIVF2 at comparable recall. I led extensive experiments on NSF ACCESS computing resources at Texas A&M HPRC, studying graph configurations, memory–recall tradeoffs, query selectivity, and different label distributions. Our tuned index handled 100 million vectors within 64 GB at over 95% recall, while ParlayIVF2 remained below 80% under the same memory constraint. I also profiled query bottlenecks, showing how eliminating candidate sorting reduced distance computations from 3,574 to 2,356 per query, and tuned baselines for fair comparisons. On the C++ backend, I optimized memory-intensive operations using software prefetching, SIMD filtering, vectorized distance kernels, efficient top-k maintenance, and memory-bounded bitsets.

    WHACK 2025: Wellesley College Annual Hackathon's Official Website

    *Click here to see the archive.

    I led a team of four to create a hackathon website — check it out!

    Unraveling the Mysteries of the Female Brain: Sex Patterns in ADHD

    *Click here to see project details.

    The WiDS Datathon 2025 was my first hands-on experience with data science. Working with a team, I analyzed fMRI data from over 1,000 children to investigate how biological sex relates to ADHD and to predict sex and ADHD diagnosis. We extracted statistical features, used PCA for dimensionality reduction, and built and compared CNNs, random forests, and logistic regression models in Python and R. The project introduced me to the challenges of working with high-dimensional biological data and sparked my interest in applying machine learning to real-world research problems.

    EcoBear, a Web Widget for Sustainability and Green Development

    *Click here to see project details.

    My friends and I built EcoBear during a two-day hackathon to make sustainable shopping easier and more engaging. We noticed that many shoppers wanted to make environmentally conscious choices but struggled with unclear product information and greenwashing. EcoBear was a gamified web widget that integrated into shopping sites, automatically rated products using color-coded sustainability labels, and let users explore the certifications and criteria behind each rating. We added rewards, badges, and a friendly polar bear mascot to encourage greener choices without making shopping feel like a chore. Through user testing, we found that environmentally conscious shoppers enjoyed the rewards, while casual shoppers preferred clear alternatives and practical incentives. This was my first experience that involved real user feedback and frontend design.

    How Will the Hog Futures Smooth Price Fluctuations in China’s Pig Market

    *Click here to see the published paper.

    An early research paper that reflects my initial approach to research, with methods and conclusions that may no longer hold up to current standards.

    The Impact of Subsidy on EV Adoption: Evidence from China

    *Click here to see project details.

    An early research paper that reflects my initial approach to research, with methods and conclusions that may no longer hold up to current standards.