Baza wiedzy RAG na Open WebUI sprawia, że firmowy asystent AI odpowiada na podstawie aktualnej dokumentacji - instrukcji WMS i YMS, procedur magazynowych i opisów integracji z ERP. Dokumenty są dzielone na fragmenty, zamieniane na embeddingi i przechowywane w bazie wektorowej. Każda odpowiedź zawiera cytowania źródeł, a zakres widocznych treści zależy od uprawnień zalogowanego użytkownika.
Przegląd zagadnień
| Zagadnienie | W skrócie |
|---|---|
| Czym jest RAG i po co asystentowi baza wiedzy | RAG (Retrieval-Augmented Generation) to połączenie dwóch kroków: wyszukania fragmentów dokumentów pasujących do pytania oraz wygenerowania odpowiedzi… |
| Źródła wiedzy - dokumentacja WMS, YMS i procedury | Bazę wiedzy firmowego asystenta buduje się z materiałów, które i tak powstają podczas wdrożeń: instrukcji użytkownika systemów WMS i YMS, procedur… |
| Dzielenie dokumentów i embeddingi | Model przyjmuje ograniczoną liczbę tokenów kontekstu, a wyszukiwanie działa precyzyjniej na krótkich fragmentach niż na całych dokumentach. |
| Cytowania źródeł i ograniczanie zmyśleń | Sama obecność dokumentów w kontekście nie gwarantuje, że model z nich skorzysta. |
| Kontrola dostępu do treści | Nie każdy dokument powinien być widoczny dla każdego pracownika. |
| Aktualizacja bazy wiedzy przez n8n | Baza wiedzy ma wartość tylko wtedy, gdy nadąża za zmianami w procedurach. |
Model językowy sam z siebie nie zna wewnętrznych procedur firmy - zna język i ogólną wiedzę z okresu treningu. Aby asystent poprawnie odpowiadał na pytania w rodzaju "jak zarejestrować przyjęcie z awizacji w Studio VSS.net", potrzebuje dostępu do bieżącej dokumentacji. Rozwiązaniem jest RAG - wzorzec, w którym zapytanie najpierw uruchamia wyszukiwanie w bazie wiedzy, a dopiero odnalezione fragmenty trafiają do modelu jako kontekst odpowiedzi.
Czym jest RAG i po co asystentowi baza wiedzy
RAG (Retrieval-Augmented Generation) to połączenie dwóch kroków: wyszukania fragmentów dokumentów pasujących do pytania oraz wygenerowania odpowiedzi na ich podstawie. W Open WebUI działa to tak: użytkownik zadaje pytanie, system zamienia je na embedding, baza wektorowa zwraca kilka najbardziej zbliżonych znaczeniowo fragmentów, a model formułuje odpowiedź, mając te fragmenty w kontekście.
Taka architektura ma dwie istotne zalety. Po pierwsze, odpowiedzi opierają się na dokumentach, które można wskazać i zweryfikować, zamiast na trudnej do skontrolowania wiedzy modelu. Po drugie, aktualizacja wiedzy sprowadza się do podmiany dokumentu w bazie - nie wymaga ponownego trenowania ani dostrajania modelu.
Źródła wiedzy - dokumentacja WMS, YMS i procedury
Bazę wiedzy firmowego asystenta buduje się z materiałów, które i tak powstają podczas wdrożeń: instrukcji użytkownika systemów WMS i YMS, procedur magazynowych, opisów integracji z ERP, dokumentacji API, notatek powdrożeniowych oraz zbiorów pytań i odpowiedzi z obsługi zgłoszeń. Open WebUI przyjmuje pliki PDF, DOCX, Markdown i TXT, a także treści pobierane z adresów URL, na przykład z firmowej bazy wiedzy lub intranetu.
Warto zadbać o jakość materiału wejściowego. Dokumenty ze skanów bez warstwy tekstowej wymagają wcześniejszego OCR, tabele lepiej zapisać w formie, którą da się odczytać liniowo, a bardzo długie instrukcje warto podzielić tematycznie już na etapie przygotowania. Im czystszy tekst wejściowy, tym trafniejsze wyszukiwanie.
Dzielenie dokumentów i embeddingi
Model przyjmuje ograniczoną liczbę tokenów kontekstu, a wyszukiwanie działa precyzyjniej na krótkich fragmentach niż na całych dokumentach. Dlatego każdy dokument jest dzielony na fragmenty (chunking) o zbliżonej wielkości, z niewielkim zakładem między kolejnymi fragmentami, aby zdanie na granicy podziału nie zgubiło sensu. W Open WebUI wielkość fragmentu i zakład ustawia się w konfiguracji dokumentów.
Każdy fragment jest następnie zamieniany na embedding - wektor liczb opisujący znaczenie tekstu - i zapisywany w bazie wektorowej wraz z metadanymi: nazwą dokumentu, sekcją, datą i kolekcją. Podczas odpowiadania system porównuje embedding pytania z embeddingami fragmentów i wybiera kilka najbliższych. Dobór modelu embeddingów ma znaczenie dla języka polskiego - modele wielojęzyczne zwykle radzą sobie lepiej z polskimi zapytaniami niż modele trenowane głównie na angielskim.
Cytowania źródeł i ograniczanie zmyśleń
Sama obecność dokumentów w kontekście nie gwarantuje, że model z nich skorzysta. Prompt systemowy asystenta powinien wprost instruować: odpowiadaj wyłącznie na podstawie przekazanych fragmentów, a gdy nie zawierają one odpowiedzi - powiedz o tym zamiast zgadywać. Taka instrukcja wyraźnie zmniejsza liczbę odpowiedzi opartych na ogólnej wiedzy modelu zamiast na dokumentacji firmy.
Open WebUI dołącza do odpowiedzi listę cytowanych źródeł - nazwy dokumentów i fragmenty, które trafiły do kontekstu. Użytkownik widzi, skąd pochodzi informacja, i może otworzyć dokument źródłowy. Cytowania pełnią też rolę informacji zwrotnej dla zespołu utrzymującego bazę: jeśli asystent regularnie cytuje nieaktualny plik, to sygnał, że wymaga on podmiany.
Kontrola dostępu do treści
Nie każdy dokument powinien być widoczny dla każdego pracownika. W Open WebUI bazę wiedzy dzieli się na kolekcje, a kolekcje przypisuje do grup użytkowników. Podczas odpowiadania asystent przeszukuje wyłącznie kolekcje dostępne dla zalogowanej osoby, więc materiały działu wdrożeń czy dane z umów nie pojawią się w odpowiedziach dla użytkownika spoza uprawnionej grupy.
Ten sam mechanizm pozwala prowadzić kilka wariantów asystenta na jednej instalacji - na przykład asystenta dla zespołu wsparcia z pełną dokumentacją techniczną oraz asystenta dla klientów z wąskim zestawem publicznych instrukcji. Rozdział odbywa się na poziomie kolekcji i grup, bez powielania infrastruktury.
Aktualizacja bazy wiedzy przez n8n
Baza wiedzy ma wartość tylko wtedy, gdy nadąża za zmianami w procedurach. Ręczne wgrywanie plików szybko przestaje być wykonalne, dlatego aktualizację warto zautomatyzować workflowem w n8n. Proces obserwuje repozytorium dokumentów firmowych, a po wykryciu zmiany pobiera nową wersję pliku, usuwa z bazy wektorowej fragmenty poprzedniej wersji i dodaje embeddingi nowej.
Ten sam workflow może raportować wynik do kanału zespołu - ile dokumentów zaktualizowano i czy któryś plik nie przeszedł przetwarzania. Połączenie Open WebUI z n8n opisaliśmy szerzej w artykule Bezpieczna integracja Open WebUI i n8n, a architekturę samego asystenta w tekście Ssara - firmowy asystent AI zbudowany na Open WebUI.
Słownik pojęć
- RRAG
- Retrieval-Augmented Generation - model odpowiada na podstawie fragmentów dokumentów odnalezionych w bazie wiedzy, a nie wyłącznie wiedzy z treningu.
- CChunking
- Podział dokumentu na krótkie fragmenty o zbliżonej wielkości, z niewielkim zakładem, które można samodzielnie wyszukiwać.
- EEmbedding
- Reprezentacja fragmentu tekstu jako wektor liczb, pozwalająca porównywać znaczenie niezależnie od użytych słów.
- BBaza wektorowa
- Magazyn embeddingów z metadanymi, zwracający dla zapytania najbardziej zbliżone znaczeniowo fragmenty dokumentów.
- CCytowanie źródła
- Odnośnik do dokumentu i fragmentu, na podstawie którego powstała odpowiedź, umożliwiający jej weryfikację.