RAG Engineering: The Practical Guide to Grounded AI Answers
Chunking, hybrid search, reranking, evaluation — the full RAG pipeline that turns hallucinating models into trustworthy assistants.
- rag
- retrieval
- embeddings
- guide
Why RAG exists
Language models predict plausible text. Your users need true text — about your documents, your prices, your policies. RAG (Retrieval-Augmented Generation) closes that gap: find the relevant passages first, then let the model answer from them. Simple idea, devilish details.
The pipeline, piece by piece
A production RAG system is a chain, and it breaks at its weakest link:
- Chunking — splitting documents into retrievable pieces. Too big dilutes meaning; too small loses context. Start here when answers feel "almost right."
- Semantic chunking — splitting by meaning instead of fixed sizes, so each chunk is one complete thought.
- Document parsing — PDFs, tables, and scanned pages must become clean text before anything else works. Garbage in, hallucination out.
- Hybrid search — dense vectors catch meaning, BM25 catches exact terms (product codes, names). You almost always want both.
- Query expansion and decomposition — rewriting the user's question into searches the index can actually match.
- Reranking — a cheap first pass for recall, then a precise cross-encoder pass for precision. The highest-ROI upgrade most teams skip.
- Metadata filtering — "only 2024 invoices" should be a filter, not a hope. Structure what you can.
- Context compression — stuffing 50 chunks into the prompt wastes money and attention. Compress to what matters.
- Grounding — checking the answer against retrieved text so hallucinations get caught, not shipped.
- Evaluation — relevance, faithfulness, and answer quality measured continuously. If you don't eval, you're guessing.
A sane learning order
- Retrieve (chunking → hybrid-search → bm25)
- Refine queries (query-expansion → query-decomposition)
- Rank better (reranking → cross-encoder)
- Assemble context (metadata-filtering → context-compression)
- Trust, then verify (rag-grounding → rag-evaluation)
Work through it hands-on in our RAG Engineering course.
Mistakes beginners make
- Fixed 512-token chunks everywhere. Tables, code, and legal clauses all want different splits. One chunking strategy for all content types is the most common RAG smell.
- Vectors only. Exact terms (SKUs, error codes, names) are where dense search fails silently — hybrid search exists for this.
- No reranker. Going straight from vector top-20 to the prompt leaves enormous quality on the table for pennies.
- Shipping without evals. A golden set of 50 questions with known-good answers catches regressions before users do.
FAQ
When is RAG better than fine-tuning? When knowledge changes (prices, docs, policies), when you must cite sources, or when you have documents but few training examples. Fine-tuning teaches behavior; RAG supplies facts.
How many chunks should I retrieve? Fewer, better ones. Top-3 precise chunks beat top-20 noisy ones — attention dilutes and costs grow. Retrieve wide, rerank hard, feed narrow.
Why does my RAG answer confidently wrong things? Usually: wrong chunks retrieved (chunking/search problem) or the model ignoring context (prompt/grounding problem). Check retrieval quality first — log what was retrieved for every bad answer.
Do I need a vector database? Not on day one — in-memory indexes handle thousands of chunks. You need one when scale, filtering, or uptime demands it.