Thanasis Chrysovergis
Strategy··8 min read

What Is RAG and Why Your AI Chatbot Probably Doesn't Have It

RAG (retrieval-augmented generation) is why serious AI apps actually work. Here's what it is, when you need it, and why most chatbots still skip it.

Thanasis Chrysovergis

Thanasis Chrysovergis

AI Systems + Conversion-Focused Web

On this page

Someone built a chatbot for their company. They plugged it into GPT-4o, gave it a system prompt that said "You are our customer support assistant," and let it rip. First week it was confidently answering questions about policies that do not exist, products they never sold, and return windows they have never offered.

The fix they were missing is RAG. Retrieval-augmented generation. It is the difference between a chatbot that hallucinates and an AI system that actually knows your business.

If you have read about RAG on someone else's blog, you probably saw the words "vector database" within the first paragraph and bounced. This post does not do that. We are going to cover what RAG is in plain English, why most chatbots you see in the wild do not have it, and when you do and do not need it.

The problem RAG solves

Large language models like GPT, Claude, and Gemini know general things. They do not know your things.

They know what a refund policy looks like. They do not know your refund policy.

They know what a pricing page sounds like. They do not know your pricing.

They know what a warranty is. They do not know how long yours is, what it covers, or how to file a claim.

When you ask an LLM a question about your business without giving it your business data, it makes up an answer that sounds right. That is called hallucination. And for customer-facing chatbots, it is a liability nightmare.

You can solve this two ways. Fine-tune the model on your data (expensive, slow, and brittle). Or use RAG.

What RAG actually does

RAG has three steps.

Step 1: Store. Take your documents (FAQs, policy docs, product data, knowledge base articles, anything) and split them into small chunks. Convert each chunk into a mathematical fingerprint called an embedding. Save the chunks plus their embeddings somewhere searchable.

Step 2: Retrieve. When a user asks a question, convert the question into the same type of embedding. Search your stored chunks for the ones whose embeddings are closest to the question's. Those are the chunks most likely to be relevant.

Step 3: Generate. Take the top retrieved chunks, stuff them into the LLM's prompt as context, and ask the LLM to answer the user's question using that context.

So when a user asks "what is your return policy?", instead of the LLM guessing, it reads your actual return policy text and answers based on that.

Clean. Fast. No hallucinations about things you never said, because the model has the real text right in front of it.

The chatbot example, with and without RAG

Without RAG:

User: "What is your return window?"

Chatbot (hallucinating): "Our standard return window is 30 days from purchase, provided items are unused and in original packaging."

Plausible. Also completely made up if your actual policy is 14 days, or 90 days, or "returns are accepted only for defective products." The chatbot said something that sounded right, and now you have a customer service dispute.

With RAG:

User: "What is your return window?"

System: Searches your knowledge base, finds the actual return policy text, pastes it into the prompt.

Chatbot: "Our return window is 14 days from delivery. Items must be unused and tagged. Here is a link to the full policy: [url]."

The model has the real text. It cannot hallucinate a different policy.

Why most chatbots you see still do not have RAG

This is where it gets interesting. If RAG is this useful, why has nearly every customer support chatbot you interact with been confidently wrong at some point?

Three reasons.

Reason 1: It is more work. Setting up RAG means picking an embedding model, a vector database, chunking strategy, retrieval tuning, and integration code. A no-RAG chatbot is "plug LLM into chat UI." A RAG chatbot is an actual system.

Reason 2: The data is messy. To do RAG well, your knowledge base has to be organized. Most companies have FAQs on the marketing site, policies in a Notion doc, product specs in a database, and institutional knowledge in three Slack threads. Connecting all of it is a project.

Reason 3: The chatbot vendors skip it to lower the price. A lot of off-the-shelf chatbot tools ("add AI chat to your site in 10 minutes!") either skip RAG entirely or do it badly with a tiny context window and naive retrieval. They look good in the demo and fall apart in production.

When you actually need RAG

You need RAG if your chatbot has to answer questions about:

  • Your products. Features, compatibility, specs, inventory.
  • Your policies. Shipping, returns, warranty, pricing, terms.
  • Your processes. How to file a claim, how to set up an account, how to integrate with you.
  • Your history. Order lookup, conversation history, account-specific data.
  • Your knowledge base. Internal docs, employee handbook, technical documentation.

