Guide

Retrieval Granularity: Why Passages, Facts, and Graph Edges Answer Different Questions

Published Jul 18, 2026

Every memory system has to decide what size of thing it hands back when it retrieves: a whole passage of original text, a single extracted fact, or one edge in a knowledge graph. That choice — retrieval granularity — gets treated as an implementation detail more often than it should, because it's actually a first-order design decision that determines which questions a system can answer well. A fixed retrieval budget (the top-k items a system returns) carries a very different amount of any one source record depending on how finely that record was broken up at storage time, and the clearest illustration of why that matters is a single task type where finer granularity wins decisively — and a different one where the same fine granularity actively costs the system.

Three retrieval units, three different tradeoffs

Passage-level retrieval returns a chunk of original content close to how it was stored. It's coarse but high-fidelity per item — a single passage can carry more context than a question strictly needs, but it rarely omits something relevant that was in the same chunk. Fact-level retrieval, the unit a fact-extraction pipeline produces, returns discrete statements pulled out of the source — precise when a question needs exactly one fact, but only as complete as what the extraction step chose to keep. Edge-level retrieval, the unit a temporal knowledge graph produces, returns individual (entity, relationship, entity) triples — the finest-grained of the three, and the only one with an explicit notion of time built into the unit itself, since each edge can carry its own validity window for when it became true and when it was superseded.

None of the three is a strictly better default. Each is a different bet about what a typical question will need, and a system's actual performance on any specific question type follows directly from whether that bet paid off.

Why the same source record produces a different retrieval surface per unit

Granularity isn't just about how content looks once retrieved — it changes how much of a source record a fixed budget can actually carry. A single decision record with a trigger, several considered options, an outcome, and a handful of cited rules can shred into roughly two dozen individual edge facts once a graph-building pipeline extracts every relationship inside it. At a fixed retrieval budget, a system working in edge-level units is spending that budget across fragments of what might be one or two source records, where a passage-level system spends the same budget across two or three complete records. Neither is wrong, but they're answering 'what did you retrieve' completely differently for the identical underlying content.

The counter-example: where finer granularity wins decisively

Temporal ordering — reconstructing which of several decisions happened first, second, third — is the task type where edge-level granularity's cost turns into a clear win. On DecisionSynth Bench's held-out scoreboard, a temporal-knowledge-graph system posts the best temporal-ordering exact-match of any LLM-backed architecture (0.886), ahead of an archival verbatim-storage system's 0.760, even though the same graph-based system trails badly on the benchmark's overall score. The reason is specific to the retrieval unit: an edge carries its own validity window as a first-class property, so answering 'what came before what' is close to reading the structure directly, rather than reconstructing order indirectly from timestamps embedded somewhere in a passage of text.

The same fine granularity that wins temporal ordering costs the identical system on tasks needing a complete record. Exact-identifier recall — retrieving the specific outcome of one decision — scores far lower for the same graph-based system on the held-out set, because the fixed retrieval budget spent across many small edge fragments of a decision often can't reassemble the complete record a direct-recall question needs. One retrieval unit, one architecture, two opposite outcomes depending entirely on what the question is actually asking for.

Designing for your own dominant question shape

The practical design question isn't 'which granularity is best' in the abstract — it's which granularity matches the question shape that will actually dominate your system's real traffic.

  • ·If most real questions ask for one specific, isolated fact — fact-level retrieval is close to the right default, since its unit is already sized to match the question
  • ·If most real questions ask for a complete record's full context (what was the whole recommendation, not just one field of it) — coarser, passage-level retrieval keeps a record together instead of risking fragmentation across a fixed budget
  • ·If ordering or change-over-time is a first-class part of your question mix — a retrieval unit with an explicit temporal property (edge-level, in a knowledge-graph system) has a structural advantage no amount of tuning a coarser unit will fully close
  • ·If your traffic mixes all three question shapes roughly evenly — a single granularity choice will underperform on whichever shape it wasn't optimized for, which is the practical argument for architectures that can serve more than one retrieval unit rather than committing to exactly one

Testing granularity choices empirically, at a matched budget

Granularity decisions should be verified against real task performance, not settled by architectural preference alone — and the comparison is only fair when every system under test runs at the same retrieval budget. Comparing 5 whole passages against 5 individual graph edges isn't an apples-to-apples read of how much source material each system actually surfaced; a raw k of 5 represents a very different amount of underlying content depending on the native unit. Reporting per-task-type scores rather than a single blended number is what makes a granularity mismatch visible in the results, instead of averaging it away into a score that looks mediocre everywhere without explaining why.

Key takeaways

  • Retrieval granularity — passage, fact, or edge — is a first-order design choice, not an implementation detail, because it determines what a fixed retrieval budget can actually carry from any one source record.
  • A single source record can shred into dozens of individual facts under fine-grained extraction, meaning the same content produces a very different retrieval surface depending on the unit chosen.
  • Temporal ordering is the clean counter-example where finer, edge-level granularity wins decisively — because an edge's validity window makes 'when' a first-class retrievable property instead of something reconstructed indirectly.
  • The same fine granularity that wins ordering questions can cost a system on questions needing a complete record, since a fixed budget spent across fragments can crowd out the full picture.
  • Granularity choices should be tested against your system's actual dominant question shape, at a matched retrieval budget across any systems being compared — not settled by architectural preference alone.

FAQ

Is finer retrieval granularity always more precise?+

More precise per item, not more effective overall. A finer unit returns exactly what it targets with less surrounding noise, but it also means a fixed budget covers less of any single complex record — which can hurt tasks that need a complete picture rather than one isolated fact.

Can a system serve more than one granularity depending on the question?+

Architecturally, yes — nothing prevents a system from routing a query to a coarser or finer retrieval path depending on what the question needs. Whether a specific product actually implements that routing, and how well, is worth verifying directly rather than assuming.

How do I compare retrieval quality across systems with different native units?+

Match the retrieval budget k, then compare per-task-type scores rather than a single aggregate — the same raw k means something different across a passage-based, fact-based, and edge-based system, so the comparison only holds up when it's read task type by task type.

Does granularity choice matter as much as which model powers the extraction?+

Both matter, and separately from each other. Granularity determines what shape of thing gets retrieved at all; the extraction model determines how completely that shape gets populated from the source content in the first place. A well-chosen granularity fed by a poor extraction pass can still underperform, and vice versa.