A language model produces the most plausible continuation, and plausible is not the same as true. Grounding an answer in passages from your own content and showing them cuts the failure rate a long way. It does not reach zero, because a real source can still be summarized wrong.

"Hallucination" is a soft word for something specific: the model states something false with the same confidence it states something true, and nothing in the output tells you which one you are reading.
It helps to drop the metaphor. The model is not seeing things. It is doing exactly what it was built to do.
Plausible is the target, true is a side effect
A language model predicts what text most likely comes next. Trained on enough writing, the most likely continuation is usually also correct, which is why these systems are useful at all. Correctness rides along with plausibility rather than being checked.
So when the plausible continuation happens to be false, nothing objects. There is no lookup that fails, no null returned, no exception thrown. The sentence "our standard warranty is twelve months" is exactly as easy to produce as "our standard warranty is twenty-four months", and the model has no fact to consult about your business.
That is also why the tone stays even. A person who is unsure hedges, slows down, says "I think". A model producing a fabricated warranty period writes it in the same register as everything else, because to the model there is no difference between the two sentences.
Why a small business chatbot is the worst case
Three things stack up on a business website.
Your business is not in the training data. There is no page anywhere that states your delivery radius or your Sunday timings. When asked, the model has nothing to recall and something to invent, and the shape of a correct answer is obvious: a number of kilometres, a pair of times.
The questions demand specifics. General questions tolerate approximate answers. "What is your refund window" does not. Every question your customers ask has a precise answer that either matches your published policy or does not.
Customers ask questions with false premises. "What's the student discount?" from a business with no student discount. "Which day do you do free installation?" The question presupposes a thing that does not exist, and a model optimizing for a helpful-sounding reply will fill in the presupposition rather than reject it.
Add the setting: nobody is watching. A wrong answer at 11pm reaches a customer who acts on it, and you find out days later, from them.
What grounding actually does
Retrieval changes the question the model is asked. Rather than "what is this business's refund window", it becomes "here are three passages from this business's website, answer using only these".
That is a much narrower job, and it fails less. The model still has to read and summarize, but it is no longer generating a fact from nothing. When the passages do not contain the answer, a system built this way has somewhere honest to land: it can say the material does not cover the question rather than produce one.
Showing the source passage to the visitor does two more things. It lets the customer check the claim themselves, which is what a link on a policy page has always been for. And it lets you trace a bad answer back to the content that produced it, which turns "the AI got it wrong" into "the 2023 pricing page is still live".
Citations do not make an answer correct
This is where source-backed marketing overstates itself, so it is worth being blunt about the ways a cited answer still goes wrong.
The right passage, summarized wrong. A policy with a condition in the second sentence, quoted without the condition. The citation is real. The answer is not.
The wrong passage retrieved. Search returned a page that shares vocabulary with the question but does not answer it, and the model wrote something anyway.
A stale source. The page is real, the citation is honest, and the price on it was correct in 2023. The system has no way to know your site is out of date.
Two sources that disagree. Your old service page and your new one both state a rate. One gets picked. It may be the wrong one, and the citation will look impeccable.
A source that never should have been read. An unlinked draft, a demo page from your theme, a blog post from a rebrand.
Three of those five failures are content problems rather than AI problems, which is the most useful thing to take from this. The pages your bot reads are the ceiling on how good it can be, and a crawl will show you what shape they are in.
What to do about it
Prefer a system that abstains. Refusing is a feature, and what it does at that moment is worth more attention than its answer quality on easy questions.
Keep the sources visible, and use them as a debugging tool rather than a trust badge.
Then go fix the content. Delete the contradictions, date the things that expire, and write down the answers that only exist in your head. The checklist is an afternoon, and it does more for answer quality than any prompt you could write.