# Czat, który wie, kiedy powiedzieć „nie wiem”

Źródło: https://eforb.pl/projects/baza-wiedzy
Język: pl

Baza wiedzy dla Ebi, asystenta na stronie E4B, zbudowana jako RAG: PostgreSQL z pgvector trzyma dokumenty, wersje, zatwierdzenia, fragmenty i wektory. Nowy dokument jest prywatnym szkicem; publikacja wymaga podpisu i zgodnego numeru wersji, a poprawka tworzy nową wersję jako szkic. Czat czyta bazę osobnym kontem z dostępem do jednego widoku, sprawdzanym przy starcie serwera.
Wyszukiwanie łączy lokalny model multilingual-e5-small (ONNX) z BM25 przez RRF; reranker jest opcjonalny i na serwerze wyłączony. Czat bierze pięć sprawdzonych fragmentów, wymaga numerów źródeł w odpowiedzi, sprawdza źródła drugi raz i w razie niezgodności zwraca stałą odmowę. Panel Mapa wiedzy pokazuje dokumenty jako graf z fizyką i ręcznymi powiązaniami przypiętymi do wersji; na odpowiedzi czatu nie wpływa.
Mały test syntetyczny (10 opisów, 18 pytań z odpowiedzią): na 1. miejscu BM25 8, E5 15, RRF 9, z rerankerem 16; w pierwszej piątce BM25 11, E5 18, RRF 18. Wszystkie 6 pytań bez odpowiedzi i tak zwróciło kandydatów, dlatego o odmowie decyduje sprawdzenie źródeł.

## Pełny tekst artykułu

Realizacje · RAG

### Czat, który wie, kiedy powiedzieć „nie wiem”

Zbudowaliśmy bazę wiedzy, z której odpowiada Ebi, asystent na naszej stronie. Każdy tekst zatwierdza człowiek, a gdy czegoś w bazie nie ma, Ebi mówi „nie wiem” zamiast zgadywać.

Publikacja: 31 października 2026

Projekt: E4B · Baza wiedzy

#### Asystent, który nie zmyśla

Asystent AI na stronie firmy pomaga tylko wtedy, gdy klient może mu wierzyć.

Zwykły model językowy zapytany o firmę odpowie płynnie, nawet jeśli nic o niej nie wie. Poda usługę, cenę i termin. Zabrzmi pewnie, a może to wszystko wymyślić. Klient nie odróżni faktu od zgadywania, a firma potem tłumaczy się z obietnic, których nikt nie złożył.

Dlatego zbudowaliśmy bazę wiedzy, z której korzysta Ebi, asystent na naszej stronie. Zespół wpisuje do niej opisy usług i fakty, a ktoś je zatwierdza. Ebi odpowiada tylko na podstawie tych tekstów i podaje, skąd wziął odpowiedź. Gdy w bazie nie ma odpowiedzi, mówi wprost, że nie ma potwierdzonych informacji.

Poniżej pokazujemy, jak to działa: skąd baza bierze wiedzę, jak ją przeszukuje, kiedy odmawia i jak dobrze szuka w naszym teście. Technika jest w układzie RAG, ale do zrozumienia reszty tekstu nie trzeba jej znać.

#### Jedno miejsce na wiedzę firmy

Wszystko leży w jednej bazie danych: opisy, ich poprzednie wersje, informacja, kto co zatwierdził, oraz dane potrzebne do wyszukiwania. Nie trzeba pilnować kilku systemów naraz. Baza to PostgreSQL z rozszerzeniem pgvector.

#### Nic nie trafia do czatu bez zatwierdzenia

Dokument dodaje człowiek. Wpisuje treść w panelu albo wczytuje plik `.txt` lub `.md`. Może dopisać krótkie streszczenie, listę faktów i datę źródła. Nowy dokument jest najpierw szkicem i czat go nie widzi.

