Home Knowledge Base Hallucination falls out of the training objective itself: models are optimized for plausibility, not truth.
<svg viewBox="0 0 760 470" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system,Segoe UI,Roboto,sans-serif">
  <rect width="760" height="470" fill="#0d1117"/>
  <defs>
    <marker id="hlBlueArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto"><path d="M0 0L10 5L0 10Z" fill="#60a5fa"/></marker>
    <marker id="hlGreenArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto"><path d="M0 0L10 5L0 10Z" fill="#34d399"/></marker>
    <marker id="hlGoldArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto"><path d="M0 0L10 5L0 10Z" fill="#fbbf24"/></marker>
    <marker id="hlRedArrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto"><path d="M0 0L10 5L0 10Z" fill="#f87171"/></marker>
    <filter id="hlGlow" x="-100%" y="-100%" width="300%" height="300%"><feGaussianBlur stdDeviation="4" result="b"/><feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge></filter>
  </defs>

  <text x="380" y="30" fill="#e6edf3" font-size="21" font-weight="700" text-anchor="middle">Hallucination — Fluent Claims Without Sufficient Support</text>
  <text x="380" y="52" fill="#8b98a5" font-size="12.5" text-anchor="middle">language models optimize plausible continuation; grounding requires each factual claim to survive evidence and consistency checks</text>

  <!-- Claim generation and decomposition -->
  <g transform="translate(24 84)">
    <text x="356" y="-9" fill="#e6edf3" font-size="10.5" font-weight="700" text-anchor="middle">GENERATE → DECOMPOSE INTO CLAIMS → ALIGN WITH EVIDENCE → CITE, CORRECT, OR ABSTAIN</text>
    <rect width="712" height="234" rx="13" fill="#10151b" stroke="#3a4453" stroke-width="1.5"/>

    <!-- Prompt -->
    <g transform="translate(14 69)">
      <rect width="92" height="91" rx="10" fill="#142b44" stroke="#60a5fa" stroke-width="1.6"/>
      <path d="M17 20h58M17 33h44M17 46h53" stroke="#93c5fd" stroke-width="2" stroke-linecap="round"/>
      <text x="46" y="68" fill="#93c5fd" font-size="9" font-weight="700" text-anchor="middle">USER QUERY</text>
      <text x="46" y="82" fill="#8b98a5" font-size="7.5" text-anchor="middle">ambiguous or specific</text>
    </g>
    <path d="M110 114H136" stroke="#60a5fa" stroke-width="2.5" marker-end="url(#hlBlueArrow)"/>

    <!-- Generator -->
    <g transform="translate(140 46)">
      <rect width="123" height="138" rx="10" fill="#14131e" stroke="#a78bfa" stroke-width="1.6"/>
      <text x="61" y="18" fill="#c4b5fd" font-size="9.5" font-weight="700" text-anchor="middle">LANGUAGE MODEL</text>
      <g transform="translate(17 31)" fill="#a78bfa" stroke="#ddd6fe" stroke-width=".6">
        <circle cx="10" cy="14" r="5"/><circle cx="10" cy="40" r="5"/><circle cx="10" cy="66" r="5"/>
        <circle cx="44" cy="8" r="5"/><circle cx="44" cy="29" r="5"/><circle cx="44" cy="50" r="5"/><circle cx="44" cy="72" r="5"/>
        <circle cx="78" cy="14" r="5"/><circle cx="78" cy="40" r="5"/><circle cx="78" cy="66" r="5"/>
      </g>
      <g transform="translate(17 31)" stroke="#a78bfa" stroke-width=".8" opacity=".65"><path d="M15 14L39 8M15 14L39 29M15 40L39 29M15 40L39 50M15 66L39 50M15 66L39 72M49 8L73 14M49 29L73 14M49 29L73 40M49 50L73 40M49 50L73 66M49 72L73 66"/></g>
      <text x="61" y="116" fill="#c4b5fd" font-size="8" text-anchor="middle">predicts likely tokens</text>
      <text x="61" y="129" fill="#fca5a5" font-size="8" text-anchor="middle">has no built-in truth oracle</text>
    </g>
    <path d="M263 114H287" stroke="#a78bfa" stroke-width="2.5" marker-end="url(#hlGoldArrow)"/>

    <!-- Claims -->
    <g transform="translate(291 24)">
      <text x="92" y="0" fill="#fde68a" font-size="9" font-weight="700" text-anchor="middle">ATOMIC CLAIMS</text>
      <rect y="12" width="184" height="48" rx="8" fill="#10251f" stroke="#34d399"/>
      <circle cx="16" cy="24" r="6" fill="#34d399"/><text x="16" y="27" fill="#0d1117" font-size="8" font-weight="700" text-anchor="middle">A</text>
      <text x="29" y="25" fill="#6ee7b7" font-size="8.2">“Lot L24A used EUV layers.”</text>
      <text x="29" y="41" fill="#8b98a5" font-size="7.5">specific and externally checkable</text>

      <rect y="70" width="184" height="48" rx="8" fill="#272115" stroke="#fbbf24"/>
      <circle cx="16" cy="82" r="6" fill="#fbbf24"/><text x="16" y="85" fill="#0d1117" font-size="8" font-weight="700" text-anchor="middle">B</text>
      <text x="29" y="83" fill="#fde68a" font-size="8.2">“Final yield was 99.8%.”</text>
      <text x="29" y="99" fill="#8b98a5" font-size="7.5">precise number demands evidence</text>

      <rect y="128" width="184" height="48" rx="8" fill="#2b181c" stroke="#f87171"/>
      <circle cx="16" cy="140" r="6" fill="#f87171"/><text x="16" y="143" fill="#0d1117" font-size="8" font-weight="700" text-anchor="middle">C</text>
      <text x="29" y="141" fill="#fca5a5" font-size="8.2">“The lot already shipped.”</text>
      <text x="29" y="157" fill="#8b98a5" font-size="7.5">may conflict with current status</text>
    </g>

    <!-- Evidence alignment -->
    <g transform="translate(500 18)">
      <rect width="197" height="198" rx="10" fill="#111923" stroke="#52647b" stroke-width="1.5"/>
      <text x="98" y="18" fill="#e6edf3" font-size="9.5" font-weight="700" text-anchor="middle">EVIDENCE ALIGNMENT</text>
      <g transform="translate(12 30)">
        <rect width="173" height="43" rx="7" fill="#10251f" stroke="#34d399"/>
        <path d="M12 21l6 6 11-15" fill="none" stroke="#6ee7b7" stroke-width="2.5"/>
        <text x="101" y="16" fill="#6ee7b7" font-size="8" text-anchor="middle">process traveler supports A</text>
        <text x="101" y="31" fill="#8b98a5" font-size="7.5" text-anchor="middle">attach source and cite</text>
      </g>
      <g transform="translate(12 81)">
        <rect width="173" height="43" rx="7" fill="#272115" stroke="#fbbf24"/>
        <circle cx="20" cy="21" r="11" fill="#fbbf24" fill-opacity=".15" stroke="#fbbf24"/><text x="20" y="25" fill="#fde68a" font-size="14" font-weight="700" text-anchor="middle">?</text>
        <text x="101" y="16" fill="#fde68a" font-size="8" text-anchor="middle">no trusted yield record for B</text>
        <text x="101" y="31" fill="#8b98a5" font-size="7.5" text-anchor="middle">retrieve again or abstain</text>
      </g>
      <g transform="translate(12 132)">
        <rect width="173" height="43" rx="7" fill="#2b181c" stroke="#f87171"/>
        <path d="M12 14l14 14M26 14L12 28" stroke="#fca5a5" stroke-width="2.5"/>
        <text x="101" y="16" fill="#fca5a5" font-size="8" text-anchor="middle">shipment log contradicts C</text>
        <text x="101" y="31" fill="#8b98a5" font-size="7.5" text-anchor="middle">correct before answering</text>
      </g>
      <text x="98" y="190" fill="#8b98a5" font-size="7.5" text-anchor="middle">support must entail the exact claim</text>
    </g>
    <path d="M475 60H500M475 118H500M475 176H500" stroke="#52647b" stroke-width="1.5"/>
  </g>

  <!-- Grounded output -->
  <g transform="translate(24 347)">
    <text x="250" y="-10" fill="#6ee7b7" font-size="10.5" font-weight="700" text-anchor="middle">A GROUNDED RESPONSE EXPOSES SUPPORT AND UNCERTAINTY</text>
    <rect width="500" height="88" rx="12" fill="#101d1a" stroke="#33705e" stroke-width="1.5"/>
    <g transform="translate(14 13)">
      <rect width="147" height="62" rx="8" fill="#10251f" stroke="#34d399"/>
      <path d="M12 15l5 5 9-12" fill="none" stroke="#6ee7b7" stroke-width="2"/>
      <text x="86" y="16" fill="#6ee7b7" font-size="8.5" font-weight="700" text-anchor="middle">SUPPORTED CLAIM</text>
      <text x="73" y="34" fill="#8b98a5" font-size="7.5" text-anchor="middle">state A with linked citation</text>
      <text x="73" y="49" fill="#8b98a5" font-size="7.5" text-anchor="middle">quote only what source entails</text>
    </g>
    <path d="M165 44h22" stroke="#34d399" stroke-width="2" marker-end="url(#hlGreenArrow)"/>
    <g transform="translate(191 13)">
      <rect width="139" height="62" rx="8" fill="#272115" stroke="#fbbf24"/>
      <circle cx="18" cy="16" r="8" fill="#fbbf24" fill-opacity=".15" stroke="#fbbf24"/><text x="18" y="20" fill="#fde68a" font-size="10" font-weight="700" text-anchor="middle">?</text>
      <text x="82" y="18" fill="#fde68a" font-size="8.5" font-weight="700" text-anchor="middle">UNCERTAIN CLAIM</text>
      <text x="69" y="36" fill="#8b98a5" font-size="7.5" text-anchor="middle">say the value is unavailable</text>
      <text x="69" y="51" fill="#8b98a5" font-size="7.5" text-anchor="middle">request data or abstain</text>
    </g>
    <path d="M334 44h22" stroke="#fbbf24" stroke-width="2" marker-end="url(#hlGoldArrow)"/>
    <g transform="translate(360 13)">
      <rect width="126" height="62" rx="8" fill="#2b181c" stroke="#f87171"/>
      <path d="M12 10l13 13M25 10L12 23" stroke="#fca5a5" stroke-width="2"/>
      <text x="78" y="18" fill="#fca5a5" font-size="8.5" font-weight="700" text-anchor="middle">CONTRADICTED</text>
      <text x="63" y="36" fill="#8b98a5" font-size="7.5" text-anchor="middle">remove or correct C</text>
      <text x="63" y="51" fill="#8b98a5" font-size="7.5" text-anchor="middle">never preserve fluent error</text>
    </g>
  </g>

  <!-- Root-cause card -->
  <g transform="translate(541 347)">
    <text x="97" y="-10" fill="#fbbf24" font-size="10.5" font-weight="700" text-anchor="middle">WHY PLAUSIBLE ERRORS OCCUR</text>
    <rect width="195" height="88" rx="12" fill="#17150f" stroke="#745d1d" stroke-width="1.5"/>
    <g transform="translate(13 12)" fill="#8b98a5" font-size="7.8">
      <circle cx="4" cy="6" r="3" fill="#fbbf24"/><text x="14" y="9">next-token objective ≠ truth</text>
      <circle cx="4" cy="22" r="3" fill="#fbbf24"/><text x="14" y="25">missing, stale, or conflicting context</text>
      <circle cx="4" cy="38" r="3" fill="#fbbf24"/><text x="14" y="41">ambiguous prompt or entity mix-up</text>
      <circle cx="4" cy="54" r="3" fill="#fbbf24"/><text x="14" y="57">unsupported precision and citations</text>
      <text x="84" y="72" fill="#fde68a" font-size="7.5" text-anchor="middle">fluency is not evidence</text>
    </g>
  </g>

  <text x="380" y="458" fill="#6b7684" font-size="11" text-anchor="middle">Reduce hallucination with retrieval, claim-level citations, constrained tools, verification, calibrated confidence, abstention, and current authoritative data.</text>
