Jak działa RAG - przewodnik po AI korzystającym z dokumentów
Źródło: Link
Twoja koleżanka z działu HR pyta: "Jak ten ChatGPT ma mi pomóc z naszymi procedurami, skoro został wytrenowany w 2023 roku?". Dobra, rozbijmy to na czynniki pierwsze.
Model językowy - nawet najnowszy - ma fundamentalny problem. Zna tylko to, czego nauczył się podczas treningu. Nie ma dostępu do Twoich dokumentów firmowych, procedur, umów ani notatek ze spotkań. I tu wchodzi RAG - Retrieval Augmented Generation. Brzmi technicznie, ale mechanizm jest prosty: zanim AI odpowie na pytanie, najpierw przeszukuje Twoje dokumenty i dopiero wtedy generuje odpowiedź opartą na faktach.

Retrieval Augmented Generation to hybrydowy system, który łączy dwie rzeczy: wyszukiwarkę dokumentów i model językowy. Gdy zadajesz pytanie, system najpierw szuka odpowiednich fragmentów w bazie dokumentów, a potem przekazuje je do modelu jako kontekst. Model dostaje więc nie tylko Twoje pytanie, ale też konkretne źródła, z których może czerpać.
Asystent, który przed odpowiedzią sprawdza w segregatorze, co dokładnie napisano w procedurze. Tyle że robi to w ułamku sekundy i przeszukuje tysiące dokumentów naraz.
Przed RAG miałeś dwa wyjścia: albo trenować własny model od zera (koszt: setki tysięcy dolarów), albo używać ogólnego ChatGPT, który o Twojej firmie nie wie nic. RAG daje trzecią opcję - model zachowuje swoją inteligencję, ale zyskuje dostęp do Twoich danych. Bez kosztownego douczania.
Dodatkowo system może podać źródło informacji. Jeśli AI twierdzi, że urlop wypoczynkowy wynosi 26 dni, pokaże Ci dokładnie, z którego paragrafu regulaminu to wyciągnął. Możesz to zweryfikować. To ogromna różnica w porównaniu do standardowych odpowiedzi, gdzie model po prostu "coś tam pamięta" z treningu.
Zanim zaczniesz budować własny system RAG, musisz zrozumieć trzy kluczowe elementy: embeddingi, bazę wektorową i sam proces wyszukiwania. Każdy z nich pełni konkretną rolę.
Embedding to reprezentacja tekstu w formie liczb - konkretnie wektora składającego się z setek lub tysięcy wartości. Brzmi abstrakcyjnie, ale pomyśl o tym jak o współrzędnych GPS. Każde słowo, zdanie czy akapit dostaje swoje "współrzędne" w wielowymiarowej przestrzeni.
Dokumenty, które mówią o podobnych rzeczach, lądują blisko siebie w tej przestrzeni. Procedura urlopowa i regulamin czasu pracy będą miały podobne embeddingi, bo dotyczą zbliżonych tematów. Artykuł o AI i tekst o uczeniu maszynowym - również. System nie musi rozumieć treści - wystarczy, że policzy odległość między wektorami.
Proces wygląda tak: bierzesz swoje dokumenty, dzielisz je na mniejsze fragmenty (chunki) - zwykle 200-500 słów każdy - i przepuszczasz przez model embeddingowy. Najpopularniejsze to OpenAI text-embedding-3 lub modele open source jak sentence-transformers. Każdy fragment dostaje swój wektor.

