Chris Collins

Areas / Work

Search and retrieval

Enterprise search, information retrieval, ranking, and content platforms.

Exploration ·

How web search works

Follow a query from the box you type it into to the ten blue links: how text becomes terms, how an inverted index stores and compresses them, how BM25 scores a match, how we know a ranking is any good, and how the whole thing is split across thousands of machines — with the tools running live between the paragraphs.

Search and retrieval

Tool ·

Click models workbench

Load a query and click log (or simulate one from known relevance and a known user), see CTR by rank, abandonment and reformulations, fit the click models of Chuklin, Markov & de Rijke — PBM, cascade, DCM, UBM, SDBN, DBN — checked against PyClick, correct for position bias with propensities from PBM or swap experiments, and compare interleaving with A/B testing.

Search and retrieval

Tool ·

Near-duplicate detection

Find near-duplicate documents: character or word shingles, exact Jaccard, seeded MinHash signatures, LSH banding with its S-curve and a (b, r) tuner, 64-bit SimHash with the permuted-table search, precision and recall against an exact similarity join, and clusters — 10,000+ documents in a Web Worker.

Search and retrievalData and event platforms

Tool ·

Postings lab

Inside an inverted index: build one from documents and look at docIDs, frequencies and positions; compress the postings with VByte, Elias γ/δ, Golomb/Rice, Simple-9/16, FOR and PForDelta blocks of 128, Lucene's PForUtil and Roaring bitmaps (bits per posting, bit by bit); intersect with skips and galloping; and step through MaxScore, WAND and Block-Max WAND against exhaustive BM25.

Search and retrieval

Tool ·

RAG chunking playground

Drop in text, Markdown, HTML or PDF and chunk it five ways — fixed token windows with overlap, sentences, LangChain's recursive splitter, Markdown headings and semantic breakpoints — see every boundary and overlap on the text, then compare BM25, embedding and hybrid retrieval across the chunkers with recall@k and MRR against passages you mark.

Applied AISearch and retrieval

Tool ·

Analyzer and inverted-index playground

Build an Elasticsearch analyzer from char filters, a tokenizer and token filters and watch the token stream change stage by stage — terms, positions, offsets, types and position lengths, drawn as a token graph — then index documents to see the postings, field-length norms and phrase/slop matching, and copy the _analyze request and index settings.

Search and retrieval

Tool ·

Elasticsearch, simulated

An animated, step-by-step Elasticsearch (and OpenSearch) cluster in your browser: murmur3 routing, primaries and replicas, the indexing buffer, translog, refresh, flush and segment merging inside every shard, query-then-fetch search, node failures, master elections, split brain and shard sizing — with guided scenarios and a REST console.

Search and retrievalData and event platforms

Tool ·

Query DSL builder and explainer

Build Elasticsearch and OpenSearch queries in a form or as JSON — each edits the other — and see them explained in plain English (query vs filter context, minimum_should_match, the Lucene query they become), linted for slow or surprising patterns, and run against a sample index in your browser with hits, scores, explanations, highlights and aggregations; optionally send them read-only to your own cluster.

Search and retrieval

Tool ·

Ranking metrics workbench

Paste TREC qrels and runs (or CSV) and get P@k, recall@k, MAP, MRR, nDCG@k with linear and exponential gain, ERR and R-precision per query — checked against trec_eval and gdeval — then compare two rankers with paired t, Wilcoxon, randomisation and bootstrap tests, and simulate team-draft interleaving.

Search and retrieval

Tool ·

Relevance and scoring explainer

See why documents rank where they do: BM25 term by term like Elasticsearch's _explain, with k1 and b sliders that re-rank live, classic TF-IDF side by side, multi-field strategies and boosts, function_score (field_value_factor, decay curves, a recency script), and hybrid lexical + vector ranking with reciprocal rank fusion or a normalised linear blend.

Search and retrieval

Tool ·

String matching and fuzzy search

Edit distances with the dynamic-programming table filled cell by cell (Levenshtein, OSA vs true Damerau, LCS, Hamming), Jaro–Winkler, Levenshtein automata as Lucene's FuzzyQuery builds them and walks the term dictionary, Soundex, Metaphone, Double Metaphone and NYSIIS, pg_trgm trigram similarity, and a Norvig spelling corrector.

Search and retrieval

Tool ·

Tokenizer explorer

Real tokenizers side by side in your browser — GPT-4/GPT-4o byte-level BPE (cl100k_base, o200k_base), BERT WordPiece, T5 SentencePiece Unigram and Llama 2 SentencePiece BPE with byte fallback — with coloured token boundaries and ids, UTF-8 bytes and split characters, BPE merges step by step, Unicode normalisation, cost per 1k tokens, the common pitfalls, and a tiny BPE you train yourself.

Applied AISearch and retrieval

Tool ·

Vector search, simulated

Approximate nearest-neighbour search you can watch: build and search HNSW layer by layer, train k-means and probe IVF cells, quantize with PQ, int8 and binary codes, compare L2, cosine and dot product, and benchmark recall against work and memory in a Web Worker.

Search and retrievalApplied AI