Żeby szkic trafił do czatu, ktoś musi go zatwierdzić pod swoim nazwiskiem. Zatwierdza konkretną wersję, tę, którą przeczytał. Jeśli w międzyczasie ktoś inny zmienił tekst, system nie przyjmie zatwierdzenia i nie nadpisze po cichu cudzej zmiany. Każda poprawka to nowa wersja do zatwierdzenia, a stara od razu przestaje być używana w odpowiedziach.

Czat ma do bazy osobny dostęp, który widzi tylko aktualne, zatwierdzone teksty. Szkiców i historii nie widzi. Serwer sprawdza to przy każdym starcie i nie uruchomi się, jeśli ten dostęp jest szerszy, niż powinien.

Całą wiedzę da się zapisać do jednego pliku archiwum i odtworzyć: oryginały, wersje, zatwierdzenia i powiązania.

#### Wiedzę widać jako mapę

Lista dokumentów nie pokazuje, co się z czym łączy. Dlatego zespół ma panel „Mapa wiedzy”. Każdy dokument jest kropką, każde powiązanie linią. Kropki same się rozsuwają, a powiązane trzymają się blisko, podobnie jak graf w Obsidianie.

Poniżej cała nasza baza w podobnym widoku. Zamiast powiązań dodanych ręcznie linie pokazują podobieństwo znaczeniowe: każdy opis łączy się z kilkoma najbliższymi według modelu, którego używa wyszukiwarka. Widać, które usługi tworzą skupiska, a które stoją osobno.

W panelu powiązanie dodaje człowiek i nadaje mu krótką nazwę, na przykład „dotyczy”. Powiązanie jest przypięte do wersji obu dokumentów. Gdy któryś się zmieni, powiązanie przestaje obowiązywać, aż ktoś je sprawdzi. Kropki można przeciągać, mapę przybliżać, a panel mieści do 400 dokumentów.

Panel pilnuje, żeby nie zgubić pracy. Okno edycji nie zamyka się w trakcie zapisu, przy konflikcie wersji wpisany tekst zostaje, a zamknięcie karty z niezapisanymi zmianami najpierw pyta. Dziś mapa służy ludziom do przeglądania i porządkowania wiedzy. Na odpowiedzi czatu jeszcze nie wpływa.

#### Rozumie pytania zadane innymi słowami

Klient rzadko używa słów z opisu usługi. Pisze „nie odbieramy telefonów po zamknięciu biura”, a opis mówi o recepcjonistce AI i obsłudze po godzinach. Dlatego baza szuka na dwa sposoby naraz: po znaczeniu i po słowach.

Po znaczeniu szuka mały model multilingual-e5-small. Zamienia pytanie i każdy fragment tekstu na wektor, czyli listę liczb opisującą sens, a baza szuka najbliższych. Model działa na naszym serwerze, więc w tym kroku tekst nie wychodzi na zewnątrz.

Po słowach szuka klasyczne BM25, które dobrze łapie nazwy i skróty. Obie listy łączy RRF w jeden ranking. Potem każdy kandydat jest jeszcze raz sprawdzany w bazie: czy to wciąż aktualna, zatwierdzona wersja. Dodatkowo zbudowaliśmy i zmierzyliśmy reranker, który porządkuje wyniki od nowa. Jest opcjonalny i na serwerze go nie włączyliśmy.

#### Gdy nie wie, mówi to wprost

Czat bierze pięć najlepszych fragmentów i sprawdza każdy w bazie. Jeśli żaden nie przejdzie, model w ogóle nie dostaje pytania, a klient widzi stałe zdanie: „Nie mam potwierdzonych informacji na ten temat”.

Gdy fragmenty są, model dostaje je z numerami i z zasadą: odpowiadaj tylko z nich, oznaczaj źródła `[1]`, `[2]`, nie wymyślaj realizacji, cen ani terminów. Gotowa odpowiedź musi zawierać numer źródła, a każdy numer musi istnieć. Potem źródła są sprawdzane drugi raz, na wypadek gdyby ktoś w międzyczasie wycofał dokument. Jeśli coś się nie zgadza, klient dostaje to samo stałe zdanie zamiast domysłu.

