국가법령정보 API로 최신 법령 검색하기 👩‍💻

나나's Brain·2025년 3월 18일
0

개념Study

목록 보기
20/21
post-thumbnail

왜 법률 정보를 선택했을까?

외국인 & 다문화 가정을 위한 챗봇을 구현중이다. 한국에서 생활하는 외국인 및 다문화 가정이 안정적으로 정착하려면 비자, 취업, 복지, 법적 보호 등의 정보를 쉽게 얻을 수 있어야 한다. 하지만 기존의 법률 정보는:

  • 검색이 어렵고 전문 용어가 많아 이해하기 어려움
  • 최신 개정 정보 확인이 어려움
  • 외국인을 위한 맞춤형 안내 부족

그래서!
국가법령정보 API를 활용하면 실시간으로 최신 법령 데이터를 가져와 벡터DB에 저장하고,
사용자의 질문에 맞춰 필요한 법령 정보를 쉽고 빠르게 검색할 수 있는 챗봇을 만들 수 있다!

🔥 Keep going~!


프로젝트 진행 개요

🔹 법률 데이터 수집 & 저장

  • 국가법령정보 API 활용 → 법령 데이터(판례, 법령, 조례) 수집
  • ChromaDB 벡터 DB에 데이터 저장
  • OCR & 문서 임베딩 기능 추가

🔹 자동 업데이트 기능

  • 스케줄러 적용 (24시간마다 데이터 최신화)
  • 최신 법령 정보 유지 & 빠른 검색 기능 제공

🔹 검색 기능 최적화

  • 법령 내용을 벡터화하여 ChromaDB에서 빠르게 검색
  • 검색 기반 QA 체인 적용 (LLM + 벡터 DB)

구현 과정

📌 1. 법령 데이터 수집 및 저장

def fetch_all_data():
    fetch_data_prec()  # 판례 데이터 가져오기
    fetch_data_law()   # 법령 데이터 가져오기
    fetch_data_ordin() # 조례 데이터 가져오기
    
    # 데이터를 가져온 후 벡터 DB에 저장
    save_files_to_vector_db()

📌 결과:
국가법령 정보 총 13,215개 외국인, 다문화 키워드로 텍스트 추출 완료
판례.xlsx, 법령.xlsx, 조례.xlsx 자동화 다운 → 경로 설정 완료

외국인의 prec 갯수: 1444
다문화의 prec 갯수: 26
총 1470 개

외국인의 law 갯수: 1544
다문화의 law 갯수: 93
총 1637 개

외국인의 ordin 갯수: 6502
다문화의 ordin 갯수: 3606
총 10108 개


📌 2. 24시간마다 자동 업데이트 (스케줄러 적용)

##################################### 24시간마다 스케줄러 실행 
scheduler = BackgroundScheduler()

scheduler.add_job(fetch_all_data, trigger='interval', hours=24)

# 서버 실행 설정
if __name__ == "__main__":
    scheduler.start()

    # FastAPI 서버 실행
    uvicorn.run(app, host="0.0.0.0", port=8000)

📌 결과:
스케줄러 기능 적용, 24시간마다 데이터 업데이트 완료
13,215개 다운 소요 시간: 1분


📌 3. 벡터 DB 저장 & 검색 기능 추가

# 벡터 DB에서 관련 문서 검색
query = input_data.messages[-1]  # 최신 메시지 사용
docs = retriever.invoke(query)

# 검색된 문서를 LLM 입력에 추가
context = "\n\n".join([doc.page_content for doc in docs]) if docs else "관련 정보 없음"
input_data.messages.append(f"🔍 참고 정보:\n{context}")

# 챗봇 응답 생성
result["chatbot_response"] = chat_chain.invoke(input_data.messages)

📌 결과:
문서 청크 & 임베딩 완료
문서 메타데이터 정보 (문서 타입, 고유 ID, 파일명, 현재 시각) 저장 구현 완료
벡터 DB에 법령 데이터 저장 완료


📌 4. 검색 성능 테스트

🔍 "10ㆍ29 이태원 참사 피해자 권리보장과 진상규명 및 재발방지를 위한 특별법 시행령의 주요 조항은 어떤 것이 있나요?"

⏳ 기존 응답 속도: 2분 29초
🚀 벡터 DB 최적화 후: 5분 5초 (개선 필요)

"안녕하세요. 저는 Snail입니다. 

10ㆍ29 이태원 참사 피해자 권리보장과 진상규명 및 재발방지를 위한 특별법 시행령의 주요 조항은 다음과 같습니다...

다음으로, 이 법률의 시행령은 2025년 1월 14일에 제정되었으며, 국민 제안 규정에 따라 일부 개정되었습니다.

더 궁금한 점이 있으시면 언제든지 물어보세요!"

📌 다음 목표:
검색 속도 개선 (stuff → map_reduce 체인 비교 테스트)
OCR 활용하여 법령 문서 자동 분류
PostgreSQL 연동하여 사용자 질문 & 응답 데이터 저장


마무리 & 앞으로의 계획

🔹 법령 데이터 13,215개 자동 수집 & 벡터 DB 저장 성공!
🔹 법령 검색 챗봇 MVP 구현 완료
🔹 벡터 DB 검색 속도 개선 & 고도화 예정

🚀 다음 단계:
1. PostgreSQL 연동 → 사용자 질문 & 챗봇 응답 저장
2. 벡터 DB 검색 최적화 → 쿼리 속도 개선
3. OCR 기반 법령 문서 자동 분류 → 법령 문서 태깅 기능 추가

🔥 Keep going.......................~!

profile
"로컬에선 문제없었는데…?"

0개의 댓글