In short: anything that the base LLM does not know and cannot figure out.

When you do not need RAG

Plenty of cases where a well-prompted LLM without RAG is fine.

  • Pure generation tasks. Write me a cover letter, summarize this email, draft a product description. No company-specific truth required.
  • General knowledge questions. "What is CSS clamp?" does not need your data.
  • Creative work. Brainstorming, writing, copy work. The LLM does this well from training.
  • Code help. Modern LLMs code well without needing RAG on your specific codebase (unless the codebase is huge or highly idiosyncratic).

If your use case is in this bucket, skip RAG and save yourself weeks of implementation work.

The RAG variations you hear about

Once people discover RAG, they discover there are many flavors of it. Quick reference.

Naive RAG. Exactly what I described above. Chunk, embed, retrieve top-k, pass to LLM. Works. Simple. Most RAG implementations start here.

Hybrid RAG. Combines embedding search with traditional keyword search (BM25). Helps with queries where the right answer uses specific words the embedding model does not weight heavily.

Re-ranking. Retrieve more chunks than you need, then run them through a separate model that scores which are actually relevant. Slower, more accurate.

Agentic RAG. The LLM decides what to search for, runs multiple retrievals, refines its query. Useful for complex multi-hop questions. Expensive.

Graph RAG. Knowledge is stored as a graph (nodes and relationships), not just chunks. Useful for domains where relationships matter (legal, medical, scientific research).

For 80% of applications, naive RAG plus maybe hybrid is enough. The fancy variants are for when naive is not solving your specific problem, not before.

How to tell if a chatbot has RAG (from the outside)

Three quick tests you can run on any AI chatbot.

  1. Ask a specific policy question. "What is your return window for international orders?" If it cites a specific number that matches the actual policy, probably RAG. If it gives a vague "typically 30 days" answer, probably no RAG.
  2. Ask about a recent product launch. LLMs have training cutoffs. If the chatbot knows about a product launched last month, it has a retrieval layer.
  3. Ask a deliberately obscure question. "What is the maintenance schedule for the XT-500 model?" A RAG system will either answer with specifics or admit "I don't have that information." A non-RAG chatbot will hallucinate something that sounds right.

The real cost of RAG

Rough numbers for an in-production RAG system at moderate scale.

  • Embedding cost. One-time to embed your docs, then small cost to embed each new query. For 10,000 docs, maybe $5 to embed once.
  • Storage. A vector DB like Pinecone, Weaviate, or Supabase pgvector. $20-100/month for small/medium scale.
  • Inference. Each query makes one or two LLM calls instead of one. Roughly 1.5x the LLM cost of a non-RAG chatbot.
  • Engineering time. 2 to 6 weeks to build well. Longer if your data is chaotic.

For a chatbot handling 1,000 conversations per week, all-in you are looking at maybe $200/month in tooling plus the engineering time to build and maintain it. Compared to one wrong answer causing a support ticket that takes 20 minutes to resolve, it pays back fast.

The bigger picture

The reason I push clients to use RAG is not that it is trendy. It is that without it, every AI chatbot you build is a liability waiting to happen.

A hallucinating chatbot in a demo is funny. A hallucinating chatbot telling a customer they can return an item they cannot return, or quoting a price that is wrong, or promising a feature that does not exist, is a real problem. Real customer service escalation. Real trust damage. Sometimes real legal issues.

If you are building AI into customer-facing products, RAG is not optional. It is the minimum bar.

Related: MCP servers are a different pattern for connecting AI to live tools and data. RAG is for dynamic, large-scale retrieval across your documents. MCP is for structured tool and system access. You often end up using both in the same architecture.

If you are wondering whether your current chatbot setup has this right, or whether you need to build RAG into something, book a call. I can audit the setup in 25 minutes and tell you whether you are at risk.

airagllmchatbotai systems

Found this useful? Share it.

Share·LinkedInX·
Thanasis Chrysovergis

Written by

Thanasis Chrysovergis

I build custom AI systems and conversion-focused web for teams tired of demos. 15 years of shipping. Based in Athens, working worldwide.