Dokument-agent med n8n, RAG og citationskrav
Question → retrieve → agent → answer + sources
Sådan hænger workflowet sammen
Se trigger, fast logik, AI-vurderinger, menneskelig kontrol og output som ét samlet forløb.
-
01
Fast logik Trigger
Bruger sender spørgsmål via chat/form med user_id og conversation_id.
-
02
Fast logik Normalisering
Autorisér bruger før retrieval. Normalisér spørgsmål og hent kun dokumenter brugeren må se.
-
03
AI-vurdering AI
Hent relevante tekststykker, generér svar med citations-id og kræv “jeg kan ikke finde det i kilderne” ved utilstrækkelig evidens.
-
04
Menneskelig kontrol Routing / handling
Vis svar + kilder. Høj-risiko spørgsmål eller manglende evidens sendes til menneske frem for flere agent-loops.
-
05
Fast logik Fejlvej
Vector store unavailable → tydelig fejl.
Gør retrieval og adgangskontrol til fundamentet
Svar på interne spørgsmål med dokumentkilder og reservevej. Før AI kommer ind i flowet, skal trigger, inputvalidering og de faste skrivehandlinger kunne beskrives tydeligt.
- Trigger: Bruger sender spørgsmål via chat/form med user_id og conversation_id.
- Normalisering: Autorisér bruger før retrieval. Normalisér spørgsmål og hent kun dokumenter brugeren må se.
- AI: Hent relevante tekststykker, generér svar med citations-id og kræv “jeg kan ikke finde det i kilderne” ved utilstrækkelig evidens.
- Routing / handling: Vis svar + kilder. Høj-risiko spørgsmål eller manglende evidens sendes til menneske frem for flere agent-loops.
- Fejlvej: Vector store unavailable → tydelig fejl; ingen hits → intet gæt; citation peger ikke på retrieved chunk → forkast svar.
Retrieval er en del af svaret
Agenten bør returnere hvilke dokumentpassager der blev brugt, ikke kun et velformuleret svar. Hvis retrieval ikke finder tilstrækkelig evidens, er reservevej et bedre resultat end et modelgæt.
Adgangskontrol skal ske før semantisk søgning
Filtrér på bruger, tenant, dokumenttype eller andre rettigheder før eller under retrieval. En agent må ikke få adgang til et dokument, bare fordi embedding-søgningen vurderer det som relevant.
Auditér retrieval, citations-id og adgang
Log bruger/rolle på et passende pseudonymiseret niveau, query-id, hentede dokument-id’er, citations-id’er og om svaret blev afvist eller eskaleret. Undgå at kopiere hele dokumentpassager ind i generelle applikationslogs.
Når normalforløbet ikke holder
Vector store unavailable → tydelig fejl; ingen hits → intet gæt; citation peger ikke på retrieved chunk → forkast svar.
Vector-/model-fejl kan genforsøges teknisk, men et spørgsmål uden evidens må ikke “genforsøges” ved at udvide adgangsafgrænsning eller gætte.
Brug conversation_id + message_id som stabil idempotens-nøgle. Gem det eksterne post-id sammen med nøglen, så en genforsøg kan afgøre, om handlingen allerede er udført.
Høj-risiko spørgsmål, utilstrækkelig evidens eller konflikt mellem kilder sendes til menneske. Agenten må ikke eskalere egne rettigheder for at finde et svar.
Test før drift
Spørg som en bruger uden adgang til det relevante dokument og bekræft nul retrieval-hits. Giv ingen relevante hits og kontroller, at agenten svarer med reservevej frem for et gæt. Returnér en citation, der ikke findes i retrieved chunks, og bekræft, at svaret forkastes. Simulér vector store-fejl og kontroller en tydelig driftsfejl uden udvidet søgning.
Mål effekten
Citation accuracy, grounded answer rate, reservevej-rate og brugerens løsningstid.
Data og sikkerhed
Autorisation sker før retrieval og på hvert dokument/chunk-afgrænsning. Citations-id skal kunne resolve til en kilde, brugeren faktisk må se.
Spørgsmål om emnet
Hvad er formålet med “Dokument-agent med n8n, RAG og citationskrav”?
Besvar spørgsmål på baggrund af et afgrænset dokumentkorpus med sporbare kilder og sikker reservevej.
Hvilken del bør AI håndtere?
Hent relevante tekststykker, generér svar med citations-id og kræv “jeg kan ikke finde det i kilderne” ved utilstrækkelig evidens.
Hvordan håndteres fejl?
Vector store unavailable → tydelig fejl; ingen hits → intet gæt; citation peger ikke på retrieved chunk → forkast svar.
Hvad bør jeg måle?
Citation accuracy, grounded answer rate, reservevej-rate og brugerens løsningstid.