W RAG nie chodzi o AI, lecz o inżynierię
Przestań wierzyć w magię LLM – czas na poważną inżynierię danych i 20 modułów, o których zapomniał Twój tutorial
Piotr Chlebek · 2026-4-(praca w toku)
Streszczenie: This article critiques the oversimplified "happy path" of RAG tutorials, arguing that while a basic prototype takes minutes, a production-grade system requires months of rigorous engineering. The author moves beyond the naive "slice and search" approach to address the "hundred-headed monster" of real-world data and security, framing RAG not as AI magic, but as a complex, multi-layered infrastructure challenge that demands a professional, senior-level commitment to architectural depth.
Słowa kluczowe: RAG engineering, Retrieval-Augmented Generation production, AI architecture, enterprise RAG, RAG implementation, LLM production deployment, semantic chunking, RAG data pipeline, vector database, RAG security, AI infrastructure, production-grade AI, RAG challenges, RAG modules.
(praca w toku)
RAG to wyzwanie inżynieryjne
Przeglądając grupę AI & Machine Learning Community,
trafiłem na
wpis [1] i prezentację
pani
Hastiki Cheddy, który uderzył w samo sedno.
Jej teza dotycząca wdrożeń AI była brutalnie szczera:
„Przeprowadziłam audyt ponad 10 korporacyjnych wdrożeń RAG. Każde jedno z nich posypało się na produkcji. Nie przez LLM. Nie przez model embeddingowy. Przez wadliwą architekturę”.
Te słowa natychmiast ze mną zarezonowały. Skoro fundamenty zawodzą częściej niż same modele, jako inżynier, programista i architekt poczułem, że czas podzielić się doświadczeniem i spostrzeżeniami, by dorzucić swoje trzy grosze do dyskusji o budowaniu skutecznych systemów RAG.
RAG: 5 minut w tutorialu, 5 miesięcy w produkcji
Analizując powszechnie dostępne przykłady systemów RAG, trudno oprzeć się wrażeniu, że utknęliśmy w fazie naiwnych i zbyt pośpiesznych implementacji. Technologia ta, choć obiecuje złote góry, w rzeczywistości jest niezwykle wymagająca i kapryśna. Pokusa szybkiego odpalenia prostej sekwencji – „potnij tekst na kawałki, wrzuć do bazy wektorowej, wyszukaj” – jest tak silna, że kluczowe fundamenty inżynieryjne często schodzą na dalszy plan.
Aspekty takie jak rzetelna jakość danych, audytowalność procesu czy odporność na ataki dostają niebezpiecznie niski priorytet. Co gorsza, fundamentalne decyzje projektowe podejmuje się w biegu. Przykładem jest masowe stosowanie sztywnego dzielenia tekstu (fixed-size chunking), które w starciu z realnymi, biznesowymi dokumentami niemal zawsze przegrywa z bardziej wyrafinowanymi, semantycznymi technikami segmentacji.
Oczywiście istnieją bardziej zaawansowane systemy RAG, które mają solidne podstawy architektoniczne i sprawnie działają w środowiskach produkcyjnych. Nie są one jednak powszechnie omawiane w tutorialach – być może dlatego, że dla osób spragnionych szybkich efektów nie wydają się tak pociągające. Kojarzą się bowiem z długim i drobiazgowym budowaniem skomplikowanego, wielowarstwowego systemu.
W moim odczuciu to właśnie ta złożoność stanowi sedno zagadnienia i jest w nim najciekawsza. Dlatego zachęcam Cię, czytelniku, do spojrzenia na RAG jak na wyzwanie inżynierskie. Tutaj nie szukamy „niskowiszących owoców”, lecz podchodzimy do tematu z seniorską powagą – tak, jak podchodzi się do projektowania każdego krytycznego i złożonego systemu.
Od trzech kafelków na diagramie do potwora o stu głowach
Większość schematów, na które trafiamy w sieci, przedstawia RAG jako elegancki i niemal bezobsługowy mechanizm. Obrazek jest kuszący: dokument wpada do maszyny, zamienia się w wektory, przechodzi przez „trzy bloki na krzyż” i generuje idealną odpowiedź. Niestety, ta wizja „szczęśliwej ścieżki” (happy path) rzadko wytrzymuje pierwsze zderzenie z rzeczywistością.
Miejsc, w których te schematyczne uproszczenia maskują faktyczną złożoność procesu, jest pod dostatkiem:
(TBD: tutaj będzie lista przykładów)
W prawdziwym świecie Twoje dane to nie sterylnie czyste pliki tekstowe, lecz „brudne” PDF-y z wielopiętrowymi tabelami, stopkami i nieoczywistą strukturą. Do tego dochodzą użytkownicy, którzy rzadko zadają pytania w sposób przewidywalny i uporządkowany. Aby system przestał halucynować i zaczął realnie rozwiązywać problemy, musimy porzucić iluzję prostoty na rzecz solidnej inżynierii, która zabezpieczy proces na każdym jego etapie.
Dlaczego system produkcyjny potrzebuje 15+ modułów, a nie tylko trzech?
Prawdziwa anatomia profesjonalnego systemu RAG nie sprowadza się jedynie do trzech prostych kroków, które sugeruje sam akronim: pobierania (Retrieve), rozszerzania (Augment) i generowania (Generate). To tylko wierzchołek góry lodowej. Jeśli budujesz rozwiązanie, które ma być odporne na nieuporządkowane dane, zdezorientowanych użytkowników, a nawet złośliwe próby manipulacji, musisz spojrzeć znacznie głębiej.
Poniżej znajdziesz listę 20 komponentów, które należy rozważyć – a w warunkach biznesowych najczęściej po prostu zaimplementować – aby RAG przestał być tylko techniczną ciekawostką, a stał się niezawodnym narzędziem klasy enterprise.
Dopiero architektura uwzględniająca te aspekty pozwala stworzyć system gotowy na sytuacje kryzysowe, audyty czy ewentualne spory prawne. Warto zapamiętać jedną zasadę: w RAG-u największy wysiłek inżynieryjny wcale nie wiąże się z wyborem samego modelu językowego, lecz z budową „rur”, którymi płyną dane. To właśnie w tej niewidocznej na pierwszy rzut oka infrastrukturze rozstrzyga się, czy Twój system będzie realnym wsparciem, czy spektakularną porażką wdrożeniową.
RAG to nie gotowy produkt pudełkowy, lecz ciągły proces. Sukces nie zależy od wykupienia subskrypcji na najdroższe LLM, ale od żmudnej pracy nad jakością i przepływem informacji. Dysonans poznawczy zniknie tylko wtedy, gdy przestaniemy traktować AI jak magię, a zaczniemy widzieć w niej kolejny, złożony element nowoczesnej architektury oprogramowania.
...work in progress...
W tym poście:
- (praca w toku)
Powiązane wpisy:
- AI Tinkerers Gdańsk Meetup – 23 kwietnia
- LLM Wiki vs. Baza Wiedzy RAG
- Lokalne serwowanie LLM za pomocą vLLM
- Hybrydowy RAG z segmentacją semantyczną
Odniesienia:
- [1]
RAG isn’t an AI problem. It’s an engineering problem - Hastika Cheddy - [.] karpathy/llm-wiki.md - Andrej Karpathy
- [.] How to Build a Document Processing Pipeline for RAG with Nemotron - Chia-Chih Chen, Moon Chung, Nave Algarici and Sean Sodha
- [.] -
Źródło obrazów: Google DALL-E 3 (04.2026).
Kluczowe komponenty niezawodnej architektury RAG
Warstwa Przygotowania Danych (Data Ingestion)
To wszystko, co dzieje się, zanim użytkownik w ogóle zada pytanie. To tutaj "czyścisz i układasz" wiedzę.
| Komponent | Mechanizm działania | Dlaczego jest ważny |
|---|---|---|
| ETL: Jakość i czystość danych (czyszczenie, deduplikacja, normalizacja) | Selekcja i "sprzątanie" danych: usuwanie szumu, naprawianie błędów po skanowaniu (OCR), kasowanie duplikatów i ujednolicanie formatów. | Zapobiega zasadzie GIGO (Garbage In, Garbage Out). Czyste dane to mniejsze ryzyko halucynacji i błędnych odpowiedzi modelu. |
| ETL: Zaawansowany Parsing i Chunking | Rozbija dokumenty na logiczne fragmenty (chunki), dbając o strukturę (tabele, nagłówki, metadane). | Pozwala systemowi precyzyjnie wyciągnąć z bazy konkretną informację z zachowaniem jej kontekstu, co jest niezbędne dla trafnych odpowiedzi LLM. |
| Aktualizacja indeksu (Incremental Updates) | Automatyczne odświeżanie bazy wektorowej o nowe lub zmienione dane bez konieczności indeksowania wszystkiego od nowa. | Gwarantuje dostęp do aktualnych informacji (np. cen czy przepisów) i drastycznie obniża koszty utrzymania systemu. |
Warstwa Inteligencji Zapytania (Query Orchestration)
To moment, w którym system analizuje, o co właściwie pyta człowiek.
| Komponent | Mechanizm działania | Dlaczego jest ważny |
|---|---|---|
| Inteligentne Sterowanie (Query Routing) | System decyduje, do której bazy danych, modelu czy API zajrzeć (np. czy pytać o dokumentację techniczną, czy o procedury HR). | Nie każde pytanie wymaga przeszukiwania całej wiedzy firmy. Router oszczędza czas i zwiększa precyzję, kierując zapytanie do właściwego "koszyka" z danymi. |
| Transformacja zapytań (przepisywanie i rozbudowa) | Przepisuje zapytanie użytkownika na formę lepiej zrozumiałą dla wyszukiwarki. Dekompozycja dla wielu zapytań. Odwracanie pytań (HyDE). | Użytkownicy piszą niechlujnie. Jeśli zapyta "A ile to kosztuje?", system musi wiedzieć, o jaki produkt pytał dwa zdania wcześniej. |
| Zarządzanie Historią i Pamięcią (Memory Management) | Przechowywanie i inteligentne streszczanie poprzednich części rozmowy. | Jeśli użytkownik zada 10 pytań z rzędu, przesłanie całej historii do modelu zajmie mnóstwo miejsca (tokenów). Potrzebujesz modułu, który "pamięta" tylko najważniejsze wątki. |
| Zarządzanie Metadanymi i Filtrowanie (Self-Querying) | Pozwala na twarde filtrowanie wyników po dacie, dziale czy typie dokumentu przed wyszukiwaniem semantycznym. | Jeśli klient pyta o "raporty z 2024", nie chcesz, żeby model sugerował mu dane z 2019 tylko dlatego, że są "podobne semantycznie". |
Warstwa Wyszukiwania i Selekcji (Retrieval & Ranking)
Sercem RAG jest znalezienie igły w stogu siana. Ta grupa odpowiada za jakość znalezionych dokumentów.
| Komponent | Mechanizm działania | Dlaczego jest ważny |
|---|---|---|
| Wyszukiwanie Hybrydowe (Hybrid Search) | Łączy wyszukiwanie wektorowe (semantyczne), wyszukiwanie słów kluczowych (BM25) oraz wyszukiwanie grafowe (oparte na relacjach). Czasami obejmuje również wyszukiwanie multimodalne. | Wektory świetnie oddają intencję, ale słabo radzą sobie ze specyficznymi identyfikatorami, takimi jak numery seryjne. Dodanie wyszukiwania grafowego pozwala systemowi przemierzać relacje między encjami i hierarchie, odkrywając głęboki kontekst, który mógłby zostać pominięty przez bliskość wektorową lub słowa kluczowe. |
| Re-ranking (Przeskalowanie trafności) | Przelicza trafność topowych wyników zwróconych przez wyszukiwarkę za pomocą bardziej precyzyjnego modelu. | Wyszukiwanie wektorowe jest szybkie, ale często "szumi". Re-ranker upewnia się, że na samą górę trafią faktycznie najistotniejsze fragmenty. |
| Deduplikacja i selekcja wyników (Post-processing) | Odrzucanie nadmiarowych, niemal identycznych fragmentów na rzecz unikalnych treści (np. za pomocą algorytmu MMR). | Zapewnia różnorodność informacji w oknie kontekstowym. Zamiast powtarzać to samo, model otrzymuje szersze spektrum danych, co podnosi jakość odpowiedzi. |
Warstwa Generowania i Bezpieczeństwa (Generation & Trust)
Tu model LLM tworzy odpowiedź, a system dba, żeby była ona bezpieczna i prawdziwa.
| Komponent | Mechanizm działania | Dlaczego jest ważny |
|---|---|---|
| Inżynieria promptów i kompresja kontekstu | Optymalizuje sposób podania danych do LLM, wybierając tylko najistotniejsze fragmenty, by nie przekroczyć okna kontekstowego i oszczędzać tokeny. | Wrzucenie zbyt dużej ilości tekstu (tzw. "Lost in the Middle") sprawia, że model gubi się i ignoruje kluczowe fakty. |
| Mechanizmy ochronne (Guardrails) – bezpieczeństwo i wiarygodność | Działa jak inteligentny filtr dla pytań i odpowiedzi. Blokuje wulgaryzmy, próby wyłudzenia danych i sprawdza, czy odpowiedź faktycznie opiera się na Twoich dokumentach (grounding). | Chroni przed wizerunkową wpadką i halucynacjami. Pilnuje, żeby bot nie zdradzał tajemnic firmy, nie był wulgarny i nie zmyślał faktów, których nie ma w bazie. |
| Cytowanie i Atrybucja (Citations & Attribution) | Model musi wskazać konkretne źródło (np. link do pliku PDF lub numer strony), z którego zaczerpnął informację. | To absolutny fundament zaufania. Użytkownik musi mieć możliwość szybkiego sprawdzenia, czy model nie zmyśla. Bez linków do źródeł RAG traci swoją największą zaletę. |
| Ocena pewności odpowiedzi (Confidence / Uncertainty) | Ocena, jak bardzo system „ufa” odpowiedzi. | Pozwala pokazać użytkownikowi poziom pewności i zdecydować, czy odpowiedź w ogóle zwrócić. |
| Scenariusze awaryjne i obsługa błędów | Obsługuje sytuacje typu: brak wyników, niska pewność, timeouty. | System bez fallbacków prędzej czy później odpowie głupotą zamiast powiedzieć „nie wiem”. |
Warstwa Operacyjna i Zarządzanie (Operations & Governance)
To, co sprawia, że system jest tani, szybki i wiemy, dlaczego czasem nie działa.
| Komponent | Mechanizm działania | Dlaczego jest ważny |
|---|---|---|
| Kontrola dostępu (uprawnienia i listy ACL) | Pilnuje, żeby użytkownik widział tylko to, do czego ma dostęp. | Bez tego RAG może ujawnić dane HR, finansowe albo poufne dokumenty. |
| Warstwa cache (semantyczna pamięć podręczna) | Zapamiętuje odpowiedzi na podobne pytania i zwraca je bez ponownego odpytywania LLM. | Skalowanie kosztuje. Cache redukuje opóźnienia (latency) i koszty API nawet o 30-50%. |
| Moduł Ewaluacji (RAGAS/TruLens) | Automatyczne testy mierzące wierność odpowiedzi (Faithfulness) i trafność kontekstu (Relevancy). | Bez metryk nie wiesz, czy zmiana modelu lub wielkości chunków faktycznie ulepsza system, czy go psuje. "Vibe check" to nie strategia. |
| Monitorowanie i śledzenie (Observability & Tracing) | Pełny log każdego kroku + metryki: co zostało wyszukane, co trafiło do promptu, jak odpowiedział model. | Gdy użytkownik zgłosi błąd, musisz dokładnie widzieć, w którym module nastąpiło pęknięcie: czy zawiodło wyszukiwanie, czy zawiódł model LLM. |
| Pętla Informacji Zwrotnej (Feedback Loop, Human-in-the-loop) | Wspiera zbieranie informacji zwrotnej (feedback) od użytkowników by poprawiać system. | Nawet najlepsza ewaluacja nie zastąpi opinii żywego człowieka. Te dane pozwalają Ci potem dotrenować system lub poprawić błędne fragmenty w bazie wiedzy. |




