Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 1
| Strona: | SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych |
| Kurs: | Lokalne chatboty, agenci i systemy RAG z własną bazą wiedzy |
| Książka: | Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 1 |
| Wydrukowane przez użytkownika: | Gość |
| Data: | wtorek, 3 listopada 2026, 13:18 |
Spis treści
- 1. Jak korzystać z tego materiału
- 2. Jak działa zwykły czat z modelem językowym
- 3. Ograniczenia modeli językowych
- 4. Kontekst jako dodatkowe źródło wiedzy
- 5. Od dokumentu do odpowiedzi opartej na źródłach
- 6. Podstawowa idea systemu RAG
- 7. Porównanie czatu LLM i systemu z własną wiedzą
- 8. Podsumowanie i dalsza praca
- 9. Odpowiedzi do ćwiczeń
- 10. Słownik pojęć
1. Jak korzystać z tego materiału
Ten moduł wyjaśnia, czym różni się rozmowa z modelem językowym od systemu odpowiadającego na podstawie własnych dokumentów. Przejdziesz od pytania wpisanego do czatu do prostego schematu RAG, w którym aplikacja wyszukuje potrzebny fragment, a model wykorzystuje go do przygotowania odpowiedzi. Najważniejsza umiejętność to sprawdzenie, czy konkretne twierdzenie rzeczywiście wynika ze wskazanego źródła.
Czytaj sześć rozdziałów w podanej kolejności. Każdy zawiera objaśnienia, przykład oraz ćwiczenie do wykonania w zeszycie lub w edytorze tekstu. Najpierw zapisz własną odpowiedź, a dopiero później zajrzyj do rozdziału „Odpowiedzi do ćwiczeń”.
Przykład przewodni to fikcyjny system DocAssist. Jego instrukcja i regulamin są materiałami dydaktycznymi. Pokazane polecenia analizujesz jako tekst; nie wykonujesz ich na swoim komputerze. Przykładowe odpowiedzi oznaczone jako demonstracyjne zostały przygotowane do nauki i nie są pomiarami jakości konkretnego modelu.
Po ukończeniu modułu
Plan modułu
2. Jak działa zwykły czat z modelem językowym
Gdy wpisujesz pytanie do czatu, aplikacja przygotowuje wejście dla modelu i wyświetla wygenerowaną odpowiedź. Model językowy (LLM) tworzy tekst przez kolejne przewidywania tokenów.
Model wykorzystuje wzorce utrwalone podczas trenowania oraz treść aktualnie otrzymanego wejścia. Token jest jednostką reprezentacji tekstu: może odpowiadać części słowa, całemu słowu lub znakowi. Nie należy utożsamiać liczby tokenów z liczbą słów.
Przewidywanie kolejnych tokenów pozwala tworzyć użyteczne wyjaśnienia, podsumowania i propozycje. Sam ten mechanizm nie sprawdza jednak automatycznie zgodności wypowiedzi z Twoją lokalną instrukcją. Model może napisać przekonującą procedurę, mimo że nie otrzymał dokumentu, w którym ta procedura została określona.
Model i aplikacja
Model oraz interfejs czatu pełnią różne role. Model przetwarza dostarczone wejście. Aplikacja może dodatkowo odczytywać pliki, wybierać fragmenty historii, wyszukiwać informacje lub korzystać z narzędzi. Dlatego stwierdzenie „czat ma dostęp do dokumentów” wymaga ustalenia, jaka funkcja aplikacji ten dostęp zapewnia i co faktycznie przekazuje modelowi.
| Element | Rola w rozmowie | Przykład |
|---|---|---|
| Model | Generuje odpowiedź z otrzymanego wejścia | Lokalny LLM |
| Prompt | Określa zadanie i sposób odpowiedzi | Wyjaśnij procedurę w trzech krokach |
| Kontekst | Dostarcza treść potrzebną do zadania | Fragment instrukcji DocAssist |
| Historia | Zawiera wcześniejsze wiadomości przekazane modelowi | Poprzednie pytanie i odpowiedź |
| Odpowiedź | Jest wynikiem generowania wymagającym oceny | Propozycja postępowania |
Co model rzeczywiście otrzymał
Załóżmy, że plik instrukcja.txt leży w katalogu na Twoim dysku. Wpisujesz do zwykłego czatu: „Co zrobić po zmianie konfiguracji DocAssist?”. Sama obecność pliku na komputerze nie włącza jego treści do rozmowy. Jeżeli nie wkleisz fragmentu ani aplikacja go nie odczyta i nie przekaże, model nie ma tego źródła w aktualnym wejściu.
Także zdanie „plik nazywa się instrukcja.txt” przekazuje tylko nazwę. Nie mówi, jaka jest treść pliku, wersja instrukcji ani warunki procedury. Dobrą praktyką jest osobne zapisanie pytania oraz materiału, który rzeczywiście trafił do modelu.
Okno kontekstowe i historia
Okno kontekstowe określa, ile tokenów może obejmować pojedyncze przetwarzanie; sposób podziału limitu między wejście i odpowiedź zależy od modelu oraz aplikacji. Instrukcje, historia rozmowy i fragmenty dokumentów konkurują o ograniczone miejsce. Długa rozmowa nie oznacza więc, że cała jej treść jest nadal dostępna modelowi.
Jeżeli porównujesz dwa warianty pytania, zaczynaj od nowej rozmowy. W przeciwnym razie drugi wariant może korzystać z fragmentu przekazanego wcześniej — otrzymasz pozornie dobrą odpowiedź „bez dokumentu”, chociaż dokument pozostaje w historii. Dla oceny liczy się kompletne wejście, a nie tylko ostatnia widoczna wiadomość.
Prompt, który można ocenić
Ogólna prośba „Opisz DocAssist” pozostawia szerokie pole odpowiedzi. Lepszy prompt określa zadanie, podstawę odpowiedzi, oczekiwany format i zachowanie przy braku danych — tak, by później można było sprawdzić wykonanie polecenia.
Zadanie: wyjaśnij, co użytkownik powinien sprawdzić po zmianie konfiguracji DocAssist. Podstawa: wyłącznie przekazany fragment instrukcji. Format: kroki, warunki wykonania i wskazanie źródła. Jeśli fragment nie wystarcza, wskaż brakującą informację.
Bez dodania fragmentu powyższy prompt nadal nie dostarcza wiedzy o DocAssist. Instrukcja sposobu pracy nie zastępuje danych potrzebnych do wykonania zadania.
Rozważ sytuację: otwierasz nowy czat bez funkcji odczytu plików. Wpisujesz „W katalogu mam instrukcja.txt. Jak ponownie uruchomić DocAssist?”. Model odpowiada „Uruchom ponownie usługę i sprawdź jej stan”.
- Wypisz informacje, które rzeczywiście otrzymał model.
- Wskaż dwie informacje, których model nie otrzymał.
- Wyjaśnij, dlaczego sensownie brzmiąca odpowiedź nie dowodzi odczytania pliku.
- Dopisz do promptu trzy wymagania ułatwiające późniejszą weryfikację.
3. Ograniczenia modeli językowych
Odpowiedź modelu może być płynna, szczegółowa i uporządkowana, a jednocześnie nie mieć oparcia w źródle. Styl wypowiedzi nie jest miarą jej prawdziwości.
W pracy z dokumentacją potrzebujesz innego pytania: „Z którego fragmentu wynika to twierdzenie i czy fragment dotyczy właściwej wersji systemu?”.
Wiedza utrwalona w parametrach modelu może nie obejmować Twojego dokumentu albo jego najnowszej wersji. Dotyczy to szczególnie procedur lokalnych, regulaminów organizacji i instrukcji przygotowanych wyłącznie na potrzeby kursu. Nawet jeśli model zna podobny produkt, nie daje to podstaw do przenoszenia jego zasad na DocAssist.
Cztery problemy, które warto odróżniać
| Problem | Jak go rozpoznać | Co zrobić |
|---|---|---|
| Niepotwierdzone twierdzenie | Źródło nie zawiera podanej informacji | Oznaczyć brak podstawy |
| Sprzeczność ze źródłem | Dokument mówi coś przeciwnego | Odrzucić lub poprawić twierdzenie |
| Odpowiedź niepełna | Pominięto ważny krok lub warunek | Wskazać konkretny brak |
| Odpowiedź zbyt ogólna | Nie zawiera szczegółów potrzebnych w tym systemie | Poprosić o odpowiedź opartą na źródle |
Halucynacją nazywa się w tym kontekście wygenerowaną treść przedstawioną jak fakt, choć jest zmyślona lub pozbawiona właściwej podstawy. Może nią być wymyślona funkcja, nazwa dokumentu, cytat, data lub procedura. Nie każda słaba odpowiedź jest jednak halucynacją. Zdanie „sprawdź stan usługi” może być zgodne z instrukcją, lecz za mało konkretne, by wykonać zadanie.
Niepotwierdzone twierdzenie nie musi być logicznie fałszywe. Gdy dokument nie podaje godzin dyżurów, poprawny wniosek brzmi „źródło nie określa godzin”, a nie „operator nigdy nie dyżuruje”. Ta różnica chroni przed zamianą braku wiedzy w nową, nieuzasadnioną pewność.
Źródło do analizy: regulamin DocAssist
Poniższe sekcje pochodzą z fikcyjnego pliku. Nie są zasadami zaliczenia rzeczywistego kursu.
R1 Role.
Operator utrzymuje fikcyjny system. Użytkownik zadaje pytania i sprawdza źródła. Samo korzystanie z czatu nie nadaje uprawnień operatora.
R2 Działanie asystenta.
Asystent objaśnia dokumentację i wskazuje źródła. Nie wykonuje poleceń systemowych ani zmian konfiguracji. Brak informacji powinien zostać zgłoszony.
R3 Weryfikacja.
Użytkownik porównuje ważne twierdzenia z konkretną sekcją dokumentu. Obecność nazwy pliku przy odpowiedzi sama nie potwierdza jej poprawności.
R4 Zakres.
Regulamin nie określa godzin dyżurów operatora ani czasu reakcji na zgłoszenie.
Oceń trzy demonstracyjne odpowiedzi. Dla każdej zapisz: ocenę, sekcję źródłową oraz poprawioną wersję. Użyj określeń „potwierdzone”, „sprzeczne” lub „niepotwierdzone”.
O1: „Operator dyżuruje od 8:00 do 16:00 i odpowiada na zgłoszenie w ciągu 15 minut”.
O2: „Każdy użytkownik czatu automatycznie otrzymuje uprawnienia operatora”.
O3: „Asystent objaśnia instrukcję, ale nie wykonuje poleceń systemowych”.
- Podziel O1 na dwa osobne twierdzenia i oceń każde z nich.
- Znajdź fragment rozstrzygający ocenę O2.
- Sprawdź, czy O3 wiernie oddaje zakres działania asystenta.
- Ułóż jednozdaniową odpowiedź na pytanie o godziny dyżurów, bez dopowiadania danych.
Lokalny model a wiarygodność odpowiedzi
Słowo „lokalny” opisuje miejsce wykonywania obliczeń. Nie oznacza automatycznie, że model otrzymał wszystkie pliki z komputera, zna aktualne procedury albo nigdy się nie myli. Można uruchomić lokalny model i nadal zadawać mu pytania bez potrzebnego kontekstu.
Offline oznacza w tym materiale pracę bez połączenia z Internetem. Samodzielne czytanie i ćwiczenia spełniają ten warunek od razu. Uruchomienie modelu offline wymaga wcześniejszego przygotowania aplikacji i plików modelu — to osobna czynność techniczna, nie jest warunkiem zrozumienia treści tego modułu.
4. Kontekst jako dodatkowe źródło wiedzy
Kontekst to informacje przekazane modelowi na potrzeby konkretnego zadania: fragment instrukcji, treść regulaminu lub wynik wyszukania w bazie wiedzy.
Dodanie kontekstu zmienia podstawę odpowiedzi: model otrzymuje tekst, którego nie musiał znać wcześniej. Samo wklejenie dokumentu nie jest trenowaniem modelu i nie oznacza trwałego zapisania jego treści w parametrach.
W tym rozdziale samodzielnie wybierasz fragment i umieszczasz go obok pytania. Jest to ręczne przygotowanie kontekstu. Automatyczne wyszukiwanie odpowiedniego fragmentu pojawi się w opisie RAG w rozdziale 5.
Instrukcja, która będzie podstawą odpowiedzi
Wersja dokumentu 1.4, wersja systemu 1.4, wersja pakietu danych 1.0. Plik TXT nie ma numerów stron — do wskazania miejsca używaj nazwy pliku, wersji i sekcji.
Sekcja 1 — Zakres dokumentu.
DocAssist jest fikcyjnym asystentem dokumentacji. W tym module analizujemy tekst i odpowiedzi modelu. Dokument nie opisuje instalacji ani konfiguracji TLS.
Sekcja 5.2 — Ponowne uruchomienie po zmianie konfiguracji.
Po zmianie pliku /etc/docassist/config.yaml uruchom ponownie usługę, a następnie sprawdź jej stan:
sudo systemctl restart docassist-api systemctl is-active docassist-api
Prawidłowy wynik to active. Jeżeli wynik jest inny niż active, wyświetl 50 ostatnich wpisów dziennika:
journalctl -u docassist-api -n 50 --no-pager
Sekcja 6.1 — Kopia przed aktualizacją.
Przed rozpoczęciem aktualizacji wykonaj kopię katalogu /var/lib/docassist i zachowaj ją przez 30 dni.
Sekcja 7.1 — Zgłaszanie niejasności.
Jeżeli instrukcja nie obejmuje problemu, zgłoś go prowadzącemu jako brak danych. Nie dopisuj lokalnej procedury na podstawie ogólnej wiedzy.
Te polecenia są treścią dokumentu ćwiczeniowego. Ich przeczytanie, przepisanie do odpowiedzi lub zacytowanie nie oznacza wykonania. W zadaniach tego modułu nie uruchamiaj ich w terminalu.
Pytanie, kontekst i zasady odpowiedzi
Pytanie przewodnie brzmi: „Co należy zrobić po zmianie pliku konfiguracyjnego DocAssist, aby sprawdzić poprawność działania usługi?”. Potrzebujesz sekcji 5.2, ponieważ zawiera czynność, polecenie sprawdzające, oczekiwany wynik oraz warunek dalszego działania. Sama sekcja o kopii przed aktualizacją dotyczy innego zadania.
Poniższy schemat rozdziela polecenie dla modelu od analizowanego dokumentu. W miejscu oznaczonym nawiasami wstaw pełną treść sekcji 5.2, łącznie z poleceniami i warunkiem.
Odpowiedz wyłącznie na podstawie KONTEKSTU. Przedstaw kroki i warunki ich wykonania. Wskaż nazwę pliku, wersję i sekcję. Jeśli brakuje danych, napisz, czego nie można ustalić. KONTEKST Źródło: instrukcja.txt, wersja 1.4, sekcja 5.2 [pełna treść sekcji 5.2] KONIEC KONTEKSTU PYTANIE Co należy zrobić po zmianie pliku konfiguracyjnego DocAssist, aby sprawdzić poprawność działania usługi?
Oznaczenie granic ułatwia czytanie i analizę wejścia. Nie daje jednak gwarancji, że model zawsze poprawnie oddzieli dane od instrukcji. Dokument źródłowy traktujesz jako materiał do odpowiedzi, a nie jako upoważnienie do wykonywania poleceń lub zmiany zasad pracy asystenta.
Odpowiedź oparta na kompletnym fragmencie
/etc/docassist/config.yaml uruchom ponownie usługę poleceniem sudo
systemctl restart docassist-api. Sprawdź stan poleceniem systemctl
is-active docassist-api; oczekiwany wynik to active. Jeżeli wynik jest inny niż active, wyświetl 50 ostatnich wpisów poleceniem journalctl
-u docassist-api -n 50 --no-pager. Źródło: instrukcja.txt, wersja 1.4, sekcja 5.2”.Zwróć uwagę na warunek. Dokument nie nakazuje wyświetlania dziennika tylko wtedy, gdy pojawi się słowo failed. Mówi o każdym wyniku innym niż active. Zawężenie tego warunku zmieniłoby znaczenie procedury. Podobnie pominięcie oczekiwanego wyniku utrudniłoby ocenę, czy sprawdzenie zakończyło się poprawnie.
Gdy kontekst jest niepełny
Załóżmy, że przekazano tylko pierwsze zdanie sekcji 5.2 oraz polecenie restartu. Model może na tej podstawie opisać ponowne uruchomienie. Nie ma jednak w tym fragmencie polecenia sprawdzającego, oczekiwanego wyniku ani sposobu wyświetlenia dziennika. Odpowiedź powinna wyraźnie wskazać te ograniczenia.
Jest użyteczna, ponieważ oddziela to, co wiadomo, od brakujących danych. Dopisanie znajomego polecenia z pamięci naruszyłoby przyjętą zasadę odpowiedzi wyłącznie na podstawie kontekstu.
Dla pytania przewodniego rozważ trzy zestawy informacji: pełną sekcję 5.2, wyłącznie zdanie o restarcie wraz z poleceniem oraz wyłącznie sekcję 6.1.
- Dla każdego zestawu zapisz, na jaką część pytania można odpowiedzieć.
- Wypisz informacje, których brakuje w drugim i trzecim zestawie.
- Napisz odpowiedź częściową dla drugiego zestawu i odpowiedź zgłaszającą brak danych dla trzeciego.
- Wyjaśnij, dlaczego dłuższy fragment nie zawsze oznacza lepszy kontekst.
5. Od dokumentu do odpowiedzi opartej na źródłach
Dokument jest nośnikiem informacji, a baza wiedzy jest uporządkowanym zbiorem źródeł przygotowanych do wykorzystania przez system.
Fragment dokumentu, często nazywany chunk, jest mniejszą jednostką tekstu wybieraną do odpowiedzi. Aby można było ustalić jego pochodzenie, treści towarzyszą metadane: na przykład nazwa pliku, wersja i numer sekcji.
Nie przekazujemy zawsze całej bazy wiedzy do modelu. Duży zbiór może przekraczać dostępny kontekst, zawierać niepowiązane informacje lub wiele wersji tej samej procedury. Wybór potrzebnych fragmentów ogranicza ilość wejścia i pomaga skupić odpowiedź na pytaniu. Nie oznacza to jednak, że najkrótszy fragment będzie najlepszy: trzeba zachować informacje konieczne do interpretacji.
Granica fragmentu ma znaczenie
W DocAssist sekcja 5.2 tworzy spójną procedurę. Jeżeli oddzielisz polecenie wyświetlenia dziennika od zdania „Jeżeli wynik jest inny niż active”, możesz utracić warunek wykonania. System otrzyma wtedy poprawne słowa, ale niepełną relację między nimi. Dobry fragment zachowuje czynność, jej warunki i niezbędne objaśnienia.
W kolejnych modułach przygotowanie fragmentów będzie zadaniem technicznym. Teraz wystarczy umieć zauważyć, kiedy podział dokumentu niszczy sens. Zapytaj: „Czy osoba widząca tylko ten fragment zrozumie, kiedy i dlaczego należy wykonać opisany krok?”.
Metadane umożliwiają powrót do źródła
| Pole | Przykładowa wartość | Dlaczego jest potrzebne |
|---|---|---|
| source | instrukcja.txt |
Identyfikuje dokument |
| document_version | 1.4 |
Rozróżnia wersje treści |
| section | 5.2 |
Wskazuje miejsce w dokumencie |
| page | Brak wartości | TXT nie ma stałych stron |
| chunk_id | instr_1_4_5_2 |
Rozróżnia fragment w tym przykładzie |
Powyższy identyfikator fragmentu jest przykładem projektowym, a nie obowiązkową nazwą pola w każdym systemie RAG. Ważna jest możliwość odtworzenia pochodzenia tekstu. Numery stron podaje się wtedy, gdy źródło ma rzeczywistą, stabilną paginację. Numer strony tego podręcznika nie jest numerem strony pliku instrukcja.txt.
Dwa warunki użytecznego wskazania źródła
Oba warunki trzeba spełnić równocześnie. Prawidłowa nazwa pliku nie naprawia błędnego numeru sekcji ani nie potwierdza dowolnej wypowiedzi modelu.
Przykład: odpowiedź „Po zmianie konfiguracji uruchom ponownie usługę; źródło: instrukcja.txt, wersja 1.4, sekcja 6.1” zawiera czynność opisaną w instrukcji, lecz wskazuje niewłaściwe miejsce. Sekcja 6.1 dotyczy kopii przed aktualizacją. To błąd powiązania ze źródłem, nawet jeśli sama czynność jest prawidłowa według sekcji 5.2.
Oceń cztery twierdzenia względem instrukcji z rozdziału 3. Dla każdego zapisz osobno ocenę treści i ocenę wskazanego źródła.
| Twierdzenie | Wskazane miejsce |
|---|---|
T1 Prawidłowy wynik sprawdzenia to active |
instrukcja.txt 1.4 sekcja 5.2 |
| T2 Po zmianie konfiguracji należy ponownie uruchomić usługę | instrukcja.txt 1.4 sekcja 6.1 |
T3 Dziennik sprawdzamy przy wyniku innym niż active |
instrukcja.txt 1.4 sekcja 5.2 |
| T4 Każda zmiana konfiguracji wymaga trzech restartów | instrukcja.txt 1.4 sekcja 5.2 |
- Znajdź w źródle zdanie odpowiadające każdemu twierdzeniu.
- Oznacz brak podstawy, jeżeli takiego zdania nie ma.
- Popraw błędne wskazanie sekcji bez zmieniania prawidłowej treści twierdzenia.
- Wyjaśnij, dlaczego dopisek „strona 18” nie jest właściwym adresem w tym pliku TXT.
Weryfikacja nie kończy się na cytacie
Jeżeli w bazie znajdują się dwie wersje instrukcji, potrzebujesz ustalić, która dotyczy rozpatrywanego systemu. Cytat z nieaktualnego dokumentu może być wierny, a mimo to nie odpowiadać bieżącej sytuacji. Zapis wersji dokumentu nie rozstrzyga sam jej aktualności, lecz pozwala zadać właściwe pytanie i odtworzyć decyzję.
6. Podstawowa idea systemu RAG
RAG to skrót od Retrieval Augmented Generation, czyli generowania wspomaganego wyszukiwaniem.
W odpowiedzi na pytanie system najpierw wyszukuje przydatne informacje, a następnie przekazuje je modelowi wraz z pytaniem i instrukcją odpowiedzi. Model nadal generuje tekst, ale otrzymuje dodatkową podstawę pochodzącą z wybranych dokumentów.
Rozróżnij przygotowanie bazy wiedzy oraz obsługę pojedynczego pytania. Dokumenty można przetworzyć i uporządkować wcześniej. Gdy użytkownik zadaje pytanie, aplikacja wykorzystuje przygotowany zbiór, wybiera fragmenty i buduje wejście dla modelu. Nie trzeba za każdym razem od początku przygotowywać wszystkich plików.
Przygotowanie źródeł i odpowiedź na pytanie
| Kiedy | Czynność | Rezultat |
|---|---|---|
| Przed pytaniem | Zebranie i odczyt dokumentów | Tekst oraz informacja o pochodzeniu |
| Przed pytaniem | Podział na fragmenty i opis metadanymi | Fragmenty możliwe do odnalezienia |
| Przed pytaniem | Przygotowanie mechanizmu wyszukiwania | Zbiór lub indeks do przeszukiwania |
| Po pytaniu | Wyszukanie fragmentów pasujących do pytania | Kandydaci na kontekst |
| Po pytaniu | Złożenie promptu i wygenerowanie odpowiedzi | Odpowiedź z odniesieniami do źródeł |
| Po odpowiedzi | Sprawdzenie twierdzeń i wskazań źródeł | Ocena oraz lista ewentualnych braków |
Dwa zasadnicze etapy odpowiedzi RAG to wyszukiwanie i generowanie. Weryfikacja wyniku jest potrzebną częścią pracy z systemem, lecz nie należy mylić jej z gwarancją zapewnianą automatycznie przez samą nazwę RAG.
Co wyszukuje system
Wyszukiwanie może opierać się na słowach, reprezentacjach wektorowych albo połączeniu metod. Embedding to liczbowa reprezentacja tekstu, którą można wykorzystać do porównywania fragmentów pod kątem podobieństwa. Baza lub indeks wektorowy pomaga odnajdywać takie reprezentacje. Sama obecność bazy wektorowej nie wystarcza jednak, aby otrzymać kompletny system odpowiadania.
Podobieństwo nie jest dowodem prawdziwości ani przydatności do każdego pytania. Sekcje 5.2 i 6.1 dotyczą tego samego fikcyjnego systemu, ale odpowiadają na inne potrzeby. Dlatego ocenia się także trafność wyszukania, a nie tylko płynność końcowej odpowiedzi.
Przepływ informacji w przykładzie DocAssist
Schemat poniżej opisuje logikę działania; nie jest kodem do uruchomienia.
W ręcznym ćwiczeniu z rozdziału 3 rolę wybierającego fragment pełnisz Ty. W RAG robi to mechanizm wyszukiwania. Generowanie może wykorzystywać ten sam model w obu przypadkach. Różnica dotyczy przede wszystkim sposobu przygotowania kontekstu i zachowania informacji o źródle.
RAG nie jest tym samym co dostrajanie modelu — dokument zostaje przekazany jako kontekst bez zmiany parametrów LLM. Nie jest też sam w sobie agentem wykonującym działania. Dodanie narzędzi zmienia zakres możliwości aplikacji; pokazanie komendy w odpowiedzi nie oznacza jej wykonania.
Przeczytaj trzy sytuacje i wskaż etap wymagający sprawdzenia.
Sytuacja A: w pliku źródłowym występuje warunek „wynik inny niż active”, lecz po podziale tekstu fragment z komendą nie zawiera tego warunku.
Sytuacja B: pełna sekcja 5.2 jest w bazie, ale wyszukiwanie zwraca wyłącznie sekcję 6.1.
Sytuacja C: model otrzymuje pełną sekcję 5.2, a odpowiada, że usługę trzeba uruchomić ponownie trzy razy.
- Przypisz każdą sytuację do przygotowania fragmentów, wyszukiwania lub generowania.
- Dla każdej zapisz jedną kontrolę, która pomogłaby wykryć problem.
- Wyjaśnij, dlaczego zamiana modelu na większy nie musi usunąć problemu w sytuacji B.
7. Porównanie czatu LLM i systemu z własną wiedzą
Porównanie powinno pokazać, co zmienia dostęp do dokumentu i jak rozpoznajesz jakość odpowiedzi. Samo wrażenie, że drugi tekst „brzmi lepiej”, jest niewystarczające.
Potrzebujesz tego samego pytania, zapisanego wejścia oraz kryteriów ustalonych przed oceną.
Poniższy eksperyment możesz przeprowadzić bez modelu. Otrzymujesz trzy odpowiedzi demonstracyjne przygotowane do analizy. Nie są rzeczywistymi wynikami pomiaru ani dowodem przewagi określonego narzędzia. Twoim zadaniem jest ocenić je względem źródła i warunków wariantu.
Warianty porównania
We wszystkich wariantach pytanie brzmi: „Co należy zrobić po zmianie pliku konfiguracyjnego DocAssist, aby sprawdzić poprawność działania usługi?”. Pełna instrukcja z rozdziału 3 jest wzorcem dla osoby oceniającej. Nie zakładaj, że model otrzymał ją w każdym wariancie.
| Wariant | Wejście dla modelu | Oczekiwane zachowanie |
|---|---|---|
| A | Samo pytanie bez fragmentu dokumentu | Odpowiedź bez udawania znajomości lokalnej procedury |
| B | Pytanie, pełna sekcja 5.2 i reguła odpowiedzi | Konkretna procedura zgodna ze źródłem (5.2) |
| C | Pytanie, sekcja 6.1 i taka sama reguła jak w B | Zgłoszenie braku informacji potrzebnej do odpowiedzi |
Reguła dla B i C: „Odpowiedz wyłącznie na podstawie kontekstu. Podaj kroki i warunki oraz nazwę pliku, wersję i sekcję. Jeżeli fragment nie wystarcza, napisz, jakiej informacji brakuje”.
Wariant A różni się od B zarówno kontekstem, jak i dodatkową instrukcją. To demonstracja całego sposobu pracy, a nie pomiar wyizolowanego wpływu jednego czynnika. Jeżeli chcesz zbadać wyłącznie wpływ fragmentu, utrzymaj identyczną instrukcję, pytanie i ustawienia, a zmień tylko kontekst. Porównanie B z C przy tej samej instrukcji ułatwia ocenę znaczenia trafności kontekstu.
Trzy odpowiedzi do oceny
/etc/docassist/config.yaml wykonaj sudo
systemctl restart docassist-api. Następnie użyj systemctl
is-active docassist-api. Prawidłowy wynik to active. Jeżeli wynik jest inny niż active, wyświetl 50 ostatnich wpisów: journalctl
-u docassist-api -n 50 --no-pager. Źródło: instrukcja.txt, wersja 1.4, sekcja 5.2”./var/lib/docassist przed aktualizacją i okresu jej przechowywania. Nie zawiera procedury sprawdzania stanu usługi po zmianie konfiguracji. Do odpowiedzi potrzebny jest fragment instrukcji opisujący tę procedurę. Źródło: instrukcja.txt, wersja 1.4, sekcja 6.1”.Odpowiedź A uczciwie ujawnia brak dokumentu, lecz jest ogólna — nie przenoś jej automatycznie do instrukcji obsługi. Odpowiedź C nie wykonuje głównego zadania, ale poprawnie wyznacza granicę dostępnej informacji. Dla wariantu z nietrafnym kontekstem zgłoszenie braku danych jest zachowaniem pożądanym.
Kryteria oceny
Oceniaj osobno użyteczność procedury i rzetelność względem dostępnego źródła. W przeciwnym razie poprawne powstrzymanie się od dopowiedzenia danych może zostać niesłusznie uznane za tak samo zły wynik jak zmyślona procedura.
| Kryterium | 0 punktów | 1 punkt | 2 punkty |
|---|---|---|---|
| Zgodność ze źródłem | Błąd lub niepoparte dopowiedzenie | Część zgodna, lecz wymagająca korekty | Całość zgodna z przekazanym źródłem |
| Kompletność procedury | Brak użytecznej procedury | Część kroków lub warunków | Restart, sprawdzenie, active i warunek dziennika |
| Wskazanie źródła | Brak lub błędne źródło | Wskazanie niepełne | Plik, wersja i właściwa sekcja |
| Rozpoznanie braków | Dopowiedzenie mimo brakujących danych | Ogólne zastrzeżenie | Konkretne braki albo brak zastrzeżeń przy pełnych danych |
Jeżeli model nie otrzymał źródła, w pierwszym kryterium wpisz „nie dotyczy”, zamiast udawać pomiar zgodności. Nie sumuj bezrefleksyjnie ocen: C może uzyskać 0 za kompletność procedury i 2 za rozpoznanie braków. Taki profil jest poprawny dla tego wariantu. Ta skala służy analizie odpowiedzi; nie jest regulaminem zaliczenia kursu.
Wykonaj pełną ocenę trzech wariantów według czterech kryteriów.
- Przygotuj tabelę z wariantami A, B i C oraz czterema kryteriami.
- Wpisz ocenę każdego kryterium i jednozdaniowe uzasadnienie.
- Przy B wskaż zdania potwierdzające każdy krok procedury.
- Przy C zapisz, co powinno zmienić się na wejściu, aby możliwa była pełna odpowiedź.
- Sformułuj wniosek o roli kontekstu oraz jedno ograniczenie tego porównania.
Jeżeli powtórzysz eksperyment z lokalnym modelem
Ta część jest rozszerzeniem. Wykonaj ją dopiero wtedy, gdy masz przygotowane lokalne środowisko i pobrany model. Pracuj na kopii materiałów i dla każdego wariantu zaczynaj nową rozmowę, aby poprzedni kontekst nie przenosił się do kolejnej próby.
Zapisz nazwę i wersję modelu, ustawienia generowania, pełny prompt, przekazany fragment oraz niezmienioną odpowiedź. Zanotuj też datę próby i ocenę z uzasadnieniem. Ustawienia i ta sama nazwa modelu pomagają porównywać wyniki, ale nie gwarantują identycznego tekstu na wszystkich komputerach i w każdej implementacji.
Powtórz próby, jeśli chcesz sprawdzić zmienność. Nie wybieraj tylko najlepiej brzmiącej odpowiedzi. Jeden wynik wskazuje, co wydarzyło się w konkretnej próbie; dopiero większy zestaw pytań i kontrolowanych warunków pozwala formułować szersze wnioski o systemie.
8. Podsumowanie i dalsza praca
Model językowy generuje odpowiedź z otrzymanego wejścia. Nie zna automatycznie plików znajdujących się obok aplikacji. W RAG mechanizm wyszukiwania wybiera kontekst, a model przygotowuje odpowiedź. Oba etapy mogą być źródłem błędów.
Rozdzielaj trzy pytania: „Co było w źródle?”, „Co otrzymał model?” oraz „Co model napisał?”. Ich porównanie pozwala wskazać miejsce powstania niezgodności.
Lista końcowa
Powiązanie z pakietem ćwiczeniowym
Ten dokument wystarcza do nauki offline. Rozszerzeniem są materiały w katalogu Student pakietu „Moduł 1”: instrukcja M12_M1_instrukcja_pracy.docx, sześć kart w karty_pracy i pliki R1–R6 w notebooki. Plik 00_sprawdzenie_srodowiska.ipynb pomaga sprawdzić środowisko. Wersja papierowa i notebookowa nie stanowią dwóch odrębnych obowiązkowych zadań.
Tryb demo notebooków korzysta z gotowych przykładów. Nie są to wyniki nowo uruchomionego modelu. W notebooku R3 wariant C oznacza kontekst niepełny, a w R6 nietrafną sekcję o kopii. Zawsze sprawdzaj definicję wariantu.
Co zachować po pracy
Zachowaj odpowiedzi do sześciu ćwiczeń i tabelę A–B–C. Zapisuj twierdzenie, fragment źródła, ocenę i uzasadnienie. Ten sposób pracy wykorzystasz dalej przy przygotowywaniu dokumentów i budowie wyszukiwania.
Podstawa materiału: prezentacja M12-M1-v2 oraz fikcyjne dane modułu 1, instrukcja.txt w wersji 1.4 i regulamin.md w wersji 1.0. Ćwiczenia i skala samooceny mają charakter dydaktyczny.
9. Odpowiedzi do ćwiczeń
Porównuj przede wszystkim sens i uzasadnienie. Twoje sformułowania nie muszą być identyczne.
Jeśli ocena różni się od klucza, wróć do wskazanego fragmentu i sprawdź, czy nie wykorzystujesz informacji spoza danego wariantu.
Ćwiczenie 1 — Dostępne informacje
Model otrzymał nazwę instrukcja.txt, nazwę DocAssist i pytanie o ponowne uruchomienie. Nie otrzymał treści instrukcji, jej wersji ani konkretnej nazwy usługi. Odpowiedź o restarcie i sprawdzeniu stanu może wynikać z ogólnego wzorca postępowania, więc nie potwierdza odczytania pliku.
Przykładowe wymagania: użyj wyłącznie przekazanego fragmentu; podaj kroki wraz z warunkami; wskaż plik, wersję i sekcję; zgłoś brakujące informacje. Do wykonania takiego zadania trzeba jeszcze dodać właściwy fragment — samo dopisanie wymagań go nie zastępuje.
Ćwiczenie 2 — Ocena twierdzeń
O1 zawiera dwa niepotwierdzone twierdzenia: godziny 8:00–16:00 oraz czas reakcji 15 minut. Sekcja R4 nie określa żadnej z tych wartości. Nie wolno na tej podstawie twierdzić, że operator nie ma dyżurów lub że nigdy nie odpowiada w 15 minut.
O2 jest sprzeczne z R1, która wprost stwierdza, że korzystanie z czatu nie nadaje uprawnień operatora. O3 jest potwierdzone przez R2. Poprawna odpowiedź o godzinach może brzmieć: „Regulamin DocAssist w wersji 1.0, sekcja R4, nie określa godzin dyżurów operatora”.
Ćwiczenie 3 — Zakres kontekstu
Pełna sekcja 5.2 pozwala opisać restart, sprawdzenie stanu, oczekiwany wynik active i wyświetlenie 50 wpisów dziennika przy wyniku innym niż active. Fragment skrócony pozwala jedynie wskazać restart — brakuje w nim sposobu sprawdzenia stanu, kryterium poprawności i dalszego postępowania.
Przykładowa odpowiedź częściowa: „Uruchom ponownie usługę poleceniem sudo
systemctl restart docassist-api. Przekazany fragment nie opisuje, jak sprawdzić stan usługi ani jaki wynik jest prawidłowy”. Przy sekcji 6.1 należy wskazać, że opisano kopię przed aktualizacją, a nie sprawdzenie po zmianie konfiguracji. Więcej tekstu pomaga tylko wtedy, gdy zachowuje informacje potrzebne do pytania.
Ćwiczenie 4 — Treść i źródło
T1 jest potwierdzone, a sekcja 5.2 wskazana poprawnie. T2 zawiera prawidłową czynność, lecz błędny odnośnik: należy wskazać sekcję 5.2 zamiast 6.1. T3 jest potwierdzone przez właściwą sekcję; istotne jest zachowanie warunku „inny niż active”. T4 nie ma podstawy w źródle: instrukcja nie wymaga trzech restartów.
„Strona 18” nie identyfikuje miejsca w źródłowym TXT, ponieważ plik ten nie ma stałej paginacji. Użyj zapisu „instrukcja.txt, wersja 1.4, sekcja 5.2”. Jeżeli tekst został później umieszczony w innym dokumencie, jego nowe numery stron nie stają się automatycznie metadanymi oryginału.
Ćwiczenie 5 — Lokalizacja błędu
A dotyczy przygotowania fragmentów: sprawdź, czy komenda i warunek pozostały razem. B dotyczy wyszukiwania: obejrzyj fragmenty faktycznie zwrócone dla pytania. C dotyczy generowania: porównaj twierdzenie o trzech restartach z otrzymaną sekcją 5.2 i oznacz dopowiedzenie.
Większy model nie naprawia automatycznie B, ponieważ nadal otrzymuje fragment o innym zadaniu. Potrzebna jest kontrola mechanizmu wyboru kontekstu. Gdy nie ma właściwego źródła, pożądanym zachowaniem generatora jest zgłoszenie braku informacji.
Ćwiczenie 6 — Przykładowa ocena
| Wariant | Zgodność | Kompletność | Źródło | Rozpoznanie braków |
|---|---|---|---|---|
| A | Nie dotyczy | 1 | 0 | 2 |
| B | 2 | 2 | 2 | 2 |
| C | 2 | 0 | 2 | 2 |
A daje ogólny kierunek, ale bez konkretnych poleceń, oczekiwanego wyniku i dokładnego warunku; wyraźnie wskazuje brak lokalnej instrukcji. B zachowuje wszystkie wymagane elementy procedury i właściwe źródło. C poprawnie opisuje ograniczenie przekazanej sekcji, dlatego brak pełnej procedury nie jest tu zmyśleniem ani błędem rozpoznania braków.
Aby wariant C mógł dać pełną odpowiedź, należy przekazać odpowiedni fragment, czyli sekcję 5.2. Przykładowy wniosek: właściwy kontekst umożliwia przygotowanie szczegółowej odpowiedzi, którą można sprawdzić w źródle; nietrafny kontekst wymaga zgłoszenia braku danych. Ograniczenie: odpowiedzi są przygotowanymi przykładami, a A i B różnią się również instrukcją, więc nie jest to pomiar wyłącznego wpływu kontekstu ani jakości modelu.
10. Słownik pojęć
Krótkie definicje pojęć w znaczeniu przyjętym w tym module.
| Pojęcie | Znaczenie w tym module |
|---|---|
| LLM | Model językowy generujący tekst z otrzymanego wejścia |
| Token | Jednostka reprezentacji tekstu przetwarzanego przez model |
| Prompt | Treść zadania i instrukcji przekazanych modelowi |
| Kontekst | Informacje dostępne modelowi w danym przetwarzaniu |
| Okno kontekstowe | Ograniczona liczba tokenów obsługiwana w pojedynczym przetwarzaniu |
| Historia rozmowy | Wcześniejsze wiadomości uwzględnione w bieżącym wejściu |
| Halucynacja | Treść zmyślona lub nieuzasadniona, przedstawiona jak fakt |
| Dokument źródłowy | Tekst stanowiący podstawę weryfikacji odpowiedzi |
| Baza wiedzy | Uporządkowany zbiór źródeł przygotowanych do użycia przez system |
| Fragment / chunk | Część dokumentu wyodrębniona do wyszukania i przekazania |
| Metadane | Informacje opisujące tekst, na przykład plik, wersja i sekcja |
| Embedding | Liczbowa reprezentacja tekstu używana m.in. do porównywania podobieństwa |
| Retrieval | Wyszukanie fragmentów przydatnych do odpowiedzi |
| Generation | Wygenerowanie odpowiedzi przez model |
| RAG | Połączenie wyszukiwania informacji z generowaniem na ich podstawie |
| Wskazanie źródła | Adres dokumentu i miejsca, z którego ma wynikać twierdzenie |
| Weryfikacja | Sprawdzenie treści odpowiedzi i jej związku ze źródłem |
| Offline | Praca bez połączenia z Internetem, z wcześniej dostępnymi materiałami |