Numer źródła dowodzi, że źródło istnieje i jest zatwierdzone. Nie dowodzi, że każde zdanie odpowiedzi się z nim zgadza.

Przy podłączeniu bazy do Ebi doszły kolejne zabezpieczenia: pamięć kilku poprzednich wiadomości, odpowiedzi po polsku i po angielsku, pisanie na bieżąco całymi zdaniami, blokada odpowiedzi z nieznanym numerem telefonu, kwotą albo obcym linkiem, stałe odpowiedzi na pytania o cenę i termin oraz oznaczony jako niepewny kontekst z internetu o firmie rozmówcy. Odpowiedzi pisze model Anthropic.

#### Zapytaj sam

Poniżej jest czat w kształcie Ebi z bazą 10 przykładowych opisów usług, tych samych, na których mierzyliśmy wyszukiwanie. Obok widać, co dzieje się w środku, zanim padnie odpowiedź. Wybierz pytanie albo wpisz własne.

#### Jak dobrze szuka

Do sprawdzenia wyszukiwania napisaliśmy 24 pytania do 10 opisów usług: 18 ma odpowiedź w jednym z opisów, 6 celowo nie ma. Każda kropka poniżej to jedno z 18 pytań z odpowiedzią.

Szukanie po znaczeniu trafia na pierwsze miejsce prawie dwa razy częściej niż po słowach: 15 do 8. W pierwszej piątce E5 ma wszystkie 18 pytań, BM25 tylko 11. Złączenie po równo psuje pierwsze miejsce (9 z 18), choć piątka zostaje pełna. Reranker podnosi pierwsze miejsce do 16 z 18, za to kosztuje około 93 ms na pytanie i około 520 MiB pamięci procesu.

Wszystkie 6 pytań bez odpowiedzi, od ceny wdrożenia po ISO 27001, i tak zwróciło kandydatów przy szukaniu po znaczeniu i po złączeniu. Wyszukiwanie prawie zawsze coś znajdzie, dlatego o odmowie decyduje sprawdzenie numerów źródeł, a nie sam ranking.

Mały test syntetyczny: 10 opisów i pytania pisane przez osobę, która zna dokumenty. To wskazówka do ustawienia wag, a nie wynik z ruchu na stronie.

Przy każdej zmianie kodu GitHub Actions uruchamia 101 testów automatycznych na PostgreSQL 17 z pgvector, razem z testami panelu w przeglądarce Chrome. W przebiegu z 28.10.2026 96 przeszło, 5 pominięto, błędów nie było.

