Icon
 Oferta PDF						Oferta PDF Icon
 Napisz						Napisz Icon
 Zadzwoń						Zadzwoń Icon
 Projekty						Projekty
Wróć do listy
  • ai
  • technologie
  • programowanie

Asystent AI z RAG na prywatnej infrastrukturze

Jakub
Jakub, Co-founder, Head of technology
10 minut czytania • 8.05.2026
Asystent AI z RAG na prywatnej infrastrukturze

Wielojęzyczny chatbot AI działający w całości na serwerze klienta. Zewnętrzne API AI nie są używane, a dane nie opuszczają infrastruktury.

Cel projektu

Instytucja finansowa w EU potrzebowała asystenta konwersacyjnego na swoją platformę webową. Asystent miał odpowiadać na pytania użytkowników w wielu językach na podstawie dwóch źródeł danych: codziennego feedu ustrukturyzowanych rekordów z zewnętrznego API oraz biblioteki dokumentów polityk i procedur.

Głównym ograniczeniem była prywatność danych – przetwarzanie musiało odbywać się on-site, a system musiał funkcjonować w ramach ograniczonych zasobów sprzętowych. Rozwiązanie zostało zbudowane w architekturze RAG (Retrieval-Augmented Generation).

Klient: Organizacja sektora publicznego w EU
Czas realizacji: 8 tygodni
Zespół: 2 deweloperów, QA i PM
Status: W produkcji

Szukasz doświadczonego zespołu programistycznego? Porozmawiajmy o konkretach.

Wyzwania i ograniczenia

Cztery ograniczenia ukształtowały nasze decyzje techniczne:

  • Prywatność danych.
    Profile użytkowników, historia konwersacji i dokumenty źródłowe nie mogły opuszczać serwerów klienta. To wykluczyło hostowane API AI.
  • Budżet sprzętowy.
    System musiał działać na ograniczonych zasobach GPU, co ograniczało rozmiar wykorzystywanych modeli.
  • Wielojęzyczność.
    Asystent musiał obsługiwać wiele języków – przełączając się naturalnie w zależności od danych wejściowych użytkownika.
  • Dane na żywo.
    Asystent musiał pracować z codziennie aktualizowanymi rekordami, a nie ze statycznymi informacjami.

Architektura: cztery warstwy

WarstwaFunkcja
Warstwa aplikacjiObsługuje routing, uwierzytelnianie i zarządzanie sesjami
Platforma AIUruchamia modele językowe lokalnie, bez zewnętrznych wywołań sieciowych
Baza wektorowaPrzechowuje reprezentacje dokumentów i wyszukuje podobieństwa w celu pobrania kontekstu
Transport czasu rzeczywistegoStrumieniuje odpowiedzi AI na frontend, zapewniając responsywność interfejsu

Przepływ RAG

Diagram przedstawiający przepływ RAG: wiadomość użytkownika, walidacja, wybór źródła, wyszukiwanie wektorowe, budowa promptu, generowanie odpowiedzi, stream na bieżąco.
Przepływ pipeline RAG
  1. 1. Użytkownik wysyła wiadomość.
  2. 2. Warstwa guardrail waliduje dane wejściowe pod kątem bezpieczeństwa.
  3. 3. Model określa potrzeby wyszukiwania – używa narzędzi, aby zdecydować, które źródło danych odpytać.
  4. 4. Zastosowanie narzędzia wyszukiwania:
    • Zapytanie jest konwertowane na wektor (embedding).
    • System wykonuje wyszukiwanie wektorowe, aby znaleźć odpowiednie dokumenty lub rekordy.
  5. 5. Składanie promptu – pobrany kontekst, profil użytkownika i historia czatu łączone są w jeden prompt.
  6. 6. Generowanie odpowiedzi – model generuje odpowiedź na podstawie połączonych danych.
  7. 7. Strumieniowanie w czasie rzeczywistym – odpowiedź jest wysyłana na frontend natychmiast w miarę generowania.

