Content analyzer

What is BM25 / retrieval simulation?

BM25 (Best Match 25, developed by Robertson & Spärck Jones, 1994) is the lexical ranking function at the core of production search indexes — including those used by AI answer engines. Seeklyn runs BM25 over your own passages for your target query, surfaces the top 5 ranked passages, and flags any passage with zero query-term overlap as an orphan — a passage that will never be retrieved, regardless of how well written it is.

The Retrieval Simulation panel in every Seeklyn content report shows BM25 ranks 1–5 and marks orphaned passages — run your page free at /dashboard/content.

What is BM25?

BM25 (Best Match 25, also called Okapi BM25) is a probabilistic lexical ranking function developed by Robertson and Spärck Jones in the 1990s. BM25 is still the default retrieval backbone in Elasticsearch, Solr, OpenSearch, and most production search infrastructure. BM25 scores a passage by counting query-term appearances with 2 corrections: term saturation (k1 = 1.2 dampening) so a term appearing 20 times does not outweigh 5 appearances proportionally, and length normalization (b = 0.75) so shorter passages do not automatically beat longer ones.

AI answer engines use BM25 or a close variant in their first-stage retrieval pass — the step that reduces millions of passages to a small candidate set before any reranking. A passage scoring zero on BM25 for a query never enters the candidate set and cannot be cited, regardless of quality or authority.

How does Seeklyn use BM25?

Seeklyn runs BM25 over your own page's passages — not the entire web — to simulate what a retrieval index would return for your target query. The top 5 passages (topK = 5) by BM25 score are ranked 1 to 5, with rank 1 the best match. Rank 1–5 passages are the most likely to enter an AI engine's candidate set and be considered for citation.

Seeklyn's simulation uses Robertson & Spärck Jones defaults: k1 = 1.2, b = 0.75. Tokenization lowercases and splits on non-word characters. Output is deterministic — identical inputs always produce identical ranks.

What is an orphan passage?

An orphan passage is any passage with a BM25 score of exactly 0 — zero query-term overlap with the target query. Orphans are never retrieved: if no word in the passage matches any word in the query, no BM25 score is computed and the passage never enters the candidate set for citation.

Seeklyn uses the zero-score definition of orphan (not "outside the top 5"), because the top-k list is only for display — the actual retrieval threshold is whether BM25 is nonzero. This definition is monotonic: adding query-relevant terms to a passage can only remove its orphan status, never create a new orphan elsewhere. A page with many orphan passages will score low on the Retrieval stage of the citation funnel, even if a few passages rank well.

BM25 outcomeWhat it meansSeeklyn label
Score > 0, rank 1Best query match among your passagesRank 1 (top of retrieval)
Score > 0, rank 2–5Strong match, in the display top 5Rank 2–5
Score > 0, rank > 5Has overlap but outside display top 5Shown without a rank badge
Score = 0Zero query-term overlap — never retrievedOrphan

Why does retrieval happen before citability?

Retrieval is the first gate in Seeklyn's 3-stage citation funnel: Retrieval → Citation → Overall. A passage must first be retrieved (nonzero BM25 score) before its citability matters. A beautifully structured 150-word passage with attributed facts scores 0 on Retrieval if it shares no words with the target query — the engine never sees it.

This is why Seeklyn separates the 2 stages. Retrieval failures (orphan passages, low BM25 ranks) are fixed by adding query-relevant terms; citability failures (no answer-first, no facts, hedged language) are fixed by restructuring the passage. The citation funnel shows both numbers side by side so you can see which problem you actually have.

Evidence:strongRobertson & Spärck Jones (BM25, 1994)

Frequently asked questions

Does a rank 1 passage guarantee a citation?

No. Rank 1 means your passage is the best BM25 match among your own passages for the query — it will be retrieved first. But citation also requires the passage to be quotable: self-contained, answer-first, with concrete facts. A rank 1 orphan-free passage with a citability score of 30 may still not be cited.

Why top 5 and not top 3 or top 10?

Seeklyn uses topK = 5 as the retrieval simulation depth, matching typical first-stage candidate set sizes in production IR systems. The top 5 are shown as ranked passages; passages outside that display window but with nonzero BM25 are not orphans — they still count toward Retrieval coverage.

What if my page has fewer than 5 passages?

Seeklyn ranks all available passages. If your page produces 3 passages after chunking, the top 3 are shown. The topK display truncates at the actual passage count, so a short page can still score well on Retrieval as long as all passages have query-term overlap.

Can I improve BM25 rank without keyword stuffing?

Yes — the fix is adding the query term naturally once in passages that lack it, not repeating it. BM25 term frequency saturates quickly (k1 = 1.2 dampening), so the marginal value of a 10th repetition is tiny and Seeklyn flags it as KEYWORD_STUFFING (evidence: weak) if density exceeds natural thresholds.

Run it on your own page — free.

No signup, no card. Score your headlines and passages against the same rules this page explains.