Zbudowałem własną wyszukiwarkę wiedzy o klientach. Oto co mi to dało

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

Czytaj też: asystencie AI który pisze maile, Morning Dashboard - jak wygląda mój poranek z AI.

You've successfully subscribed to cybulski.ai
Great! Next, complete checkout for full access to cybulski.ai
Welcome back! You've successfully signed in.
Unable to sign you in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.