← All writing

Research · RAG evaluation

Ten copies are not ten sources.

I built a small provenance-RAG experiment around a simple failure: ten derivative pages can push the primary record out of the prompt. Root collapse made the score worse before richer metadata made it better.

Help build the corpus ↗

People use “dead internet” for a web full of bots, recycled posts, and AI-generated material. The part I wanted to test is narrower: a RAG system can retrieve ten pages descended from one claim and treat them as ten independent confirmations.

The original record can miss the context window by one rank. The answer may cite real pages and still get the question wrong because the source that supplied the missing context never reached the model.

Four derivative pages occupy the retrieval ranking while the primary specification is outside the context window.
Duplicate-heavy retrieval can fail before generation starts.

The experiment

I generated 60 fictional tasks across four retrieval failures: duplicate dilution, true repetition, conflicting source roots, and satire stripped of its context. Every category has development and held-out tasks. The generator alternates which side gets the lexical advantage, so a primary record does not win simply because it happens to use better query terms.

Each task asks a small answer policy to choose a stance after retrieval. The fixture isolates candidate selection, source weighting, and root-conflict handling, which are often blurred together under “provenance-aware RAG.”

PolicyHeld-out correct
Lexical top-k10 / 20
Root collapse5 / 20
Source weighted15 / 20
Metadata assisted20 / 20
Ablation chart: lexical top-k scores 10 of 20, root collapse 5 of 20, source weighted 15 of 20, and metadata assisted 20 of 20.
Held-out results from the 20-task synthetic test split.

The result I did not expect

Root collapse kept the highest-ranked item from each declared source root. I expected that to clean up duplicated evidence. It dropped the held-out score from 10/20 to 5/20.

The rule removes redundant copies, but it can also remove useful evidence or leave a tie that a simple answer policy cannot resolve. Diversity is a retrieval constraint. It does not tell the system which claim is true.

Adding declared source reliability raised the score to 15/20. Exposing an explicit conflict label reached 20/20. That last result is an upper bound for this fixture: a production system would have to collect or infer those labels, and some of its metadata would be wrong.

What counts as a source root

A root can be a canonical primary record, a documented syndicated origin, or a source family supported by dependency evidence. Similar wording and publication dates are not enough to declare copying. When a relationship cannot be supported, it stays unresolved.

candidates = lexical_retrieve(query, pool=50)
rooted = collapse_by_documented_root(candidates)
selected = diversify(rooted, k=8, retain_primary=True)
answer = generate(query, selected, show_conflicts=True)

The important question is whether the answer rests on several information lineages or on one lineage repeated five times. Different domains do not automatically mean independent evidence.

Why the pizza-and-glue case belongs here

In May 2024, Google AI Overviews advised users to add glue to pizza sauce. Reporting linked the answer to a satirical Reddit comment. Google later described changes intended to reduce nonsensical and misleading outputs. Associated Press covered the incident, and Google published its response.

That case does not prove anything about the share of AI-written web pages or the failure rate of RAG systems. It is useful because the words survived while the context that made them satire did not.

What a production trace needs

Text and embeddings alone cannot answer whether the context has real source diversity. I would retain provenance beside each chunk:

document_id · canonical_url · publisher · publication_date
retrieved_at · content_hash · source_root · source_role
claim_relation · dependency_evidence

For consequential answers, I would log distinct roots in context, primary-source recall at k, root concentration, citation entailment, and the quality of abstention when source families conflict.

Help build the real corpus

The benchmark above is synthetic. The next version needs real cases with a known primary record, documented dependence or syndication, snapshots and hashes, two blind annotations, and an adjudication record.

Open research pilotBring one source chain with evidence.

If you know a documented primary record plus a rewrite, mirror, stale guide, syndication chain, or lost satire context, submit it to the Lab. Submissions are reviewed privately. Only independently reviewed, adjudicated records enter the corpus.

Open the RAG Provenance Lab →

The public result will be a paired comparison of primary-only, primary-plus-dependent, and pre-registered root-aware retrieval on held-out cases. Until then, this experiment shows a retrieval mechanism under controlled conditions, not a claim about the state of the web.