- [multilingual-e5-small](https://huggingface.co/intfloat/multilingual-e5-small), wektory, lokalnie
- [Claude](https://platform.claude.com/docs/en/models/overview), odpowiedzi Ebi

#### Co to może dać Twojej firmie

Taką bazę możemy zbudować na dokumentach Twojej firmy: opisach usług, cennikach, regulaminach, odpowiedziach na częste pytania. Zespół wpisuje wiedzę raz i ją zatwierdza, a asystent na stronie albo w firmie odpowiada z tego jednego miejsca.

Klient dostaje odpowiedź ze wskazaniem źródła albo jasne „nie wiem” zamiast wymyślonej ceny. Poprawka zaczyna działać po zatwierdzeniu, a stara wersja od razu przestaje być używana. Cała wiedza leży w jednej bazie, a mapa pokazuje, co się z czym łączy.

Płacisz za wdrożenie dopasowane do Twoich dokumentów i narzędzi. Zakres i wycenę ustalamy po rozmowie. Najprościej zacząć od rozmowy z Ebi, który działa właśnie na takiej bazie.

[Porozmawiaj z Ebi](https://eforb.pl/uslugi/dzial-ai/ebi)

#### Pytania

##### Czy asystent uczy się z rozmów?

Nie. Wie tylko to, co ktoś z zespołu wpisał i zatwierdził: w panelu, z pliku .txt lub .md albo z archiwum.

##### Dokąd trafiają pytania?

Wektory liczy model na naszym serwerze, więc w tym kroku nic nie wychodzi na zewnątrz. Pytanie i zatwierdzone fragmenty dostaje dostawca modelu, który pisze odpowiedź. Szkice i historia wersji zostają w bazie.

##### Czy numer źródła gwarantuje prawdę?

Nie. Gwarantuje, że źródło istnieje, jest aktualne i zatwierdzone. Zgodność każdego zdania z fragmentem to osobna sprawa.

##### Czy mapa wpływa na odpowiedzi?

Jeszcze nie. Dziś służy zespołowi. Wyszukiwanie nie korzysta ani z powiązań, ani z dat.

##### Co dalej?

Następny krok to konektory, które same pobierają dokumenty, automatyczne streszczenia i fakty do zatwierdzenia oraz wyszukiwanie korzystające z powiązań z mapy i z dat. Dziś tego nie ma. Wagi wyszukiwania trzeba też ustawić na prawdziwych pytaniach, bo test był mały.

Tekst przygotowany z pomocą AI na podstawie projektu i zatwierdzony przez autora.

## Kontakt

E-mail: [bok@eforb.pl](mailto:bok@eforb.pl)
Telefon: [+48 797 360 600](tel:+48797360600)

## Publiczne strony

- [E4B](https://eforb.pl)
- [Internet](https://eforb.pl/uslugi/internet)
- [Zewnętrzny dział AI](https://eforb.pl/uslugi/dzial-ai)
- [Ebi, asystent AI](https://eforb.pl/uslugi/dzial-ai/ebi)
- [Realizacje](https://eforb.pl/projects)
- [Jedenaście automatyzacji, które nie potrzebują AI](https://eforb.pl/projects/automatyzacje)
- [Monitoring CCTV z filtrem AI](https://eforb.pl/projects/cctv)
- [Agent głosowy, który rozmawia z klientem na żywo](https://eforb.pl/projects/agent-glosowy)
- [O E4B](https://eforb.pl/o-nas)
- [Bezpieczeństwo](https://eforb.pl/bezpieczenstwo)
- [Kontakt](https://eforb.pl/kontakt)
- [Polityka prywatności](https://eforb.pl/polityka-prywatnosci)
- [Przewodnik: Poczta i kalendarz](https://eforb.pl/uslugi/dzial-ai/przewodnik/poczta)
- [Przewodnik: Automatyzacje między systemami](https://eforb.pl/uslugi/dzial-ai/przewodnik/automatyzacje)
- [Przewodnik: Recepcja i obsługa klienta](https://eforb.pl/uslugi/dzial-ai/przewodnik/recepcja)
- [Przewodnik: Asystent znający Twoją firmę](https://eforb.pl/uslugi/dzial-ai/przewodnik/wiedza)
- [Przewodnik: Sprzedaż i oferty](https://eforb.pl/uslugi/dzial-ai/przewodnik/sprzedaz)
- [Przewodnik: Dokumenty i faktury](https://eforb.pl/uslugi/dzial-ai/przewodnik/dokumenty)
- [Przewodnik: Handel, magazyn i dostawy](https://eforb.pl/uslugi/dzial-ai/przewodnik/handel)
- [Przewodnik: Dane, raporty i prognozy](https://eforb.pl/uslugi/dzial-ai/przewodnik/dane)
- [Przewodnik: Agenci AI](https://eforb.pl/uslugi/dzial-ai/przewodnik/agenci)
- [Przewodnik: Aplikacje i systemy](https://eforb.pl/uslugi/dzial-ai/przewodnik/aplikacje)
- [Przewodnik: Obraz, nagrania i urządzenia](https://eforb.pl/uslugi/dzial-ai/przewodnik/obraz)
- [Przewodnik: Wdrożenie i opieka](https://eforb.pl/uslugi/dzial-ai/przewodnik/wdrozenie)
