If the model can't cite, the user can't trust
An ungrounded answer is a confidence trick. When a user can verify which chunk a sentence came from, two things happen: hallucinations are detectable (the cited chunk doesn't say it), and the user's trust calibrates correctly. Citations are not decoration; they are the verifier.
The shape
Each chunk gets a stable id in the prompt (like chunk-7, or a real document_id). The synthesis prompt requires every factual claim to end with a bracketed id. If multiple chunks support the claim, list multiple ids. If no chunk supports it, the model must mark it explicitly.
Native citations
Anthropic's Citations feature returns structured citations alongside the response, mapping spans of output to spans of input. OpenAI and Gemini handle this at the application layer. Use the structured feature when available; fall back to bracketed ids otherwise.