Masz już embeddingi - teraz musisz je gdzieś zapisać. Zwykła baza SQL nie wystarczy, bo nie potrafi szybko szukać "najbliższych sąsiadów" w przestrzeni wektorowej. Dlatego używasz bazy wektorowej - specjalnego systemu zaprojektowanego do przechowywania i przeszukiwania wektorów.
Popularne opcje to Pinecone (płatny, zarządzany w chmurze), Weaviate (open source), Qdrant (szybki, napisany w Rust) czy ChromaDB (prosty, lokalny). Wybór zależy od skali - jeśli testujesz na 100 dokumentach, ChromaDB wystarczy. Jeśli planujesz miliony rekordów, Pinecone lub Weaviate będą lepsze.
Baza nie tylko przechowuje wektory, ale też buduje indeksy - struktury danych, które przyspieszają wyszukiwanie. Dzięki temu zamiast porównywać Twoje zapytanie z każdym dokumentem z osobna (co trwałoby wieki), system sprawdza tylko kilka procent bazy i zwraca najlepsze dopasowania w milisekundach.
Użytkownik wpisuje pytanie: "Ile dni urlopu przysługuje po roku pracy?". System przekształca to pytanie w embedding - używając tego samego modelu, co przy dokumentach. Teraz masz wektor zapytania.
Następnie baza wektorowa szuka fragmentów dokumentów, których embeddingi są najbliżej wektora zapytania. Zwykle zwraca 3-5 najlepszych dopasowań. To mogą być fragmenty z różnych dokumentów - regulaminu, umowy, notatki ze spotkania z HR.
Te fragmenty trafiają do promptu modelu językowego. Model dostaje coś w stylu:
"Odpowiedz na pytanie użytkownika na podstawie poniższych fragmentów dokumentów. Jeśli odpowiedzi nie ma w dokumentach, powiedz to wprost."
Fragmenty: [tutaj 3-5 znalezionych kawałków tekstu]
Pytanie: Ile dni urlopu przysługuje po roku pracy?
Model generuje odpowiedź opartą na faktach z dokumentów. Jeśli w żadnym fragmencie nie ma informacji o urlopie, powie "Nie znalazłem tej informacji w dostępnych dokumentach" - zamiast wymyślać coś z treningu.

Embeddingi i bazy wektorowe to standard, ale nie jedyna metoda. Oryginalne systemy RAG używały klasycznego wyszukiwania słów kluczowych - dokładnie tego, co znasz z Google sprzed lat.
Starsze systemy budowały indeksy odwrócone - mapowanie słów na dokumenty. Jeśli użytkownik wpisał "urlop wypoczynkowy", system szukał dokumentów zawierających te konkretne słowa. Algorytmy jak TF-IDF i BM25 oceniały, jak ważne jest dane słowo w dokumencie i jak rzadkie w całej bazie.
To działa świetnie, gdy pytanie zawiera dokładne słowa z dokumentu. Problem? Jeśli użytkownik pyta "Ile mam wolnego po roku roboty?", a w dokumencie jest "urlop wypoczynkowy po 12 miesiącach zatrudnienia" - klasyczne wyszukiwanie może tego nie złapać. Brak dopasowania słów = brak wyniku.
Dlatego nowoczesne systemy łączą oba światy. Najpierw robią wyszukiwanie wektorowe (znajduje semantycznie podobne fragmenty), potem wyszukiwanie słów kluczowych (znajduje dokładne dopasowania), a na koniec scalają wyniki. Jeśli fragment pojawia się w obu listach, dostaje wyższy priorytet.
Przykład: pytanie "Jak złożyć wniosek o urlop?". Wyszukiwanie wektorowe znajdzie procedury dotyczące wniosków i urlopów, nawet jeśli używają innych słów. Wyszukiwanie słów kluczowych złapie fragmenty z dokładnym "wniosek o urlop". Razem dają lepszy wynik niż osobno.
Żeby zbudować działający system RAG, potrzebujesz kilku rzeczy. Nie musisz być programistą, ale pewne elementy są niezbędne.
Jeśli idziesz w narzędzie gotowe (no-code), liczysz się z 20-100 USD miesięcznie za hosting i API. Jeśli budujesz sam - koszt to głównie embeddingi (około 0.13 USD za milion tokenów w OpenAI) i zapytania do modelu (zależy od modelu - dobre prompty zmniejszają koszty).
Czas? Gotowe narzędzie - 1-2 godziny na setup. Własny system od zera - 1-2 dni, jeśli masz doświadczenie z Pythonem. Tydzień, jeśli uczysz się po drodze.
Przejdźmy przez konkretny proces. Zakładam, że masz dokumenty i chcesz zbudować system, który odpowie na pytania na ich podstawie.
Jeśli nie chcesz kodować, użyj gotowego narzędzia. Oto jak to zrobić w Chatbase (jeden z popularniejszych):
Alternatywy: Stack AI (bardziej zaawansowane, integracje z narzędziami firmowymi), Mendable (skupiony na dokumentacji technicznej), Dante AI (prosty, polski interfejs).

