Specyfikacja F9. Kiedy system RAG (retrieval-augmented generation) odpowiada na pytanie, powstaje pytanie audytora: skąd ta odpowiedź? RAG Evidence Trace odpowiada tabelą śladu — jakie dokumenty pobrano, które fragmenty realnie trafiły do promptu, czy dokument zawierał wstrzyknięcie, czy odpowiedź ma poparcie w źródle i czy źródło było autoryzowane. To specyfikacja obronna, oznaczona ROADMAP — nie zaimplementowany moduł. Dane na stronie są syntetyczne.
Model RAG dokleja do promptu fragmenty pobrane z bazy wiedzy. Bez śladu nie wiadomo, czy odpowiedź faktycznie wynika z tych fragmentów, czy model ją „dopowiedział", ani czy pobrany dokument nie zawierał treści próbującej przejąć instrukcje. RAG Evidence Trace to zapis 5 pytań kontrolnych na każdą odpowiedź: co pobrano · co użyto · czy było wstrzyknięcie · czy jest poparcie · czy źródło autoryzowane.
Lista dokumentów zwróconych przez retriever dla danego pytania: identyfikator, źródło, wynik podobieństwa, znacznik czasu. To pełny zestaw kandydatów, zanim nastąpi selekcja.
Które konkretne fragmenty (chunki) realnie trafiły do promptu modelu. Pobranie ≠ użycie: dokument mógł zostać pobrany, a jego fragment odrzucony przez re-ranking lub limit kontekstu.
Czy pobrany dokument zawierał sygnały prób przejęcia instrukcji (prompt injection w treści danych). Etykieta wykrycia + powód — bez cytowania samego ładunku. Sygnał defensywny.
Czy zdania odpowiedzi da się przypisać do użytych fragmentów (attribution / grounding). Odpowiedź bez poparcia w źródle to kandydat na halucynację — oznaczana, nie ukrywana.
Czy dokument pochodził z zatwierdzonego, autoryzowanego repozytorium wiedzy dla danego zapytania/roli. Fragment spoza dozwolonego zakresu = sygnał wycieku kontekstu lub nadmiaru uprawnień.
Zbiorcza etykieta na odpowiedź: OK gdy wszystkie sygnały czyste, REVIEW przy braku poparcia, HOLD gdy wykryto wstrzyknięcie lub źródło nieautoryzowane.
Zapytanie syntetyczne q-8f21: „Jaki jest termin zgłoszenia incydentu wg DORA?". Wszystkie dane poniżej są zmyślone na potrzeby ilustracji. Kolumny odwzorowują 5 pytań kontrolnych.
| Dok. | Źródło | Pobrano (sim) | Użyto fragment | Injection | Poparcie | Autoryzacja |
|---|---|---|---|---|---|---|
doc-1042 |
kb/dora/rts-2024.md | 0.91 tak | tak · §19 ust.1 | czyste | tak · zdanie 2 odp. | autoryzowane |
doc-0777 |
kb/dora/faq.md | 0.84 tak | nie · odrzucony re-rankiem | czyste | n/d | autoryzowane |
doc-3319 |
upload/uzytkownik/notatka.txt | 0.79 tak | tak · akapit 4 | wykryto · wzorzec override-instrukcji | częściowe | poza zakresem |
doc-2201 |
kb/nis2/mapping.md | 0.71 tak | tak · tabela 3 | czyste | brak · zdanie 4 odp. bez źródła | autoryzowane |
doc-1042 (czysty, autoryzowany, z poparciem).
Ślad ujawnia jednak dwa sygnały do przeglądu: doc-3319 to plik użytkownika spoza autoryzowanego
repozytorium, w którym wykryto wzorzec próby nadpisania instrukcji (etykieta, bez cytowania ładunku), oraz
zdanie 4 odpowiedzi z doc-2201 bez przypisania do źródła. Werdykt zbiorczy: HOLD
— do przeglądu człowieka przed użyciem odpowiedzi.
| Sygnał | Co rejestruje | Etykieta przy anomalii |
|---|---|---|
| retrieval_gap | Pytanie, dla którego retriever nie zwrócił nic ponad próg podobieństwa. | REVIEW — odpowiedź może być bez oparcia w bazie. |
| use_vs_fetch | Rozjazd między dokumentami pobranymi a fragmentami faktycznie użytymi. | info — normalne przy re-rankingu; log dla audytu. |
| injection_marker | Wykrycie w treści danych wzorca próby przejęcia instrukcji (skan defensywny, bez wykonania). | HOLD — dokument oznaczony, fragment do kwarantanny/przeglądu. |
| grounding_miss | Zdania odpowiedzi bez przypisania do żadnego użytego fragmentu. | REVIEW — kandydat na halucynację, oznaczany jawnie. |
| authz_scope | Fragment użyty spoza autoryzowanego dla roli/zapytania repozytorium wiedzy. | HOLD — możliwy wyciek kontekstu lub nadmiar uprawnień. |
Docelowa struktura rekordu śladu — schemat poglądowy, dane syntetyczne. Bez ładunków, bez treści wstrzyknięć — jedynie etykiety i identyfikatory.
{
"trace_id": "rag-trace-7c04",
"query_id": "q-8f21",
"ts": "2026-07-05T10:14:22Z",
"retrieved": [
{ "doc": "doc-1042", "src": "kb/dora/rts-2024.md", "sim": 0.91, "used": true, "chunk": "§19.1" },
{ "doc": "doc-3319", "src": "upload/notatka.txt", "sim": 0.79, "used": true, "chunk": "p4" }
],
"signals": {
"injection_marker": [ { "doc": "doc-3319", "label": "override-pattern", "payload": null } ],
"grounding_miss": [ { "sentence": 4, "doc": null } ],
"authz_scope": [ { "doc": "doc-3319", "scope": "out-of-repo" } ]
},
"verdict": "HOLD",
"note": "dane syntetyczne; payload zawsze null — logujemy etykiete, nie ladunek"
}
payload: null. Ślad rejestruje fakt i etykietę wykrycia, nigdy samą treść
próby wstrzyknięcia. To celowa decyzja obronna: dokument dowodowy nie może stać się nośnikiem instrukcji ataku
ani dla człowieka, ani dla kolejnego modelu, który go przetworzy.
RAG jest częścią potoku agenta — wstrzyknięcie przez pobrany dokument to wektor na warstwę agentową.
Werdykt HOLD ze śladu może eskalować do rejestru incydentu AI z evidence-package.
Grounding-miss i częstość halucynacji zasilają ocenę ryzyka modelu i jego granic stosowania.
Powiązane: rejestr granic dojrzałości → /known-limitations · warstwa agentowa → /agent-security · ocena ryzyka modelu → /model-risk.