법령·SOP 질문에 AI를 쓸 때 생기는 실패는 세 가지입니다. 검색 없이 기억으로 조문을 지어내는 경우, 웹 검색이 블로그 글이나 옛 판 조문을 근거로 가져오는 경우, 아직 시행되지 않은 조문을 현행 조문처럼 답하는 경우입니다. 모델이 좋아져도 뒤의 두 가지는 근거를 어디서 가져오느냐에 달려 있습니다.
이 안내서는 먼저 법령·SOP 질문을 어디서 풀지 고르는 기준을 다룹니다. 그다음 내부 SOP처럼 자체 검색 색인(RAG, 검색 증강 생성)이 필요한 경우에 문서를 나누고 근거를 확인하는 기준을 다룹니다. 시스템을 직접 만들 때와 사업으로 발주해 검수할 때 같은 기준을 씁니다.
- 법령·SOP 질문을 공식 조회 서비스, 승인된 AI 서비스의 파일 첨부, 자체 검색 색인 가운데 어디서 풀지 고를 수 있습니다.
- 최소 청크가 보존하는 조문번호·출처·확인일과 운영 확장에 필요한 시행일·문서 ID·권한 메타데이터를 구분할 수 있습니다.
- 검색된 근거 밖의 내용을 답하지 않게 하는 조건을 프롬프트와 시스템에 줄 수 있습니다.
- 검색 오류와 생성 오류를 나눠 보고 담당자의 원문 확인으로 연결할 수 있습니다.
AI에게 맡기는 프롬프트
법령·SOP 질문 여러 건을 AI에게 근거 조문 후보와 함께 정리하게 할 때 씁니다. 공개 법령만 다루면 웹 검색이나 법령 검색 연결이 켜진 AI에 맡기고, 내부 SOP를 붙일 때는 승인된 내부 환경에서 씁니다. 실제 민원에서 나온 질문은 다시 써도 사건 정황이 남을 수 있으므로 승인된 내부 환경에서 다룹니다.
[목적] 붙임 질문 목록의 질문마다 근거 조문 후보를 정리한 검토용 표를 만듭니다. 담당자가 원문을 열어 확인하는 데 씁니다. [자료] 붙임 파일: 질문 목록(외부 AI에는 실제 민원과 무관하게 만든 합성 질문이나 공개 자료만), 관련 SOP 파일(승인된 내부 환경에서만) 소방 법령·기준의 맥락은 https://119-ai-studio.kr/kg/index.txt 에서 먼저 파악하고, 근거는 원문 주소와 함께 정리해 주세요. 법령 조문은 국가법령정보센터나 소방법령정보(https://fire-law-static.pages.dev/) 원문에서 찾고, 블로그·요약 글은 근거로 쓰지 마세요. [완성 기준] 질문마다 한 행: 질문, 근거 문서와 조문 번호, 원문 주소, 시행일, 근거 문장 요약. 근거를 찾지 못한 질문은 답을 쓰지 말고 [확인 필요]로 남겨 주세요. 시행일처럼 원문에서 확인하지 못한 값도 [확인 필요]로 남겨 주세요. 시행 예정 조문은 현행 조문과 구분해 적어 주세요. [하지 말 것] 처분·과태료·의무 여부와 법령 적용은 확정하지 말고, 확인할 원문과 담당 부서를 적어 주세요. 확인 기준은 https://119-ai-studio.kr/sop-law-rag.html 안내서를 따릅니다. 작업 전에 빠진 정보가 있으면 먼저 질문해 주세요.
결과를 받은 뒤 확인할 것은 다음과 같습니다.
- 원문 주소를 열어 조문 번호와 문장이 실제로 일치하는지, 시행일 기준으로 현행인지 봅니다.
- 2022년 12월 분법 전 자료의 조항 번호나 시행 예정 조문이 현행처럼 섞이지 않았는지 봅니다.
- [확인 필요] 표시가 없는 행도 근거 문장이 질문에 실제로 답하는지 봅니다.
근거를 주는 세 가지 방법
AI가 법령·SOP 질문에 근거를 두고 답하게 하는 방법은 세 가지입니다. 자체 검색 색인은 그중 하나이고, 공개 법령만 다룬다면 공식 조회 서비스와 연결 도구를 먼저 봅니다.
| 방법 | 맞는 상황 | 확인할 것 |
|---|---|---|
| 공식 조회 서비스·법령 검색 연결 | 공개 법령·화재안전기준 조문, 개정·시행일 확인 | 연결한 AI 서비스로 무엇이 전송되는지, 시행일·현행 여부 |
| 승인된 AI 서비스의 파일 첨부 | 문서 몇 개, 사용자 소수, 외부 AI 입력을 확인받은 자료 | 붙인 문서의 판·시행일, 긴 입력 가운데 부분의 중간 소실 |
| 자체 검색 색인(RAG) | 내부 SOP, 공개 범위가 다른 문서, 업무망 안 운영, 많은 사용자 | 이 안내서의 1~4절 |
소방법령정보는 소방 법령과 화재안전기준의 조문을 통합 검색하고 개정 이력·시행 일정을 함께 보여 주며, AI 에이전트 연결 메뉴를 둡니다. 법제처의 법령·행정규칙·자치법규 검색 API로 현행 법령과 조문을 조회하고, 소방청 법령해석 찾기로 이미 나온 법령해석을 찾습니다. AI 도구에 법령 검색을 연결하려면 공공 AX의 국가법령 검색 MCP를 봅니다. 어느 방법이든 AI에 무엇이 전송되는지 생성형 AI 입력 확인으로 먼저 점검합니다.
가상 상황: 하루 수십 건의 조문 질의
다음은 학습용 가상 상황입니다. 예방·민원 부서에 "이 내용은 어느 법 몇 조가 근거냐"는 질의가 매일 여러 건 들어옵니다. 담당자는 처음에 모든 법령과 SOP를 넣은 자체 검색 시스템을 만들려 했지만, 질의를 나눠 보니 대부분은 공개 법령·화재안전기준 조문이었고 나머지가 기관 내부 SOP였습니다.
그래서 이 부서는 공개 법령 질문은 공식 조회 서비스와 법령 검색 연결로 풀고, 내부 SOP만 업무망 안의 자체 색인에 넣었습니다. 자체 색인의 문서 범위가 좁아져 갱신과 권한 관리가 쉬워졌습니다. 공개 법령까지 PDF로 내려받아 자체 색인에 넣었다가 개정을 따라가지 못해 옛 조문으로 답하면 실패합니다.
RAG가 하는 일
RAG는 질문이 들어오면 먼저 승인된 문서에서 관련 조각을 검색하고, 그 조각만 근거로 답을 만들게 하는 구조입니다. 모델의 기억 대신 확인한 원문을 근거로 씁니다. 한 건씩 원문을 확인하는 방법은 법령 근거 확인 브리프 만들기에 있고, RAG는 그 확인에 쓸 조문 후보를 많이 모아야 할 때 씁니다.
| 단계 | 무엇을 | 핵심 원칙 |
|---|---|---|
| 1 정리 | 문서 → 텍스트 | 출처·시행일·확인일을 함께 보관 |
| 2 청킹 | 텍스트 → 검색 조각 | 임의 분할 금지, 조·항 경계 |
| 3 생성 | 근거 → 답변 | 검색된 근거에만 기반, 출처 표시 |
| 4 검증 | 답변 → 확인 | 검색 오류와 생성 오류를 나눠 봄 |
1. 문서 정리
법령과 SOP는 가져오는 경로가 다릅니다.
- 법령: PDF를 잘라 쓰기보다 법제처 API나 소방법령정보처럼 조문 단위로 주는 곳에서 가져옵니다. 법령 원문을 내는 기관은 소방 기관 사이트의 법령·화재안전기준·표준 분야에 있습니다. 법령·고시와 기관 안내서의 이용 조건 차이는 저작권법 카드에서 확인합니다.
- SOP·매뉴얼: HWP·PDF 파일을 텍스트로 바꿉니다. 내부 문서는 공공 AX의 마크다운 변환기처럼 외부 호출 없이 로컬에서 작동하는 도구로 바꿉니다. MarkItDown·Unstructured 같은 범용 변환 도구는 HWP 지원 여부와 외부 전송 기본값을 안전한 AI 운영 도구에서 먼저 확인합니다.
- 비공개·대외비 문서: 넣기 전에 범위와 처리 방법을 기관 정보보안 담당과 정합니다(보안업무규정 시행규칙).
2. 조문 경계로 나누기(청킹)
청킹은 긴 문서를 검색할 수 있는 단위의 조각으로 나누는 일입니다. 일반 문서는 일정 길이로 자르기도 하지만, 법령을 길이로 자르면 한 조문이 두 조각으로 갈라집니다. 검색이 앞 조각만 가져오면 "다음 각 호"에 이어지는 내용이 빠진 채 답이 만들어집니다.
그래서 조·항 경계로 나누고 조문번호·출처·확인일을 함께 저장합니다. 아래 코드는 이 기준을 보여 주는 최소 예시입니다. 실제 코드는 프롬프트로 AI에게 만들게 하고, 나온 조각의 조문 번호를 원문 목차와 대조합니다.
import re # 줄 머리의 '제N조(' 또는 '제N조의M(' 만 경계로 씁니다. 본문 속 '제3조에 따른'에서는 자르지 않습니다. ARTICLE = re.compile(r"(?m)^(제\d+조(?:의\d+)?)(?=\s*\()") main_text, _, addenda = law_text.partition("\n부칙") # 부칙은 조 번호가 다시 시작하므로 따로 다룹니다 parts = ARTICLE.split(main_text) chunks = [] for i in range(1, len(parts), 2): no = parts[i] body = parts[i + 1].strip() if i + 1 < len(parts) else "" chunks.append({ "text": f"{no}{body}", "article": no, "source": source_url, # 공식 원문 링크 "checked_on": "2026-10-26", # 확인일(법령은 개정된다) })
⚠️ 이 최소 코드의 한계: article, source, checked_on만 보존합니다. 다음 메타데이터는 아직 구현하지 않았습니다:
- 시행일·공포일: 시행 예정 조문과 현행 조문을 구분할 수 없음
- 문서 ID·버전: 같은 조문을 여러 판에서 가져올 때 중복 제거 불가
- 공개 범위·권한: 비공개 SOP가 공개 사용자에게 검색될 수 있음
- 갱신·권한 필터: 색인 재구성과 이전 판 제거 자동화 불가
부칙·별표·삭제 조문도 이 최소 코드가 다루지 않습니다. 따라서 아래 운영 시나리오는 이 기능을 별도로 설계·검증한 확장 단계입니다. 최소 코드를 그대로 내부 문서 검색이나 권한이 있는 시스템에 쓰면 안 됩니다.
소방 법령에는 모델이 스스로 알려 주지 않는 구조가 있어 나누기 전에 확인합니다.
| 확인할 구조 | 생기는 문제 | 처리 |
|---|---|---|
| 부칙 | 조 번호가 다시 시작해 본칙 조문과 섞임 | 부칙을 따로 나누고 공포일·시행일을 붙임 |
| 별표 | 소방용수시설 설치기준처럼 기준이 본문이 아니라 별표에 있음 | 별표를 별도 조각으로 두고 근거 조문과 연결 |
| 삭제 조문 | "삭제" 표시만 남은 조문이 검색됨 | 색인에서 빼거나 삭제 표시를 메타데이터로 둠 |
| 분법 전 자료 | 2022년 12월 분법 전 자료의 조항 번호가 현행과 다름 | 자료의 기준 법령과 시행일을 기록하고 현행 조문과 대조 |
| 화재안전기준 | 성능기준(NFPC)과 기술기준(NFTC)으로 나뉨 | 어느 기준의 조문인지 메타데이터로 구분 |
잘 나눈 조각의 실물은 소방청의 소방시설법령 질의회신집 임베딩 데이터에서 볼 수 있습니다. 질의 1건과 회신을 한 조각으로 묶고 조각마다 출처 페이지와 관계법령을 붙였습니다. 2021·2022년판의 조항 번호는 2022년 12월 분법 전 법령 기준이라 현행 조문과 대조합니다.
3. 근거에만 기반한 답 만들기
검색된 근거 조각만 맥락으로 주고 답에 조문·출처를 붙이게 합니다. 근거가 없으면 답하지 말고 "확인 필요"로 두게 합니다. 질문 속 특정소방대상물·관계인 같은 소방 업무 용어는 법령 정의와 맞춰 검색해야 엉뚱한 조문을 덜 가져옵니다.
아래 [근거]는 공식 문서에서 검색된 조문입니다. [근거]에 있는 내용만으로 답하세요. 근거에 없으면 지어내지 말고 "확인 필요"라고 답하세요. 답의 각 문장 끝에 근거가 된 조문번호와 출처 링크를 붙이세요. 처분·과태료·의무 여부를 단정하지 말고, 해당 조문을 가리키며 "원문 확인 필요"로 안내하세요.
같은 질문에 답이 어떻게 달라지는지 보겠습니다(조문 번호는 자리표시자입니다).
- 근거 조건 없이(위험): "소화기는 제△조에 따라 6개월마다 점검해야 하며, 미이행 시 과태료가 부과됩니다." → 출처 링크가 없고, 처분을 단정합니다.
- 근거 조건을 준 뒤(안전): "검색된 근거에 점검 주기 관련 조문이 있습니다. 다만 과태료·처분 여부는 이 근거만으로 단정할 수 없어 원문 확인이 필요합니다. (근거: 제△조, 출처 링크, 확인 필요)" → 답이 검색된 근거를 가리키고, 단정 대신 확인을 안내합니다.
이 단계의 출력은 법령 근거 확인 브리프의 입력이 됩니다. RAG는 조문 후보를 빠르게 모아 줄 뿐이고, 처분·해석의 최종 판단은 담당자가 원문을 보고 합니다.
4. 검증: 검색 오류와 생성 오류 나누기
답이 근거에 충실한지(충실도)와 검색이 맞는 조문을 가져왔는지(맥락 정밀도)를 따로 봅니다. 검색이 엉뚱한 조문을 가져오면 답이 그 조문에 충실해도 틀립니다. 자주 묻는 질문과 정답 조문을 묶은 골든셋을 만들어 청킹·프롬프트를 바꿀 때마다 같은 질문을 다시 돌립니다.
골든셋을 만드는 법, Ragas 같은 평가 도구를 쓸 때 판정 모델을 내부에 두는 법은 RAG 운영, 골든셋 회귀 평가와 가드레일에 모았습니다.
설계 판단
질문 빈도, 근거의 위험도, 문서 권한과 갱신 책임을 함께 보고 방식을 고릅니다. 기관이 법령·매뉴얼 챗봇 사업을 발주하거나 검수할 때도 같은 표를 씁니다.
| 방식 | 맞는 상황 | 트레이드오프 | 사람이 확인할 것 |
|---|---|---|---|
| 공식 조회 서비스·법령 검색 연결 | 공개 법령·화재안전기준 조문과 시행일 확인 | 내부 SOP는 다루지 못하고, 연결한 AI 서비스의 전송 범위를 따로 봐야 함 | 원문 주소·시행일·현행 여부 |
| 원문 수동 검색 + 근거표 | 질문이 적고 처분·의무처럼 오류 비용이 큰 때 | 속도와 대량 처리를 포기하고 근거 확인을 우선 | 정확한 원문·시행 시점·적용 범위 |
| 단일 문서군 RAG | 반복 질문이 많고 확인된 문서 범위가 명확할 때 | 청킹·검색·갱신을 계속 평가해야 함 | 답변 링크와 검색 기록의 원문 일치 |
| 권한별로 분리한 문서군 RAG | 공개 자료와 내부 SOP를 서로 다른 사용자에게 제공할 때 | 색인·갱신·시험 범위가 늘어남 | 사용자 권한과 검색 결과의 출처 일치 |
운영 시나리오
두 사례는 특정 법령·기관의 실제 사건이 아닌 가상 연습입니다. 현재 최소 코드에 없는 문서 ID·버전·권한 메타데이터와 검색 필터를 운영 확장으로 추가한다는 전제에서, 시스템이 어떤 근거를 보여 줬는지 재현하는 데 초점을 둡니다.
가상 시나리오 1: 갱신한 문서 뒤에도 예전 근거가 검색된 경우
- 탐지: 문서 갱신 후 같은 질문의 근거 링크·확인일을 비교하니 예전 판의 조각이 새 조각과 함께 나왔습니다.
- 원인 가설: 최소 청크에는 고유 문서 ID·버전이 없어 이전 조각을 확실히 식별·제거하지 못했고,
checked_on도 저장만 했을 뿐 검색 필터에 연결하지 않았다고 봅니다. - 대응: 질의응답 제공을 멈추고 문서 ID·버전·시행일 메타데이터와 갱신 절차를 먼저 구현한 뒤, 승인된 원문 한 스냅샷으로 색인을 다시 만듭니다.
- 재발 확인: 같은 골든셋 질문을 다시 돌려 예전 문서 ID가 검색되지 않고 출처·확인일이 현재 스냅샷과 일치하는지 확인합니다.
가상 시나리오 2: 권한이 다른 문서 조각이 함께 검색된 경우
- 탐지: 권한 메타데이터가 없는 최소 청크에 내부 SOP를 섞으면 공개 사용자에게도 검색될 수 있음을 배포 전 가상 권한 시험에서 확인했습니다.
- 원인 가설: 현재 최소 코드에는 문서 공개 범위와 사용자 권한을 표현하거나 검색 전에 거르는 구현이 없습니다.
- 대응: 내부 SOP를 색인에 넣지 않고, 문서군 분리 또는 검색 전 권한 필터와 보안 승인을 먼저 구현합니다.
- 재발 확인: 권한 조합별 가상 질문으로 허용된 문서 ID만 돌아오는지 확인하고, 허용되지 않은 출처가 한 건이라도 나오면 배포를 중단합니다.
한계와 리스크
| 리스크 | 발생 조건 | 영향 | 완화·사람 승인 |
|---|---|---|---|
| 낡은 근거의 재검색 | 개정·갱신 후 이전 색인이 남음 | 답은 근거에 충실해도 현재 원문과 불일치 | 버전·확인일을 강제하고 갱신 후 담당자가 원문 대조 |
| 시행 예정 조문의 혼동 | 조각에 시행일이 없음 | 아직 시행되지 않은 내용을 현행처럼 안내 | 시행일을 메타데이터로 두고 기준일과 비교, 담당자가 원문 확인 |
| 권한 경계 누락 | 공개 범위가 다른 문서를 하나의 검색 공간에 섞음 | 비공개 출처·내용의 노출 가능성 | 검색 전 권한 검사와 분리 색인을 적용하고 보안 담당자 승인 |
| 근거 밖 생성 | 검색 조각이 부족한데도 모델이 기억으로 문장을 보완함 | 근거 없는 의무·처분 표현이 나올 수 있음 | 근거 없음을 응답 중단 조건으로 두고 외부 제공 전 담당자가 공식 원문 확인 |
자주 묻는 질문
Q. RAG를 쓰면 환각이 없어지나요?
아닙니다. 근거를 못 찾거나 엉뚱한 근거를 찾을 수 있고, 맞는 근거 위에 모델이 다른 내용을 덧붙일 수도 있습니다. 근거 없음을 정상적인 중단 결과로 설계합니다.
Q. 검색된 조문으로 처분·의무 여부를 바로 답해도 되나요?
안 됩니다. RAG의 출력은 확인할 원문 후보와 초안입니다. 여러 규정의 관계와 사실관계를 종합하는 법적 해석은 자동화 범위에 두지 않습니다.
Q. 공개 법령도 자체 색인에 넣어야 하나요?
먼저 공식 조회 서비스와 법령 검색 연결을 봅니다. 자체 색인에 넣으면 개정을 따라가는 갱신 책임도 함께 생깁니다. 내부 SOP와 같은 화면에서 함께 답해야 하는 경우처럼 이유가 분명할 때 넣고, 그때도 시행일과 출처를 조각마다 보관합니다.
Q. 문서만 바꾸면 색인도 자동으로 최신이 되나요?
그렇지 않습니다. 입력 문서 승인, 이전 조각 제거, 새 색인 생성, 골든셋 질문 재확인을 하나의 갱신 절차로 관리합니다.
핵심 정리
- 법령·SOP 질문은 먼저 공식 조회 서비스·법령 검색 연결, 승인된 AI 서비스의 파일 첨부, 자체 검색 색인 가운데 어디서 풀지 고릅니다.
- 현재 최소 청크는 조문번호·출처·확인일만 보존합니다. 시행일·문서 ID·버전·권한은 운영 전에 별도 구현·검증해야 할 근거 메타데이터입니다.
- 검색 실패와 생성 실패를 나눠 봐야 고칠 곳을 정확히 고를 수 있습니다.
- 근거 없는 답, 낡은 근거, 권한 밖 근거는 응답 중단과 담당자 확인의 신호이고, 처분·의무 판단은 담당자가 원문으로 정합니다.
다음 단계
- 법령 근거 확인 브리프 만들기 — AI가 모은 조문 후보를 공식 원문과 대조하는 사람 검토 형식을 익힙니다.
- RAG 운영, 골든셋 회귀 평가와 가드레일 — 문서·프롬프트·모델이 바뀐 뒤에도 근거 품질이 유지되는지 다시 확인합니다.
- AI 관계법령 — 법령·내부 문서를 AI 검색 자료로 쓸 때 확인할 저작권·보안·개인정보 기준을 봅니다.