Firmy płacące 200-500 zł miesięcznie za chatbota SaaS często nie zdają sobie sprawy, że ten sam efekt można uzyskać, hostując rozwiązanie samodzielnie za jednorazowy koszt wdrożenia. Poniżej pokazuję, jak zbudować chatbot AI własny oparty na architekturze RAG, korzystając wyłącznie z narzędzi open-source.
Szybka odpowiedź
Własny chatbot AI do obsługi FAQ bez subskrypcji buduje się z trzech elementów: bazy wektorowej (np. Qdrant), modelu językowego (lokalnego lub przez API) i prostego serwisu łączącego te dwa elementy metodą RAG. Całość hostuje się na własnym serwerze, płacąc jednorazowo za wdrożenie i miesięcznie tylko za infrastrukturę, nie za licencję.
Najważniejsze wnioski
- RAG (Retrieval-Augmented Generation) pozwala chatbotowi odpowiadać na podstawie własnej bazy FAQ, bez konieczności trenowania modelu od zera.
- Qdrant jako baza wektorowa open-source działa lokalnie w kontenerze Docker i nie wymaga opłat licencyjnych.
- Wybór między modelem lokalnym a API (OpenAI, Anthropic) to kompromis między kosztem zapytań a wymaganiami sprzętowymi.
- Wdrożenie własnego rozwiązania kosztuje jednorazowo, a utrzymanie to zazwyczaj kilkadziesiąt złotych miesięcznie za serwer.
- Aktualizacja bazy wiedzy nie wymaga kontaktu z dostawcą, wystarczy ponowna indeksacja dokumentów.
Czym różni się chatbot RAG od gotowego SaaS
Popularne platformy typu Intercom, Tidio czy Crisp z modułem AI działają na zasadzie abonamentu, gdzie płacisz za liczbę konwersacji, użytkowników albo zapytań do modelu. To wygodne, ale generuje koszt, który rośnie razem z ruchem na stronie. Przy 10 000 zapytań miesięcznie rachunek bywa zauważalny, a firma nie ma kontroli nad tym, gdzie fizycznie trafiają dane klientów.
Chatbot AI własny działa inaczej. Zamiast płacić za dostęp do cudzej infrastruktury, budujesz system, który składa się z bazy wektorowej przechowującej treść FAQ oraz modelu językowego generującego odpowiedzi na podstawie znalezionych fragmentów. Cała logika mieści się w kilkuset liniach kodu i działa na Twoim serwerze. Koszt wdrożenia jest jednorazowy, a dalsze utrzymanie sprowadza się do opłaty za VPS, która rzadko przekracza 100 zł miesięcznie.
W projektach, które realizowaliśmy w EXOLAB, różnica w skali roku bywała kilkukrotna na korzyść własnego hostingu, zwłaszcza przy większym ruchu. Dodatkowo klient zachowuje pełną własność kodu i danych, bez ryzyka, że dostawca SaaS zmieni cennik albo zamknie usługę.
Architektura systemu RAG krok po kroku
Przygotowanie i podział treści FAQ
Pierwszy krok to zebranie wszystkich pytań i odpowiedzi w jednym miejscu, najlepiej w formacie tekstowym lub Markdown. Każdą odpowiedź trzeba podzielić na fragmenty (tzw. chunki) o długości 200-500 tokenów. Zbyt duże fragmenty rozmywają kontekst, zbyt małe tracą sens semantyczny. W praktyce dobrze działa podział po nagłówkach sekcji FAQ, jeśli tekst już ma taką strukturę.
Generowanie wektorów (embeddingów)
Każdy fragment tekstu trzeba przekształcić w wektor liczb, który reprezentuje jego znaczenie semantyczne. Do tego służą modele embeddingowe, np. text-embedding-3-small od OpenAI albo open-source’owe modele z rodziny sentence-transformers, które działają lokalnie bez wysyłania danych na zewnątrz. Wybór modelu lokalnego eliminuje koszt API na tym etapie, kosztem większego zużycia zasobów serwera.
Indeksacja w Qdrant
Qdrant to baza wektorowa, którą stawia się jednym poleceniem Dockera (docker run qdrant/qdrant). Po wygenerowaniu embeddingów wystarczy je zapisać w kolekcji Qdrant razem z oryginalnym tekstem fragmentu jako metadanymi. Baza obsługuje wyszukiwanie podobieństwa kosinusowego w milisekundach, nawet przy kilkudziesięciu tysiącach fragmentów, co w zupełności pokrywa potrzeby typowego FAQ firmowego.
Zapytanie użytkownika i generowanie odpowiedzi
Kiedy użytkownik zadaje pytanie na stronie, system zamienia je na wektor tym samym modelem embeddingowym, wyszukuje w Qdrant najbardziej podobne fragmenty FAQ, a następnie przekazuje je jako kontekst do modelu LLM razem z pytaniem. Model generuje odpowiedź opartą wyłącznie na dostarczonym kontekście, co znacząco ogranicza ryzyko halucynacji. Tu pojawia się kolejna decyzja: model lokalny (np. Llama 3 przez Ollama) czy API (OpenAI, Anthropic). Model lokalny nie generuje kosztu za zapytanie, ale wymaga mocniejszego serwera z GPU dla przyzwoitej szybkości odpowiedzi.
Wybór modelu LLM: lokalny czy przez API
Decyzja między modelem hostowanym lokalnie a płatnym API to najczęstszy dylemat przy budowie własnego chatbota. Model lokalny, uruchomiony przez Ollama lub podobne narzędzie, eliminuje koszt za token, ale wymaga serwera z odpowiednią kartą graficzną, co samo w sobie jest inwestycją. Dla firm z ruchem do kilku tysięcy zapytań miesięcznie często bardziej opłacalne jest korzystanie z API modelu komercyjnego, płacąc dosłownie ułamki centa za zapytanie, bez konieczności inwestowania w sprzęt.
Ważne: korzystanie z API modelu językowego nie jest tym samym co subskrypcja SaaS. Płacisz za realne zużycie tokenów, nie za licencję na produkt, i w każdej chwili możesz zmienić dostawcę albo przełączyć się na model lokalny, bez utraty danych czy kodu. To fundamentalna różnica względem zamknięcia w ekosystemie jednej platformy chatbotowej.
Automatyzacja odpowiedzi klientom i integracja ze stroną
Sam mechanizm RAG to tylko połowa pracy. Żeby chatbot faktycznie działał jako automatyzacja odpowiedzi klientom, trzeba go osadzić na stronie w formie widgetu, który komunikuje się z backendem przez proste API (REST albo webhook). Backend można napisać w Node.js lub Pythonie, wystawiając jeden endpoint przyjmujący pytanie i zwracający odpowiedź wraz z ewentualnymi linkami do źródłowych sekcji FAQ.
Dobrą praktyką jest logowanie pytań, na które system nie znalazł dobrej odpowiedzi w bazie wektorowej. Taka lista pokazuje realne braki w treści FAQ i pozwala systematycznie rozbudowywać bazę wiedzy, zamiast zgadywać, czego brakuje. W dłuższej perspektywie to najlepszy sposób na podnoszenie jakości odpowiedzi bez ingerencji w kod samego systemu.
Koszty utrzymania w porównaniu z SaaS
Typowy VPS z 4-8 GB RAM, wystarczający do hostowania Qdrant i lekkiego backendu, kosztuje 50-150 zł miesięcznie w zależności od dostawcy. Jeśli decydujesz się na model LLM przez API, dodatkowy koszt zależy od liczby zapytań, ale przy 5000 zapytań miesięcznie i krótkich odpowiedziach rzadko przekracza kilkadziesiąt złotych. Porównaj to z abonamentem SaaS na poziomie 300-800 zł miesięcznie za podobną funkcjonalność, a różnica roczna łatwo przekracza kilka tysięcy złotych.
Jednorazowy koszt wdrożenia (analiza FAQ, konfiguracja Qdrant, napisanie logiki RAG, integracja z frontendem) zwraca się więc zwykle w ciągu kilku miesięcy, a dalsze utrzymanie jest znacznie tańsze niż powtarzalna subskrypcja. Dodatkowo cały kod, baza danych i konfiguracja zostają u klienta, bez ryzyka utraty dostępu przy zmianie dostawcy usługi.
Najczęściej zadawane pytania
Czy chatbot AI własny wymaga karty kredytowej i stałych opłat?
Nie, jeśli hostujesz go samodzielnie na własnym serwerze lub VPS. Płacisz jedynie za infrastrukturę (serwer, ewentualnie zapytania do API modelu LLM, jeśli nie używasz modelu lokalnego) i za wdrożenie, ale nie za licencję SaaS naliczaną miesięcznie.
Jaki koszt trzeba realnie policzyć przy własnym chatbocie RAG?
Koszt jednorazowego wdrożenia (analiza, kod, testy) plus koszt hostingu, zwykle kilkadziesiąt złotych miesięcznie za VPS. Jeśli korzystasz z modelu lokalnego, koszt zapytań spada praktycznie do zera, płacisz tylko za prąd i moc serwera.
Czy trzeba znać programowanie, żeby wdrożyć taki system?
Do samodzielnego wdrożenia potrzebna jest znajomość Pythona lub Node.js oraz podstaw baz wektorowych. Firmy bez zespołu technicznego zazwyczaj zlecają to zewnętrznemu wykonawcy, co jest jednorazowym kosztem, nie powtarzalną subskrypcją.
Czy chatbot RAG poradzi sobie z pytaniami, których nie ma w bazie FAQ?
System RAG odpowiada tylko na podstawie dostarczonych danych, więc jeśli pytanie wykracza poza bazę wiedzy, powinien zwrócić informację, że nie ma odpowiedzi, zamiast zmyślać fakty. To projektowa decyzja, którą ustawia się w promptach systemowych.
Jak często trzeba aktualizować bazę wiedzy chatbota?
Zależy od dynamiki zmian w FAQ. Dodanie nowego dokumentu lub aktualizacja istniejącego trwa kilka minut, to kwestia ponownego zaindeksowania treści w bazie wektorowej. Nie wymaga to interwencji dostawcy zewnętrznego.
Słowniczek
RAG (Retrieval-Augmented Generation)
Architektura, w której model językowy generuje odpowiedź na podstawie fragmentów tekstu wyszukanych w bazie wiedzy, a nie tylko na podstawie własnej wiedzy wewnętrznej.
Baza wektorowa
System bazodanowy zoptymalizowany do przechowywania i wyszukiwania wektorów liczbowych reprezentujących znaczenie semantyczne tekstu, np. Qdrant.
Embedding
Liczbowa reprezentacja tekstu, generowana przez model językowy, umożliwiająca porównywanie znaczenia różnych fragmentów treści.
Chunk
Fragment dłuższego dokumentu, podzielony na mniejsze części przed zaindeksowaniem w bazie wektorowej, żeby wyszukiwanie było precyzyjne.
LLM (Large Language Model)
Model językowy dużej skali, generujący tekst na podstawie wzorców nauczonych z danych treningowych, np. GPT, Llama czy Claude.