RAG (retrieval-augmented generation) to najprostszy sposób, żeby model odpowiadał na pytania o Twoją wiedzę: dokumenty, procedury, bazy danych, a nie tylko to, co „pamięta” z treningu. Brzmi prosto, ale diabeł tkwi w szczegółach, zwłaszcza po polsku. Oto jak buduję taki system, żeby był wiarygodny i bezpieczny.
1. Źródła i ingest
Wiedza firmowa rzadko leży w jednym miejscu: PDF-y, wiki, e-maile, tabele w bazie, transkrypcje rozmów. Pierwszy krok to adaptery, które normalizują każde źródło do wspólnego formatu i czyszczą szum (stopki, nagłówki, powtórzenia). Im czystsze wejście, tym lepsze odpowiedzi, na tym etapie wygrywa się albo przegrywa jakość.
2. Chunking: dziel mądrze, nie na sztywno
Dzielenie tekstu na fragmenty co 500 znaków „bo tak” psuje kontekst w połowie zdania. Lepiej dzielić po strukturze: akapity, sekcje, nagłówki, z niewielkim zakładem (overlap), żeby zdanie na granicy nie zginęło. Do każdego fragmentu dokładam metadane: źródło, sekcję, datę, uprawnienia, dzięki nim mogę później filtrować i cytować.
3. Embeddingi i polski
Tu zaczyna się specyfika języka polskiego. Fleksja, odmiana przez przypadki i kolejność słów sprawiają, że nie każdy model embeddingów radzi sobie tak samo dobrze jak po angielsku. Co się sprawdza:
- Dobre modele wielojęzyczne radzą sobie z polskim bez tłumaczenia, ale warto je przetestować na swoich danych, a nie na benchmarku.
- Normalizacja zapytań (lowercase, spójna interpunkcja) pomaga, ale nie nadgorliwie, bo można zgubić znaczenie.
- Słownik synonimów i skrótów branżowych (np. „FV” = „faktura”) realnie poprawia trafność wyszukiwania.
4. Retrieval i reranking
Samo wyszukiwanie wektorowe zwraca „podobne” fragmenty, ale nie zawsze najtrafniejsze. Dlatego dokładam dwie rzeczy: wyszukiwanie hybrydowe (wektory + słowa kluczowe, bo numery umów i nazwy własne lepiej łapie wyszukiwanie tekstowe) oraz reranking, czyli przepuszczenie kilkunastu kandydatów przez model, który układa je wg realnej trafności do pytania. To często największy skok jakości w całym pipeline.
5. Odpowiedź z cytowaniami
Asystent, który odpowiada bez źródeł, jest bezużyteczny w firmie, nikt mu nie zaufa. Dlatego każda odpowiedź zawiera cytowania do konkretnych fragmentów, a przy niskiej pewności model mówi wprost „nie wiem” i proponuje eskalację do człowieka. To buduje zaufanie szybciej niż jakakolwiek dokładność „na oko”.
6. Evals: skąd wiesz, że działa?
Bez pomiaru RAG to wróżenie. Buduję mały zestaw testowy realnych pytań z poprawnymi odpowiedziami i mierzę trafność wyszukiwania oraz jakość odpowiedzi przy każdej zmianie promptu czy modelu. Dzięki temu „poprawka” naprawdę poprawia, a nie psuje coś po cichu.
7. Uprawnienia i bezpieczeństwo
Najczęściej pomijany, a krytyczny krok. Asystent nie może pokazać użytkownikowi dokumentu, do którego ten nie ma dostępu. Uprawnienia filtruję na poziomie retrievalu (metadane przy fragmentach), a dane wrażliwe (PII) redaguję jeszcze przed indeksowaniem. Do tego logi, kto o co pytał, na wypadek audytu.