When you first hear about RAG, it often sounds almost absurdly simple.Když člověk poprvé slyší o RAGu, často to zní skoro směšně jednoduše.
Throw documents into a vector database, build embeddings, hook up GPT — done. The AI will find everything on its own.Naházet dokumenty do vector databáze, udělat embeddingy, připojit GPT a hotovo. AI si přece všechno najde sama.
Online you then see a demo where someone builds a „chat over PDF“ in 15 minutes and it looks almost like a solved problem.Na internetu pak člověk vidí demo, kde někdo za 15 minut postaví „chat nad PDF“ a vypadá to skoro jako vyřešený problém.
And honestly — the first version usually actually works.A upřímně — první verze většinou fakt funguje.
PDF. A few chunks. Qdrant. Embedding model. GPT. And you feel like you built the company brain over a weekend.PDF. Pár chunků. Qdrant. Embedding model. GPT. A člověk má pocit, že za víkend postavil interní firemní mozek.
That is exactly when the mess starts.A přesně v ten moment začíná ten průser.
Because you get the false feeling you are almost done.Protože člověk získá falešný pocit, že už je skoro hotovo.
But production RAG does not start with the model.Jenže produkční RAG nezačíná u modelu.
It starts with chaos.Začíná u chaosu.
Chunking, or how to break a document apart so it still makes senseChunking aneb jak rozjebat dokument tak, aby pořád dával smysl
At first I thought chunking was a detail. Just split the text every thousand characters and move on.Na začátku jsem měl pocit, že chunking je detail. Prostě rozsekat text po tisíci znacích a hotovo.
Very quickly you learn this is where retrieval works or fails.Jenže velmi rychle člověk zjistí, že právě tady se rozhoduje, jestli retrieval bude fungovat nebo ne.
Chunks that are too small lose context. Chunks that are too large become noise. And some documents fall apart completely.Příliš malé chunky ztratí kontext. Příliš velké chunky začnou být šum. A některé dokumenty se rozsypou úplně.
And the worst part is that every document type wants a completely different approach.A nejhorší je, že každý typ dokumentu chce úplně jiný přístup.
FAQ wants different chunking than contracts. Invoices want different chunking than official documents. Call transcripts want a completely different approach than technical documentation.FAQ chce chunkovat jinak než smlouvy. Faktury jinak než úřední dokumenty. Call transcript úplně jinak než technickou dokumentaci.
And one uncomfortable thing slowly sinks in.A člověku postupně dojde jedna dost nepříjemná věc.
You are not chunking text.Nechunkuje text.
You are chunking meaning.Chunkuje význam.
And that is a much worse problem.A to je mnohem horší problém.
Because the model does not just need to find something. It needs to find the right part of reality.Protože modelu nestačí jen „něco najít“. Musí najít správnou část reality.
Embeddings are not magicEmbeddingy nejsou magie
Another thing I got burned on several times was embeddings.Další věc, na které jsem se několikrát spálil, byly embeddingy.
Online it often looks like embedding models understand text perfectly.Na internetu to často vypadá, jako kdyby embedding modely dokonale chápaly význam textu.
Reality is much messier.Jenže realita je mnohem špinavější.
Embeddings are great… until you search for something specific.Embeddings jsou super… dokud člověk nehledá něco konkrétního.
Numbers. Codes. Variable symbols. Document IDs. Exact wording. Municipality names. Case file numbers.Čísla. Kódy. Variabilní symboly. ID dokumentů. Přesné formulace. Názvy obcí. Čísla jednací.
And then semantic search sometimes returns complete garbage that „fits semantically“ but is useless in practice.A v tu chvíli začne semantic search občas vracet úplné kraviny, které „významově sedí“, ale prakticky jsou k ničemu.
That is when you finally understand why semantic search alone is not enough.A tady člověku konečně dojde, proč nestačí řešit jen semantic search.
Because production retrieval often needs syntactic search too.Protože produkční retrieval často potřebuje i syntactic search.
Not similar meaning.Ne podobný význam.
An exact match.Přesnou shodu.
When someone searches for a specific contract number or variable symbol, „semantic similarity“ is useless.Protože když někdo hledá konkrétní číslo smlouvy nebo variabilní symbol, tak je mu nějaká „sémantická podobnost“ úplně ukradená.
And then another round begins.A pak začne další kolečko.
BM25. Hybrid search. Metadata filtering. Reranker. Weight balancing. Thresholds. Query expansion.BM25. Hybrid search. Metadata filtering. Reranker. Weight balancing. Thresholdy. Query expansion.
Suddenly you are not spending time on AI.Najednou člověk netráví čas s AI.
You spend it tuning how the retrieval pipeline tries to think.Tráví ho laděním toho, jak se retrieval pipeline snaží přemýšlet.
Retrieval is often more important than the model itselfRetrieval je často důležitější než samotný model
This took me a long time to fully accept.Tohle mi docházelo dost dlouho.
When retrieval returns the wrong context, even the best model in the world will not save you long term.Když retrieval vrátí špatný kontext, ani nejlepší model na světě to dlouhodobě nezachrání.
An LLM does not know retrieval failed. It usually answers very confidently from whatever it received.LLM neumí poznat, že retrieval selhal. Model většinou jen velmi sebevědomě odpoví z toho, co dostal.
And the better the model, the scarier it sometimes gets.A čím lepší model člověk použije, tím děsivější to někdy je.
Because the answer sounds extremely convincing even when it stands on completely broken retrieval.Protože odpověď zní extrémně přesvědčivě, i když stojí na úplně rozbitém retrievalu.
Then you start solving things AI demos barely mention.A pak člověk začne řešit věci, o kterých se v AI demos skoro vůbec nemluví.
Grounding check. LLM-as-a-judge. Confidence scoring. Validation layers. Hallucination detection.Grounding check. LLM-as-a-judge. Confidence scoring. Validation layers. Hallucination detection.
And you realize half the system exists only to control the other half.A najednou zjistí, že půlka systému vlastně existuje jen proto, aby kontrolovala druhou půlku systému.
Which is absurd on its own.Což je samo o sobě dost absurdní.
RAG in production is not a chatbot. It is a distributed workflowRAG v produkci není chatbot. Je to distribuovaný workflow
This was another moment when my idea of „AI chat over documents“ completely fell apart.Tohle byl další moment, kdy se mi úplně rozpadla představa „AI chatu nad dokumenty“.
Because a production system suddenly has to solve:Protože produkční systém najednou řeší:
- tenant isolationtenant isolation
- permissionspermissions
- audit logsaudit logy
- embedding versioningverzování embeddingů
- cachecache
- latencylatency
- retrieval monitoringmonitoring retrievalu
- fallback logicfallback logiku
- retry mechanismsretry mechanismy
- rerankingreranking
- hybrid searchhybrid search
- governancegovernance
- observabilityobservabilitu
After a while you realize the model is often the least problematic part of the whole architecture.A člověk po nějaké době zjistí, že model bývá často ta nejméně problematická část celé architektury.
The hardest part is usually everything around it.Nejtěžší bývá všechno kolem.
Then production reality arrivesA pak přijde produkční realita
On test data, everything usually works beautifully.Na testovacích datech většinou všechno funguje krásně.
Then the first real customer arrives.Pak přijde první skutečný zákazník.
PDF exported from an accounting system from 2007. A document rotated 90 degrees. A scan taken with a phone in a car. Missing diacritics. OCR errors. Inconsistent names. Broken layout.PDF exportované z účetního systému z roku 2007. Dokument otočený o 90 stupňů. Scan focený mobilem v autě. Chybějící diakritika. OCR chyby. Nekonzistentní názvy. Rozbitý layout.
And the retrieval pipeline that looked great yesterday starts pulling complete nonsense.A retrieval pipeline, která ještě včera vypadala skvěle, začne tahat úplné nesmysly.
Suddenly you are not solving „how to make AI work“.Najednou člověk neřeší „jak udělat AI“.
You are teaching the retrieval pipeline to survive reality.Řeší, jak retrieval pipeline naučit přežít realitu.
And that, in my view, is where most AI demos end and real engineering begins.A přesně tady podle mě končí většina AI dem a začíná skutečný engineering.
The longer you work on RAG, the less you believe simple AI demosČím déle člověk dělá RAG, tím méně věří jednoduchým AI demům
Most demos show the moment when everything works.Většina dem ukazuje moment, kdy všechno funguje.
Production starts exactly when it stops working reliably.Produkce ale začíná přesně ve chvíli, kdy to fungovat přestane.
When retrieval returns the wrong chunk. When the embedding model misses meaning. When the document structure changes. When the AI answers too confidently. When relevance breaks. When the system becomes slow. When the user asks a question nobody expected during design.Když retrieval vrátí špatný chunk. Když embedding model mine význam. Když se změní struktura dokumentů. Když AI začne odpovídat příliš sebevědomě. Když se rozbije relevance. Když systém začne být pomalý. Když uživatel položí dotaz, který nikdo při návrhu nečekal.
And you gradually realize the biggest difference between an AI demo and a production system is not the model.A člověk postupně zjistí, že největší rozdíl mezi AI demem a produkčním systémem není v modelu.
It is how much chaos from reality the system can survive long term.Je v tom, kolik chaosu z reality systém dokáže dlouhodobě přežít.