SK 네트웍스 AI 부트캠프에서 진행했던 프로젝트를 고도화하는 과정입니다. 2일간의 짧은 기간 동안 진행하며 아쉬웠던 점들을 보완하고, 새로운 시도들을 추가하여 혼자서 개인 프로젝트로 발전시켜보고자 합니다.
부트캠프 기간 동안 구현한 핵심 내용은 다음과 같습니다.
- 형사법 법령 수집: 크롤링을 통해 법령 데이터 확보
- 정제: 별첨, 서식, 목차 등 불필요한 내용을 제거하고 실제 조문 위주로 추출
- 임베딩: ChatGPT 임베딩 모델 사용
- 청킹(Chunking): 조(Article) 단위로 텍스트 분할
- 메타데이터: 법령 제목만 포함
- RAG 기반 답변 생성: LangChain을 활용해 사용자 질문에 맞는 법령 검색 및 답변 도출
-
진행 이슈
- 단순 조 단위 조항을 텍스트로 크롤링 후 (패턴:
제N조(***))로 단순히 자르는 경우, 조항 내 포함된 다른 조항 참조문까지 분리되는 문제 확인
- 단순 조 단위 조항을 텍스트로 크롤링 후 (패턴:
-
상세 예시
제3조(특수강도강간 등) ① 「형법」 제319조제1항(주거침입), 제330조(야간주거침입절도), 제331조(특수절도) 또는 제342조(미수범. 다만, 제330조 및 제331조의 미수범으로 한정한다)의 죄를 범한 사람이 같은 법 제297조(강간), 제297조의2(유사강간), 제298조(강제추행) 및 제299조(준강간, 준강제추행)의 죄를 범한 경우에는 무기징역 또는 7년 이상의 징역에 처한다.
-
수정 내역
- 전체 텍스트를 가져오는 크롤링에서 html구조를 파싱해 각 조/항을 유지하여 list형태로 구성
- 추가 메타 데이터(제목, 주소)와 함께 JSON으로 저장
-
결과
- 정확히 조를 기준으로 분할되어 노이즈도 적고, 컨텍스트 중간이 잘리지 않고 온전히 가져올 수 있게 됨
'A: 피해자, B: 주도자/ A의 집 비밀번호, 금괴가 든 금고위치, 금고 비밀번도, 도주로 등 정보와 범행계획 제공, C: A의 집에 '침입, 절도 시도 했으나 금고안에 금괴는 없었으며 A에게 발각되어 A를 폭행 후 도주, D: C가 범행을 하는 동안 A의 집앞에서 망을 '보다 자리 이탈. A는 B,C,D의 처벌을 원하는 상태야. B,C,D가 받을 수 있는 처벌은 어떤게 있는지 알려줘.'
- 그러나 위의 질문으로 retreve를 하는 경우 경범죄 처벌법, 국가보안법을 가져오는 등 리트리버가 질문의 '폭행', '침입', '도주' 같은 키워드의 경중도/문맥을 제대로 구분하지 못함 -> retriver 개선 필요