Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 4
5. Odpowiedź oparta wyłącznie na źródłach
Odpowiedź może być pełna, częściowa albo zawierać uzasadnioną odmowę. Niezależnie od tego program ma swój stan wykonania. Gdy oddzielisz te dwa poziomy, nie uznasz odmowy za awarię i nie pomylisz poprawnie zakończonej generacji z prawdziwą odpowiedzią.
1. Top-k i próg odpowiadają na różne pytania
top_k określa, ile najlepszych kandydatów pobierasz z rankingu. Próg decyduje, którzy kandydaci przejdą dalej. W pakiecie warunek ma postać score
>= similarity_threshold. Wartość None wyłącza filtrowanie liczbowe. Ani k, ani próg nie sprawdzają samodzielnie, czy tekst zawiera wszystkie potrzebne informacje.
Przyjmij poniższy ranking dydaktyczny dla pytania z R3. Liczby służą wyłącznie ręcznemu prześledzeniu filtra; nie pochodzą z modelu. F3 i F4 zostaną przytoczone w całości w R5. Ich opis wystarcza do obecnego zadania.
| Pozycja | Fragment | Treść istotna dla pytania | Score |
|---|---|---|---|
| 1 | F2 | Kopia przed edycją; postępowanie po nieudanym uruchomieniu. | 0.84 |
| 2 | F1 | Restart po zmianie, sprawdzenie stanu i wynik active. | 0.78 |
| 3 | F3 | Sprawdzenie uruchomienia i zapis wyniku testu. | 0.74 |
| 4 | F4 | Parametry stanowiska fikcyjnej aplikacji. | 0.41 |
Przy top_k=3 i progu 0.80 pozostaje tylko F2. W indeksie nadal jest F1, ale model nie dostanie go w tej próbie. Obniżenie progu może przywrócić potrzebny fragment, lecz w innej bazie może również wprowadzić wiele nieprzydatnych tekstów. Nie ma tu uniwersalnego progu gwarantującego wiarygodność.
2. Dwa sposoby pojawienia się braku informacji
Program może zakończyć przepływ przed wywołaniem LLM, bo nie uzyskał użytecznego kontekstu. Może też przekazać tematycznie podobne fragmenty, z których model nie potrafi ustalić odpowiedzi i generuje odmowę. W drugim przypadku tekst powstał, więc status techniczny pozostaje answered.
| Status | Reason | Znaczenie w pakiecie |
|---|---|---|
answered |
null |
Otrzymano tekst. Jego jakość, kompletność i ewentualną odmowę ocenia człowiek. |
insufficient_context |
no_results |
Nie otrzymano wyników wyszukiwania. |
insufficient_context |
below_threshold |
Kandydaci nie przeszli progu. |
insufficient_context |
no_usable_results |
Pozostałe rekordy nie dają użytecznego kontekstu, np. mają pusty tekst. |
invalid_input |
validation_failed |
Niepoprawne pytanie lub parametry. |
retrieval_error |
retrieval_failed |
Awaria embeddingu pytania lub wyszukiwania. |
generation_error |
generation_failed |
Nieudane wywołanie generacji. Zachowaj kontekst i źródła. |
W pakiecie przy zatrzymaniu przed generacją answer jest pusty, a przyczyna znajduje się w statusie i reason. Aplikacja może wyświetlić użytkownikowi stosowny komunikat. Nie przypisuj komunikatu aplikacji modelowi, którego nie wywołano.
3. Odpowiedź częściowa ma określony zakres
Jeżeli przekazano tylko F1, możesz opisać restart i sprawdzenie stanu po zmianie. Nie możesz potwierdzić czynności przed edycją. Przykładowa odpowiedź brzmi: „Po zmianie pliku uruchom ponownie docassist-api i sprawdź stan; oczekiwany wynik to active. Kontekst nie określa, co zrobić przed edycją”. To ograniczenie bieżącego wejścia, nie całej wiedzy o systemie.
Jeżeli pytasz o konfigurację TLS, a otrzymujesz F1 i F2, odpowiedź „Brak informacji w dostarczonym kontekście” jest uzasadniona. Fragmenty mówią o tej samej usłudze, ale nie zawierają procedury certyfikatów. Podobny temat nie jest wystarczającą podstawą do uzupełniania szczegółów z pamięci.
Próg cosine nie jest prawdopodobieństwem poprawności. Nawet po przejściu filtra trzeba sprawdzić pokrycie pytania, warunki procedury oraz aktualność źródeł.
Ćwiczenie 4. Oddziel filtr od oceny treści
Użyj rankingu dydaktycznego i tekstów F1–F2.
- Dla top_k=3 wyznacz kontekst przy progach None, 0.78, 0.80 i 0.90. Pamiętaj o znaku >=.
- Dla progu 0.90 podaj status i reason oraz rozstrzygnij, czy zostanie wywołany model.
- Model otrzymał tylko F1 i napisał „Przed edycją wykonaj kopię, a po zmianie uruchom usługę”. Wskaż twierdzenie bez podstaw w otrzymanym kontekście i pominięty element F1.
- Model otrzymał F1–F2, po pytaniu o TLS napisał „Brak informacji w dostarczonym kontekście”. Jaki jest status techniczny i jaka ocena treści?
- Przy osobnej próbie retrievalu nie było wyników; w innej jedyny rekord miał pusty tekst. Przypisz reason obu przypadkom.
Czy potrafisz wyjaśnić, dlaczego brak odpowiedzi nie zawsze oznacza ten sam stan programu?
Jeżeli pracujesz również na komputerze, wykorzystaj kartę R4 oraz notebook M12_M4_R4_kontrola_kontekstu_start.ipynb.
Przeanalizuj cztery konteksty oraz dwa kontrolowane zatrzymania przed generacją. W proby.jsonl porównuj status, reason, context_results i calls; ocenę treści zapisuj osobno.