A rewrite step sits between the user and the retriever. The user asks something conversational, the rewriter turns it into search-friendly text, and the retriever embeds that text and fetches chunks. The Rewrite-Retrieve-Read paper frames this as an explicit stage inserted before retrieval because there is "inevitably a gap between the input text and the needed knowledge in retrieval."
A fact budget changes what that stage optimizes for. Without a budget, a rewriter is free to emit one query, five queries, or a paragraph. With a budget, you declare: this rewrite may name at most N required facts, where a required fact is a distinct piece of information the final answer must contain. "Basic plan pricing" is one fact. "Pro plan onboarding time" is another. A question comparing both plans on both dimensions asks for four.
That definition matters because it is checkable. You can list the required facts for a query, count them, and compare against what actually got retrieved. You cannot do the same with vague instructions like "rewrite clearly."
The budget does not limit total words. It limits how many independent information needs the rewrite is allowed to carry into one retrieval call. That is the lever that controls both missed-fact rate and retrieval dilution.



