Tessera: Structure-Completed Evidence Units for Web Retrieval-Augmented Generation

Peichun Hua, He Sun, Zirui Zhuang, Qi Qi, Yiming Qiu, Shinan Liu, Yunming Xiao
21 minread4.30scoreNo. 610-29 AI Search issue
Rel 5Nov 4Prac 4Evid 3Time 5

Ask Wikipedia who produced Willy Wonka and the Chocolate Factory, and the answer sits in the producer row of the page's infobox. Text extraction drops the two names in that cell, the reader model sees only the director, and it answers wrong. Tracing answer evidence from page source to reader input over all of English Wikipedia, this paper finds such loss is common: for 7.6% of questions the evidence never enters the index intact, and 81% of those losses are table cells, table headers or captions. Tessera leaves retrieval alone. Just before reading, it re-splits the top-ranked pages into small units such as one table row or one list item, adds the title, section and headers back, and packs the relevant ones into the same token budget. Answer accuracy rises by 5 to 6 points on both text and screenshot pipelines, and a 3K-token Tessera context reaches 76.1%, above 12K tokens of raw chunks.

Teams building web RAG or search question answering should read this paper, because it measures a problem many teams sense but rarely quantify: the right page is retrieved, but the wrong part of it reaches the model. The fix needs no new index, no training, and no change of retriever or reader; it is one layer between retrieval and reading. It beats 14 common remedies at a matched budget, and inside a multi-step search agent it lifts accuracy on FRAMES (a multi-hop benchmark needing several Wikipedia articles per question) from 59.2% to 64.4%. The caveats: all experiments use Wikipedia, whose tables and infoboxes are well structured, and the lexical prefilter still misses some evidence units.

What problem is it solving?

A standard web RAG pipeline flattens each page to plain text with an extractor, cuts it into fixed-length chunks, retrieves and reranks, and hands the top few chunks to a reader. A screenshot pipeline cuts the rendered page into image tiles instead. Both share one design choice: the same chunk is the unit of indexing, the unit of ranking, and the unit of reading.

Tracing evidence for 7,378 questions from source to reader input, the paper finds two main loss points.

Where evidence is lostShareConsequence
Stored intact in a chunk, but not in the top three9.7% of questionsPutting that chunk in slot three lifts accuracy on them from 49.1% to 78.5%
Never stored intact in any chunk7.6% of questions81% are table cells, headers or captions; no retriever can recover them
Table cell stored, but separated from its headers31% of such cellsThe number loses its meaning

The opening example, illustrated:

What the reader getsAnswer
Extracted infobox: Directed by Mel Stuart, Written by Roald Dahl, producer cell empty"Mel Stuart", wrong
Tessera unit: page title › poster, Directed by: Mel Stuart; Produced by: Stan Margulies; David L. WolperBoth producers, right

Chunk size is tuned for retrieval, but the answer often fills one sentence or one table row, and a budget of three chunks leaves the one holding it outside. The top ten reranked chunks reach the gold page for 92.7% of questions, yet the evidence reaches the reader for only 59.5%. Standard remedies, such as better extraction, neighbor expansion, structural prefixes, four times the reader budget, or screenshots, each add at most 2.2 points.

Pipeline overview

Paper Figure 3: Tessera's four steps.
Paper Figure 3: Tessera's four steps.

Look at the dashed line on the left: the top k-1 items pass through unchanged, and only the last item is replaced, so the reader budget stays the same. "Pooled accuracy" below counts every question across the three datasets together, not an average of per-dataset accuracies.

StepWhat it doesDefault
Anchor pagesTake the distinct pages of the top m items and fetch their HTML from the crawl snapshot used for indexingm=10
Build unitsWalk the page; each paragraph, list item and caption is a unit, and each table or infobox row is a unit, completed with title, section path and headersabout 150 per page
Select unitsPool units from all anchor pages (about a thousand), keep the 100 sharing the most content words with the question, then score with the pipeline's own reranker, BGE-reranker-v2-m3N=100
PackFill the budget of item k by score; rows sharing a context print the title and headers oncebudget counted by the reader's tokenizer

Formally, the reader context changes from to with .

Design 1: rebuild a faithful table grid

Web tables use merged cells, multi-row headers, title rows and group rows. Pairing cells with the first header row in source order mislabels or drops cells in 32.5% of the 2.9 million rows in the experiments. Tessera expands every rowspan and colspan, treats full-width leading rows as titles, stacks multi-row headers, carries group rows down as context, keys infobox rows by their first cell, and keeps line breaks inside multi-value cells.

MethodRow for B. Okafor becomes
Source-order pairingName: B. Okafor; Term: 2004; Party: 2010
Faithful gridState › History › Governors: Name: B. Okafor; Term of office › Took office: 2004; Term of office › Left office: 2010; Party: Liberal

This shows that without the grid, the reader would take a leaving year for a party, and the merged party value would vanish.

Design 2: complete context for scoring, share it for printing

A bare row such as "Harbhajan Singh | not out | 6 | 3 | 0 | 1 | 200.00" does not say which match or which column holds the strike rate. The reranker scores completed text, but packing groups units by context and prints the context path and headers once. For the question about Harbhajan Singh's strike rate in the 2015 IPL (Indian Premier League cricket) final, the baseline chunks lacked the Mumbai batting rows and the reader said he did not bat; Tessera packed the grouped scorecard rows and the reader answered 200.00. Hoot says

