RAG dla firmowej bazy wiedzy: jak budować systemy odpowiadające na podstawie dokumentów bez halucynacji
Nie każde wdrożenie AI wymaga trenowania własnego modelu. W większości polskich firm, z którymi pracuję, kluczowy problem jest inny: jak sprawić, by gotowy model językowy odpowiadał na podstawie aktualnych dokumentów wewnętrznych – cenników, instrukcji, ofert – zamiast wymyślać fakty. Rozwiązaniem jest RAG, czyli Retrieval-Augmented Generation. Polega on na dołączeniu do promptu fragmentów rzeczywistych dokumentów znalezionych w firmowej bazie, co znacząco ogranicza halucynacje i pozwala cytować źródła.
Czym jest RAG i dlaczego standardowy model LLM nie wystarczy
Standardowe API modeli językowych operuje na ogólnej wiedzy zawartej w danych treningowych. Jeśli klient zapyta o aktualny cennik usługi wprowadzony trzy miesiące temu, model może go nie znać lub podać nieistniejący pakiet. RAG rozwiązuje ten problem przez dynamiczne wyszukiwanie kontekstu w chwili zadawania pytania. Zamiast uczyć model na nowo, dostarczam mu odpowiednie fragmenty tekstu wraz z zapytaniem.
Architektura prostego systemu RAG w małej firmie
Nie trzeba budować rozwiązań klasy enterprise, żeby RAG zaczął działać produktywnie. Typowy przepływ, który wdrażam, składa się z czterech warstw.
Źródła danych i przygotowanie dokumentów
Zaczynam od zebrania surowych materiałów: PDF z ofertą, pliki Word z procedurami, arkusze z FAQ, a czasem zapisane maile. Ważne, żeby tekst był wyciągalny – skany bez OCR lub zeskanowane obrazy nie nadają się do przetworzenia. Konwertuję wszystko do czystego tekstu lub formatu strukturalnego (Markdown, JSON), usuwając stopki, numery stron i powtarzające się nagłówki, które mogą zaburzyć późniejsze wyszukiwanie.
Chunking – jak dzielić dokumenty, żeby nie stracić kontekstu
Model embeddingowy ma ograniczony rozmiar okna kontekstowego, dlatego dzielę dokumenty na mniejsze fragmenty. Nie stosuję jednak stałej liczby znaków mechanicznie. Jeśli podzielę regulamin w połowie zdania, system straci sens. Stosuję chunking semantyczny lub podział na poziomie sekcji, gdzie jeden akapit to jeden chunk. W praktyce oznacza to zazwyczaj 300–800 tokenów na fragment, z niewielkim nakładaniem się na granicach, żeby nie utracić kontekstu między blokami.
Baza wektorowa i embeddingi – jak model „rozumie" treść
Każdy chunk przekształcam w wektor liczbowy za pomocą modelu embeddingowego. Wektor ten trafia do bazy wektorowej, takiej jak Pinecone, Weaviate, Qdrant lub lokalne ChromaDB. Gdy użytkownik zadaje pytanie, system zamienia je na ten sam format wektorowy i wyszukuje najbliższych sąsiadów w przestrzeni semantycznej. To pozwala znaleźć fragmenty o podobnym znaczeniu, nawet jeśli użytkownik użyje innych słów niż te w dokumencie.
Prompt i kontekst – jak przekazać znalezioną wiedzę do modelu
Znalezione fragmenty wklejam do promptu systemowego jako kontekst, zazwyczaj w formie:
Odpowiedz na pytanie użytkownika wyłącznie na podstawie poniższych fragmentów. Jeśli odpowiedź nie znajduje się w tekście, napisz, że nie posiadasz takich informacji.
Dodaję też identyfikatory źródeł, żeby można było wskazać dokładny dokument. To prosta, ale skuteczna bariera przed wymyślaniem faktów.
Jak unikać halucynacji – trzy reguły weryfikacji odpowiedzi
Sam RAG nie eliminuje halucynacji w całości. Stosuję trzy dodatkowe reguły:
- Threshold podobieństwa – jeśli najbliższy chunk nie przekracza ustalonego progu podobieństwa w wybranej metryce, system nie generuje odpowiedzi z dokumentu, tylko zwraca komunikat o braku danych.
- Cytowanie źródeł – każda odpowiedź musi zawierać odnośnik do konkretnego pliku i sekcji. Jeśli model nie potrafi wskazać źródła, odpowiedź jest odrzucana.
- Walidacja formatu – w przypadku danych liczbowych, takich jak ceny czy terminy, sprawdzam, czy wyekstrahowana wartość rzeczywiście występuje w oryginalnym chunku, a nie jest interpretacją modelu.
Koszty i infrastruktura: kiedy RAG opłaca się w polskiej firmie
Dla małych i średnich firm kluczowe jest, żeby koszt nie przekroczył wartości. Baza wektorowa dla kilku tysięcy dokumentów mieści się w darmowych limitach większości dostawców. Koszty generowania embeddingów są niskie i zazwyczaj pokrywane w ramach darmowych limitów API lub niewielkich opłat za przetworzony wolumen. Droższe bywa API modelu generującego odpowiedzi, ale tutaj RAG pomaga też obniżyć zużycie tokenów, bo model syntetyzuje podany kontekst zamiast polegać na ogólnej wiedzy. Jeśli firma przetwarza wrażliwe dane, rozważam wdrożenie lokalnego stosu (self-hosted embedding + LLM), choć wtedy rosną wymagania sprzętowe i czas konfiguracji.
Najczęstsze błędy przy pierwszym wdrożeniu
Z moich obserwacji wynikają cztery powtarzające się problemy:
- Zbyt małe chunki – utrata kontekstu sprawia, że model nie rozumie, do czego odnosi się znaleziony zapis.
- Brak aktualizacji bazy – dokumenty się zmieniają, a wektory pozostają stare. System musi mieć mechanizm ponownego indeksowania.
- Nadmierne zaufanie do promptu – samo napisanie „odpowiedz tylko na podstawie dokumentów" nie wystarczy bez technicznej kontroli w postaci thresholdu czy fallbacku.
- Pominięcie monitoringu – bez logowania zapytań i źródeł nie wiemy, kiedy system zaczyna odpowiadać błędnie.
Checklist przed uruchomieniem produkcyjnym
Przed oddaniem systemu użytkownikom końcowym weryfikuję:
- Wszystkie źródła są tekstowo wyciągalne i pozbawione śmieciowych znaków.
- Chunking zachowuje granice semantyczne (zdania, sekcje).
- Baza wektorowa zwraca wyniki z metryką podobieństwa, nie tylko rankingiem.
- Prompt zawiera jasną instrukcję odmowy przy braku danych.
- Odpowiedzi są logowane wraz ze wskazaniem źródła dla audytu jakości.
- Istnieje procedura ponownego indeksowania po zmianie dokumentów.
Jeśli w Twojej firmie gromadzisz dokumentację, oferty lub regulaminy i chcesz, żeby AI odpowiadało na ich podstawie zamiast wymyślać fakty, pomogę zaprojektować architekturę RAG dopasowaną do Twoich zasobów. Zaczynam zawsze od audytu dostępnych danych i weryfikacji, czy struktura dokumentów pozwoli na sensowne wyszukiwanie semantyczne – bez tego nawet najlepszy model nie pomoże.
Michał Kasprzyk
Tworzę nowoczesne strony internetowe dla firm z całej Polski. Specjalizuję się w szybkich, bezpiecznych i zoptymalizowanych pod SEO witrynach.
Więcej o mniePowiązane artykuły
Automatyczne tworzenie i aktualizowanie landing page’ów z AI w n8n: jak generować podstrony kampaniowe pod słowa kluczowe
Jak zautomatyzować tworzenie landing page'ów w n8n z AI? Praktyczny przewodnik po generowaniu podstron kampaniowych, publikacji przez API i aktualizacji treści bez ręcznej pracy.
Routing zapytań do modeli LLM w n8n: jak klasyfikować intencje i dobierać modele AI
Dowiedz się, jak wdrożyć routing zapytań do modeli LLM w n8n za pomocą klasyfikacji intencji, aby optymalizować koszty i dobierać odpowiednie modele AI do każdego zadania.
Automatyczna analiza konkurencji z AI w n8n: jak monitorować strony rywali, oferty i zmiany treści
Tworzę przepływy n8n, które automatycznie monitorują konkurencję, śledzą zmiany ofert i analizują treści stron rywali bez ręcznego przeglądu.
Potrzebujesz strony internetowej?
Skontaktuj się ze mną, aby omówić Twój projekt. Pierwsza konsultacja jest bezpłatna.
Zamów bezpłatną wycenę