Jeśli chcesz pełnej kontroli, budujesz sam. Potrzebujesz bibliotek: langchain (framework do RAG), chromadb (baza wektorowa), openai (API do embeddingów i modelu).
Instalujesz:
pip install langchain chromadb openai pypdf
Ładujesz dokumenty:
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("twoj_dokument.pdf")
documents = loader.load()
Dzielisz na chunki:
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
Tworzysz embeddingi i zapisujesz w ChromaDB:
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)
Budujesz łańcuch RAG:
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model="gpt-4")
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())
Zadajesz pytanie:
answer = qa_chain.run("Ile dni urlopu po roku pracy?")
print(answer)
To podstawowy setup. Działa, ale produkcyjny system wymaga więcej: obsługi błędów, logowania, cachowania, monitorowania kosztów API. Jeśli dopiero zaczynasz z Pythonem i AI, zacznij od gotowego narzędzia.
RAG nie jest magią. Ma swoje ograniczenia i pułapki. Oto co najczęściej idzie nie tak.
Przyczyna: chunki są za duże albo za małe. Jeśli chunk ma 2000 słów, embedding uśrednia znaczenie całego fragmentu i traci precyzję. Jeśli chunk ma 50 słów, brakuje kontekstu.
Rozwiązanie: testuj różne rozmiary. Zazwyczaj 300-500 słów to sweet spot. Dodaj overlap - niech chunki nachodzą na siebie o 10-20%, żeby nie uciąć zdania w połowie.
Przyczyna: model dostaje fragmenty z różnych dokumentów, które mówią różne rzeczy. Albo fragmenty są nieaktualne.
Rozwiązanie: dodaj metadane do chunków - datę dokumentu, autora, wersję. Przy wyszukiwaniu priorytetyzuj nowsze dokumenty. W prompcie powiedz modelowi: "Jeśli fragmenty są sprzeczne, wybierz najnowszy i zaznacz, że istnieją różne wersje".
Przyczyna: model nie dostaje wystarczająco dobrych fragmentów. Wyszukiwanie zwraca teksty tylko trochę powiązane z pytaniem.
Rozwiązanie: zwiększ liczbę zwracanych fragmentów (z 3 do 5-7) albo popraw prompt. Dodaj instrukcję: "Cytuj konkretne fragmenty z dokumentów. Jeśli odpowiedzi nie ma, nie zgaduj". To zmusza model do oparcia się na faktach.
Przyczyna: za każdym razem wysyłasz do modelu długi prompt z wieloma fragmentami dokumentów. Jeśli użytkownicy zadają setki pytań dziennie, rachunki rosną.
Rozwiązanie: cachuj popularne pytania. Jeśli 10 osób pyta o to samo, odpowiedź z pierwszego zapytania zapisz i użyj ponownie. Używaj tańszych modeli do prostych pytań (GPT-5 do złożonych, GPT-4 Turbo do prostych). Ogranicz długość fragmentów w prompcie.
RAG świetnie radzi sobie z odpowiadaniem na pytania na podstawie dokumentów. Są jednak sytuacje, gdzie to za mało.
Jeśli Twoje dokumenty wymagają skomplikowanego rozumowania - np. analizy prawnej z uwzględnieniem precedensów i wyjątków - prosty RAG może nie wyciągnąć wszystkich powiązań. Wtedy potrzebujesz agentic RAG - systemu, który może wielokrotnie przeszukiwać dokumenty, porównywać wyniki i budować złożoną argumentację. To kolejny poziom zaawansowania.
Jeśli chcesz, żeby AI nauczyło się stylu pisania Twojej firmy albo specyficznej terminologii branżowej, RAG tego nie da. Będziesz musiał douczyć model (fine-tuning). RAG daje dostęp do faktów, nie zmienia sposobu myślenia modelu.
Jeśli Twoje dane zmieniają się co godzinę (np. ceny akcji, statusy zamówień), RAG wymaga ciągłej aktualizacji bazy wektorowej. To możliwe, ale trzeba zbudować pipeline, który automatycznie przetwarza nowe dane i dodaje je do bazy. Nie jest to trywialne.
Tak, nowoczesne modele embeddingowe (OpenAI text-embedding-3, multilingual sentence-transformers) obsługują polski bez problemu. Model językowy (GPT-5, Claude Opus 4.7) również rozumie polski i generuje odpowiedzi w tym języku. Upewnij się tylko, że Twoje dokumenty są w dobrej jakości - skanowane PDF z błędami OCR mogą dawać gorsze wyniki.
To zależy od bazy wektorowej. ChromaDB lokalnie obsłuży kilka tysięcy dokumentów. Pinecone, Weaviate czy Qdrant - miliony. Ograniczeniem jest raczej koszt embeddingów (musisz przetworzyć wszystkie dokumenty) i czas wyszukiwania (im więcej dokumentów, tym dłużej trwa, choć nadal mówimy o milisekundach). Dla małej firmy 100-1000 dokumentów to norma.
Tak, możesz użyć modeli open source. Do embeddingów - sentence-transformers (darmowy, działa lokalnie). Do generowania odpowiedzi - Llama 4, Qwen 3 lub DeepSeek V4 (open weights, możesz uruchomić lokalnie albo przez tanie API jak Together.ai). Będzie wolniej i może trochę gorzej niż GPT-5, ale za darmo. Jeśli budujesz agenta AI od zera, open source to dobry wybór na start.
Zależy od rozmiaru. 10 dokumentów PDF (po 10 stron każdy) - około 2-5 minut. 1000 dokumentów - godzina lub dwie, zależnie od mocy serwera i API. Proces jest jednorazowy - po przetworzeniu dokumenty są w bazie i możesz zadawać pytania natychmiast. Jeśli dodajesz nowe dokumenty, przetwarzasz tylko je, nie wszystko od nowa.
Częściowo. RAG jest lepszy w odpowiadaniu na pytania w języku naturalnym ("Ile mam urlopu?" vs "urlop regulamin 2026"). Klasyczna wyszukiwarka jest lepsza, jeśli użytkownik chce znaleźć konkretny dokument po nazwie lub przejrzeć wszystkie wyniki. Najlepsze rozwiązanie to połączenie - RAG do pytań, wyszukiwarka do eksploracji. Niektóre narzędzia (np. Stack AI) oferują oba tryby.
RAG to jeden z praktycznych sposobów, jak AI może oszczędzić Ci godziny pracy z dokumentami i danymi. Na darmowym webinarze na żywo pokazuję krok po kroku, jak oszczędzać 10 godzin tygodniowo dzięki AI - bez wiedzy technicznej.
Zapisz się na darmowy webinar →Wolisz uczyć się we własnym tempie? Sprawdź kurs AI Evolution
RAG to sposób, żeby model AI przestał być ograniczony do tego, czego nauczył się podczas treningu. Dając mu dostęp do Twoich dokumentów, dostajesz odpowiedzi oparte na faktach, ze źródłami, które możesz sprawdzić. To nie wymaga trenowania własnego modelu ani zatrudniania zespołu inżynierów.
Jeśli chcesz zacząć dziś: weź 5-10 najważniejszych dokumentów firmowych, załóż konto w Chatbase lub Stack AI i przetestuj przez godzinę. Zadaj 20 pytań, które normalnie wymagałyby przeszukiwania plików ręcznie. Zobaczysz, czy to ma sens w Twoim przypadku. Jeśli tak - rozbudowujesz. Jeśli nie - straciłeś godzinę, nie tysiące złotych na wdrożenie.
RAG nie rozwiąże wszystkich problemów. Jeśli jednak Twoja praca polega na szukaniu informacji w dokumentach - a czyja nie? - to narzędzie, które zwraca się w tydzień.
10 gotowych promptów do codziennej pracy + 5 narzędzi + plan na pierwszy tydzień. PDF, 4 strony konkretu.