| Guard ID | 가드레일 이름 | 목적(한 줄) | 적용 범위 | 언제 발동(Trigger) | 시스템이 하는 일(Action) | 사용자에게 보이는 메시지(템플릿) | 로그에 남길 것(핵심) | 테스트 예시(한 줄) |
|---|---|---|---|---|---|---|---|---|
| G-PII-01 | 입력 PII 차단 | 내부/개인정보 유출을 막음 | 사용자 입력 | 주민번호/계좌/전화/이메일/주소/사번/고객정보 등 민감정보가 많이 포함됨 | 1) 답변 생성 중단 2) 민감정보 제거 안내 3) 안전한 질문 예시 제시 | “민감정보가 포함된 것 같아요. 개인정보/내부정보는 입력하지 말아주세요. 예: ‘연차 규정 요약’처럼 정보 없이 질문해 주세요.” | request_id, user_id, role, PII_detected=true, 차단 사유(PII_HIGH) | “내 사번 12345인데 연차 몇일?” 입력 → 차단 안내 |
| G-PII-02 | 입력 PII 마스킹 | 필요한 경우에도 안전하게 처리 | 사용자 입력 | 민감정보가 조금 포함되었거나, 질문 목적상 내용은 유지해야 함 | 1) 민감정보를 가림처리(마스킹) 2) 마스킹된 텍스트로만 검색/LLM 진행 | “안전한 처리를 위해 일부 정보는 가려서 처리했어요.”(선택 표시) | request_id, PII_detected=true, mask_summary, masked_text_hash | “홍길동(010-****) 교육 이수 확인 방법” → 마스킹 후 진행 |
| G-PII-03 | 출력 PII 재검사 | 답변에 민감정보가 섞여 나오는 걸 막음 | 모델 출력 | 답변 초안에 이메일/전화/주소/주민번호 형태 등이 포함됨 | 1) 출력에서 민감정보 마스킹 2) 필요 시 해당 문장 삭제/완화 | “안전한 처리를 위해 일부 정보는 가려서 제공했어요.” | request_id, output_pii=true, masking_applied=true | 답변에 전화번호가 생성됨 → 가림 처리 |
| G-ANS-01 | Answerability(근거 부족 시 ‘추측 금지’) | 근거 없는데 답을 “지어내는” 걸 막음 | 사규/규정/정책성 질문 | RAG 검색 결과가 없거나, 점수가 너무 낮거나, 질문이 너무 모호함 | 1) 단정 답변 금지 2) 추가 질문 1~2개 제시 or “근거 확인 불가” 안내 | “관련 규정을 찾기엔 정보가 부족해요. (1) 어떤 규정/주제인지 (2) 부서/상황을 알려주면 더 정확히 찾아볼게요.” | request_id, rag_used=true/false, topk_count, 근거부족 사유 | “연차 규정 알려줘” → 어떤 기준/대상인지 추가 질문 |
| G-ANS-02 | Answerability(근거 충분 시에만 본문 답변) | ‘찾은 근거로만’ 답하게 함 | 사규/규정/정책성 질문 | RAG 결과가 충분함(TopK 확보 + 최소 기준 충족) | 1) 근거 묶기 2) 답변 생성 3) 근거와 연결된 문장 위주로 작성 | (사용자 메시지 템플릿 없음: 정상 답변) | request_id, doc_ids, version, chunks_used_count | “연차 발생 기준” → 근거 기반 요약 + 출처 표시 |
| G-CIT-01 | Citation(출처 표시 강제) | “어디 근거인지”를 항상 보이게 함 | RAG 답변 | 사규/규정/교육자료 기반 답변을 생성할 때 | 1) 답변에 출처 섹션 추가 2) 문서명/버전/관련 조항/페이지(가능하면) 포함 | “출처: [문서명 / 버전 / 관련 항목]” | request_id, citation_count, cited_doc_ids | 답변 끝에 출처 누락 → 자동으로 출처 섹션 생성 |
| G-CIT-02 | Citation(출처 없으면 답변 축소) | 출처 없이 길게 말하지 않게 함 | RAG 답변 | 답변은 생성됐는데 출처가 없거나, 연결이 약함 | 1) 본문을 짧게 2) “확인 필요”로 표현 3) 추가정보/문서 요청 | “정확한 근거 문서를 확인하지 못했어요. 문서명/키워드를 알려주면 확인 후 안내할게요.” | request_id, citation_missing=true, fallback_reason | 근거가 애매한데 본문이 길어짐 → 답변 축소 + 확인 요청 |
| G-FB-01 | Fallback(시스템 오류/타임아웃) | 장애 때도 안전하게 안내 | 전체 흐름 | PII/RAG/LLM/저장소 호출이 실패하거나 시간 초과 | 1) 실패 단계 기록 2) 사용자에게 재시도 안내 3) 가능한 경우 “질문 단순화” 가이드 | “지금은 처리에 문제가 생겼어요. 잠시 후 다시 시도해 주세요. 질문을 짧게/핵심 키워드로 보내면 더 잘 처리돼요.” | request_id, failed_step(PII/RAG/LLM), error_code | Milvus 장애 → 오류 안내 + 재시도 |
| G-FB-02 | Fallback(인증/권한 부족) | 권한 없는 데이터 노출 방지 | 권한 필요한 요청 | role/권한이 부족하거나 접근 불가 리소스 요청 | 1) 답변 제한 2) 권한 요청 안내(경로 안내) | “이 내용은 권한이 필요한 정보예요. 관리자에게 권한 요청 후 다시 시도해 주세요.” | request_id, role, access_denied=true, target_resource | 직원이 관리자 전용 정책 요청 → 권한 안내 |
| G-FB-03 | Fallback(문서 없음/미인덱싱) | “아직 준비 안 됨”을 명확히 안내 | RAG 답변 | 관련 문서가 시스템에 없거나 아직 인덱싱 전 | 1) “문서 없음/미반영” 안내 2) 문서 업로드/승인 경로 제시 | “관련 문서가 아직 시스템에 반영되지 않았어요. 문서 업로드/승인 후 다시 질문해 주세요.” | request_id, missing_kb=true, domain | 새 규정인데 업로드 안 됨 → 반영 안내 |
가드레일은 챗봇이 실수(유출/추측/출처누락/장애)를 하지 않도록, 답변 전·중·후에 걸어두는 안전장치예요.