Hoot saysOne group of table rows: every row carries context for scoring, context prints once for readingClose ✕
Scoring judges each row alone, so each row is completed; the reader reads them together, so the group prints its context once, charged to its first row.

Repeat context on every row

Row 1
context + headers + row = 40 + 20
Row 2
context + headers + row = 40 + 20
Total
120 tokens

The reader reads the same title and headers twice.

Tessera: print by group

Row 1
context + headers + row = 40 + 20
Row 2
row only = 20
Total
80 tokens

The saved budget holds more rows, so one slot fits about 14 lines instead of about 11 units.

Illustrative: the context line plus header line cost 40 tokens, each data row 20 tokens, two rows selected from one group. Source: packing rule from the Design 2 text; token counts are illustrative

Unit formPooled gain
Bare units without context+1.8
Completed units+4.6

This shows the gain comes from completion, not merely from smaller units. Grouped packing fits about 14 lines per slot instead of 11.

Design 3: keep k-1 chunks, replace only the last

Top chunks carry coherent prose and the retriever's ranking signal. Using units only loses 0.6 to 1.9 points to the mixed context at every budget, while the mixed context beats chunks-only in all 51 comparisons by 1.8 to 6.7 points. For screenshots, the unit block takes the token cost of one tile; for agents, each search call returns k-1 items plus a unit block. Building units costs 15 ms per page on one CPU core and scoring about 0.2 A100 GPU-seconds per question.

Main results

The corpus is the August 2025 English Wikipedia (7.06M articles) with 7,851 questions from NQ, NQ-Tables and SimpleQA; the reader is Qwen3.5-4B with three evidence items.

PipelinePooled gain
Hybrid text + BGE reranker+5.0
PixelRAG text + BGE reranker+6.2
PixelRAG screenshots + Qwen3-VL reranker+5.6
Gemma 4 31B reader, text+4.7
Gemma 4 31B reader, screenshots+5.9

This shows the gain holds across index modality and reader size; SimpleQA gains most, 6.9 to 8.2 points, because long-tail facts live in infoboxes and tables.

Method (3K evidence tokens)PooledChange
Top-3 chunks70.70—
RAPTOR71.91+1.21
HtmlRAG70.30-0.41
Docling as unit builder74.97+4.27
Tessera75.74+5.03
Query2doc + Tessera76.65+5.95

This shows retrieval-side methods only reorder chunks. Docling, which also serializes rows with headers, works well, but Tessera is 0.8 points higher and parses over 500 times faster.

Redrawn from Table 2: accuracy on the 715 stored-but-not-delivered questions.
Redrawn from Table 2: accuracy on the 715 stored-but-not-delivered questions.

Pooled, Tessera moves these questions from 49.1% to 65.0%, recovering 54% of the oracle gain.

Each search returnsFRAMESMuSiQueSearchesFinal context
Top-3 chunks59.2232.402.4112.8K
Top-4 chunks59.2232.302.1814.5K
Top-2 + Docling57.6532.102.6513.6K
Top-2 + Tessera64.4433.502.1911.7K

This shows structured evidence lets the agent search less, read less and answer more; tabular FRAMES questions gain 9.3 points.

Limitations

First, only Wikipedia is tested. Its markup is regular; product pages, forums and PDF-derived HTML are messier, and the grid rules need fresh validation.

Second, the lexical prefilter misses evidence. On the 715 oracle questions Tessera trails the oracle by 13.4 points, about 96 questions; 20 of them have evidence inside anchor pages that the prefilter dropped. A larger prefilter changes accuracy by at most 0.3 points, which means semantic matching is needed.

Third, anchoring depends on the retriever. 61 of those 96 lie outside the anchor pages, and when the gold page is not anchored Tessera only moves accuracy from 39.9% to 43.7%.

How a search or recommendation team could try it

  1. Sample questions from the production QA pipeline and log the pages behind the top ten results, with their HTML or structured source.
  2. Have a strong model mark the supporting evidence and trace by string match where it stops: extraction, chunking, retrieval, reranking, or reader input.
  3. If loss concentrates in tables, spec sheets or attribute lists, build per-page units: one per paragraph and list item, one per table row, with title, section path and column names.
  4. Score units with the existing reranker and replace only the last reader item, keeping the token budget.
  5. Compare accuracy on the same questions, split by table-only and prose-only evidence.
  6. For search agents, attach the unit block to each search tool response and track accuracy, search count and context length.

Verdict

A training-free delivery layer that re-splits retrieved pages by structure adds a steady 5 to 6 points on Wikipedia QA.

DimensionAssessment
ImportanceHigh: many web facts live in tables and infoboxes that chunking loses
NoveltyMedium-high: units and header completion are known; decoupling retrieval and reading units, with loss tracing, is new
EvidenceHigh: three pipelines, several retrievers and readers, 14 baselines, agents; only Wikipedia
Engineering costLow: parse a few pages at query time, reuse the reranker, 15 ms per page
Worth tryingYes, especially where answers sit in tables, specs or attribute lists

How did this read for you?

One tap, no sign-in; tap again to undo. Only anonymous counts are kept, never who you are.

Discussion

Add experiment details, reproduction notes or a different take. Requires a GitHub sign-in.

Loading the discussion…