Mam problem, który ma każdy kto prowadzi kilkanaście projektów jednocześnie.
Klient dzwoni. Pyta o coś co ustalaliśmy trzy miesiące temu. Albo wysyła maila nawiązując do rozmowy sprzed pół roku. Albo - i to zdarza się najczęściej - sam chcę sprawdzić co dokładnie obiecałem, zanim odpiszę.
Przez długi czas radziłem sobie z tym tak jak większość: szukałem w skrzynce, przeglądałem notatki, pytałem współpracowników. Traciłem na to minuty, które sumowały się w godziny. I nigdy nie byłem pewny, że znalazłem wszystko co powinienem.
Rok temu postanowiłem to naprawić. Zbudowałem RAG.
Co to jest RAG i dlaczego nie używam gotowego narzędzia
RAG to skrót od Retrieval-Augmented Generation. W uproszczeniu: system który najpierw wyszukuje odpowiednie fragmenty z bazy dokumentów, a potem generuje odpowiedź na ich podstawie. Zamiast pytać model AI o ogólną wiedzę - pytasz go o swoją wiedzę.
Gotowych narzędzi tego typu jest sporo. Notion AI, Guru, Confluence z AI, różne chatboty które "uczysz" swoich danych. Testowałem kilka z nich.
Problem był zawsze ten sam: moje dane są w zbyt wielu miejscach i w zbyt różnych formatach. Maile, pliki Word, PDFy, notatki z rozmów, Excele, skrypty Pythona, briefy, umowy. Żadne gotowe narzędzie nie potrafi tego sensownie zindeksować bez ręcznego przenoszenia wszystkiego w jedno miejsce. A ręczne przenoszenie 400+ plików to projekt na kilka tygodni.
Zbudowałem więc własny system - indekser który sam chodzi po katalogach, czyta pliki, dzieli je na fragmenty i zapisuje w lokalnej bazie wektorowej.
Co weszło do systemu - jakie dokumenty i skąd
Indekser obejmuje katalog `c:/AI/idea4me_jarek/` i wszystko co w nim siedzi. To:
- korespondencja z klientami (wyeksportowane wątki mailowe)
- notatki ze spotkań
- briefe, oferty, umowy w formacie Word i PDF
- pliki projektowe - wytyczne, strategie, konfiguracje agentów
- moje własne materiały - Gallup, notatki osobiste, baza wiedzy
Przy ostatnim uruchomieniu system zaindeksował 414 z 456 plików - część jest pomijana celowo (pliki binarne, obrazy, duże archiwa). Łącznie powstało 5337 chunków - czyli fragmentów tekstu z przypisanymi wektorami znaczeniowymi.
Każdy chunk ma rozmiar około 300-500 tokenów. Przy zapytaniu system bierze 5-10 najbardziej zbliżonych fragmentów i przekazuje je modelowi jako kontekst.
Jak to działa w praktyce
Uruchamiam przez terminal:
Albo przez Alex Dashboard - mam tam zakładkę RAG z okienkiem wyszukiwania.
Przykłady zapytań których używam regularnie:
"co ustaliliśmy z Arturem w sprawie kalkulatora frachtu" - system zwraca fragmenty z notatek ze spotkań i maili, gdzie pojawia się temat kalkulatora. Dostaję kontekst w 8 sekund.
"jakie były koszty kampanii Kamena w Q4 2025" - wyszukuje w plikach projektowych i korespondencji, zwraca liczby z odpowiedniego okresu.
"co obiecałem Torro w sprawie aplikacji" - przeszukuje umowy, maile i notatki. Dostaję listę konkretnych ustaleń.
To nie jest wyszukiwarka pełnotekstowa. Nie szuka słów - szuka sensu. Zapytanie "problemy z edytorem u klienta KA4" znajdzie fragmenty gdzie jest mowa o błędach CSS, wklejaniu tekstu z zewnętrznych źródeł i reklamacjach - nawet jeśli w dokumentach nie pada fraza "problemy z edytorem".
Co zmieniło się w codziennej pracy
Przed RAG-iem: gdy klient pytał o coś z przeszłości, traciłem 10-15 minut na szukanie. Przy kilku takich zapytaniach dziennie - godzina w plecy.
Po RAG-u: 10-30 sekund. Dostaję nie tylko odpowiedź, ale też fragment źródłowy z nazwą pliku. Mogę sprawdzić kontekst.
Ale to nie jest największa zmiana. Największa jest inna.
Zanim mam rozmowę z klientem, robię szybkie RAG query: "ostatnie ustalenia z [imię klienta]". Dostaję skrót historii w ciągu pół minuty. Wchodzę na spotkanie przygotowany - nawet jeśli ostatni kontakt był trzy miesiące temu.
Klienci to czują. Nie wiedzą o RAG-u. Wiedzą, że Jarek pamięta.
Czego system nie potrafi
Uczciwy rachunek wymaga też minusów.
Jakość zależy od jakości dokumentów. Jeśli notatka ze spotkania jest napisana chaotycznie albo brakuje jej kluczowych szczegółów - RAG zwróci chaotyczny wynik. Garbage in, garbage out. System nie naprawia złych danych, tylko szybciej je przeszukuje.
Nie rozumie kontekstu relacji. Może mi powiedzieć co ustaliliśmy - nie powie mi jak klient się czuł na tym spotkaniu albo że byliśmy po trudnej rozmowie. Kontekst emocjonalny muszę pamiętać sam.
Indeksowanie wymaga regularności. System nie indeksuje się sam w czasie rzeczywistym. Uruchamiam indekser raz na kilka dni. To oznacza, że bardzo świeże dokumenty mogą nie być jeszcze w bazie.
Halucynacje. Rzadko, ale się zdarzają. Model czasem "dopowiada" fakty których nie ma w dokumentach. Zawsze weryfikuję kluczowe informacje w źródle przed użyciem.
Czy warto to budować dla firmy 1-10 osób
Zależy od jednego: czy masz dużo rozproszonych dokumentów i dużo klientów z historią.
Jeśli prowadzisz 3-4 projekty i masz porządny system notatek w jednym miejscu - RAG prawdopodobnie nie jest ci potrzebny. Notion lub dobry system folderów wystarczy.
Jeśli masz 15+ klientów, kilka lat historii, pliki w różnych formatach i miejscach - koszt zbudowania własnego RAG zwraca się w ciągu tygodnia pracy.
Techniczny próg wejścia jest realny. Mój system działa na fastembed (biblioteka Pythona do wektoryzacji), lokalnej bazie SQLite i modelu wielojęzycznym. Nie wymaga zewnętrznych serwisów ani opłat za API - działa lokalnie, dane zostają u mnie.
Jeśli nie chcesz budować samodzielnie - mogę to zrobić dla ciebie. Zajmuje to zazwyczaj jeden dzień roboczy plus konfiguracja pod konkretne katalogi i formaty plików.
Słownik pojęć
- RAG (Retrieval-Augmented Generation)
- Technika polegająca na połączeniu wyszukiwania w bazie dokumentów z generowaniem odpowiedzi przez model AI. System najpierw wyszukuje trafne fragmenty, potem buduje na ich podstawie odpowiedź.
- Chunk
- Fragment tekstu z dokumentu, zwykle 300-500 tokenów, zapisany w bazie wektorowej. Indeksowanie polega na pocięciu dokumentów na chunki i obliczeniu ich wektorów.
- Baza wektorowa
- Baza danych przechowująca teksty jako wektory liczbowe (embeddingi). Pozwala na wyszukiwanie semantyczne - znajdowanie fragmentów podobnych znaczeniowo, nie tylko słownie.
- Embedding
- Numeryczna reprezentacja tekstu jako wektor w przestrzeni wielowymiarowej. Teksty o podobnym znaczeniu mają bliskie wektory.
Co mogę dla ciebie zrobić
Jeśli chcesz zbudować podobny system w swojej firmie - napisz do mnie: j.cybulski@idea4me.pl
Powiedz gdzie masz dokumenty, w jakich formatach i ilu masz klientów z historią. Ocenię czy RAG ma sens w twoim przypadku i co by to wymagało.
Źródła
- Kim jest Alex AI - jak zbudowałem asystenta który pracuje zanim wstanę
- 5 narzędzi AI których używam codziennie
- fastembed - biblioteka do embeddingów (GitHub)
Czytaj też: asystencie AI który pisze maile, Morning Dashboard - jak wygląda mój poranek z AI.