</svg>
```llucination is when a language model produces text that is fluent, confident, and wrong — a fabricated citation, an invented API, a plausible-sounding fact that simply is not true. The unsettling part is that the model gives no signal that it is guessing; the false answer arrives in exactly the same assured voice as a correct one. It is tempting to treat this as a bug to be patched, but hallucination is better understood as a direct consequence of what a language model *is*: a system trained to predict plausible next tokens, not to retrieve verified facts. Once you see it that way, hallucination stops being surprising and becomes something you manage rather than something you expect to disappear.\n\n**Hallucination falls out of the training objective itself: models are optimized for plausibility, not truth.** A language model learns by predicting the next token over enormous amounts of text, and the thing it gets rewarded for is producing continuations that *look like* the training data — fluent, well-formed, statistically likely. Nothing in that objective is a truth signal. The model has no separate database it looks facts up in; knowledge is smeared across billions of weights as a lossy compression of what it read, so when it needs a specific detail it never memorized — a date, a court case, a function name — it does what it always does: generates the most plausible-looking token sequence. Often that sequence happens to be correct; when it is not, the same machinery produces a confident fabrication, because the model cannot tell the difference between recalling and inventing.\n\n**The causes are several, and it helps to separate hallucinations that contradict a source from those that are merely unverifiable.** Fabrications arise from *parametric gaps* (facts the model never learned or learned wrong), *outdated knowledge* (the world changed after training), *pressure to answer* (instruction-tuning and RLHF can teach a model to always produce a helpful-sounding response rather than admit ignorance, a cousin of sycophancy), *decoding randomness* (sampling can select a wrong-but-fluent path), and *ambiguous prompts* the model resolves by guessing. A useful distinction: *intrinsic* hallucinations contradict a source you provided (the model misreads the document), while *extrinsic* hallucinations add claims that cannot be checked against any source at all. The two call for different defenses.\n\n**Mitigations reduce hallucination substantially but cannot fully eliminate it, because the root cause is architectural.** The most effective lever is *grounding*: give the model the facts at inference time via retrieval-augmented generation, so it summarizes real documents instead of reciting from lossy memory, and ask it to cite. Others include verification passes (a second model or tool checks claims), lowering decoding temperature for factual tasks, training the model to *abstain* and say "I don't know" when uncertain, and better calibration so confidence tracks correctness. None of these is a cure — a grounded model can still misread its sources, and a well-calibrated one is still sometimes confidently wrong — which is why the practical stance is defense in depth plus human verification for anything that matters, not the expectation of a hallucination-free model.\n\n| Cause | What goes wrong | Main defense |\n|---|---|---|\n| Parametric gap | Fact never learned / learned wrong | Retrieval / grounding (RAG) |\n| Outdated knowledge | World changed after training | Live retrieval, tools |\n| Pressure to answer | Guesses rather than abstains | Train to say "I don't know" |\n| Decoding randomness | Fluent-but-wrong path sampled | Lower temperature, verify |\n| Ambiguous prompt | Model guesses your intent | Clarify, constrain, cite |\n\n\nThe unhelpful way to think about hallucination is as a defect that a better model or one more patch will finally fix. The useful way is to start from the mechanism: a language model is a plausibility engine that predicts likely text from a lossy, compressed memory, with no internal oracle that distinguishes a fact it recalls from a fact it invents — so a confident fabrication is produced by exactly the same process as a confident truth. That reframing tells you why hallucination happens (the objective rewards fluency, not accuracy), why it clusters where it does (missing or stale knowledge, pressure to answer, sampling, ambiguity), and why the fixes are all forms of *external* support — grounding it in real documents, verifying its claims, teaching it to abstain — rather than an internal switch. Read hallucination through a predicts-plausible-text-not-retrieves-facts lens rather than a buggy-database lens, and you stop waiting for it to vanish and start building the guardrails that keep it from mattering.
hallucinationconfabulationgrounding

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.