Wyzwania techniczne i ich rozwiązania

Produkcyjne AI na ograniczonych zasobach

Większość zaawansowanych modeli wymaga znacznych zasobów sprzętowych. Wybraliśmy kompaktowy model z silnym wsparciem wielojęzycznym i wydajnym działaniem na ograniczonym sprzęcie. Architektura RAG kompensuje mniejszy rozmiar modelu, wstrzykując konkretny kontekst w momencie zapytania.

Obrona przed prompt injection

Mniejsze modele mogą być bardziej podatne na manipulację ze strony użytkowników. Wdrożyliśmy wielowarstwową obronę, w tym guardrails oparte na wektorach, które sprawdzają zapytania na podstawie list dozwolonych/zabronionych zanim trafią do modelu, oraz specjalistyczne techniki zabezpieczania promptów.

Zarządzanie oknem kontekstu

Aby zmieścić się w limitach danych, każdy komponent został skompresowany. Obejmowało to ograniczenie historii konwersacji, wstępne streszczanie dokumentów na etapie indeksowania oraz usuwanie zbędnych pól z wyników narzędzi.

Jakość embeddingów i przetwarzanie danych

Rekordy źródłowe różniły się jakością i długością. Wdrożyliśmy automatyczne parsowanie i filtrowanie w celu oczyszczania danych, zastosowaliśmy ustrukturyzowane streszczanie przed wektoryzacją oraz ręczną segmentację dużych dokumentów według tematów, aby zapewnić lepszą trafność wyszukiwania.

Co zbudowaliśmy

  • Zarządzanie sesjami.
    Systemy do obsługi profili użytkowników i historii czatu w ramach ścisłych ograniczeń.
  • Indeksowanie dokumentów.
    Zautomatyzowane narzędzia do ładowania i wektoryzacji plików polityk.
  • Pipeline synchronizacji rekordów.
    Codzienny import i czyszczenie danych z zewnętrznego API.
  • Narzędzia wyszukiwania.
    Specjalistyczne funkcje wyszukiwania dostępne dla agenta AI.

Stack technologiczny

KomponentTechnologia
Framework backendowyNowoczesny framework enterprise Symfony 8
Platforma AIOllama – lokalne środowisko hostingu modeli (alternatywnie Bedrock)
ModeleWielojęzyczne modele językowe i embeddingowe
Baza danychPostgreSQL z pgvector – rozwiązanie bazodanowe z obsługą wektorów
KomunikacjaServer-Sent Events – strumieniowanie w czasie rzeczywistym i asynchroniczna obsługa wiadomości

Efekt

Wydajne czasy odpowiedzi i codzienna synchronizacja 20-30k rekordów (1-6k aktualizowacji dziennie).
Pełne wsparcie wielojęzyczne. Wspólna przestrzeń wektorowa dla języków umożliwia rozmowę w dowolnym języku niezależnie od języka źródła danych (niepotrzebna warstwa translacji).
Pełna suwerenność danych. Nic nie opuszcza infrastruktury klienta.
Przewidywalne i ustalone koszty. Brak opłat za tokeny zewnętrznych API – klient ponosi jedynie koszt serwera.

Ten projekt pokazuje, że produkcyjnej jakości asystent RAG może działać na ograniczonym, prywatnym sprzęcie. Sukces zależy od inżynierii w ramach ograniczeń: inteligentnego zarządzania kontekstem, solidnych warstw bezpieczeństwa i wydajnych pipeline’ów danych.

Podobał Ci się ten artykuł? Udostępnij go!
Szukasz doświadczonego zespołu programistycznego? Porozmawiajmy o konkretach.
Skontaktuj się z nami
Marcin Stawowiak
Marcin Stawowiak
Co-founder, Executive Manager
Szukasz doświadczonego zespołu programistycznego?
Porozmawiajmy o konkretach.
Smultron Web Development
ul. Sławkowska 12
31-014 Kraków
NIP: 6762482785