Skip to content

ardkyer/labor-policy-assistant

Repository files navigation


image

AI로 더 쉽게 찾는 고용노동정책, Labor Policy AI Assistant

고용노동부의 방대한 정책 정보를 시민들이 더 쉽게 접근하고 활용할 수 있도록 돕는 AI 기반 서비스입니다.

Python badge React badge FastAPI badge MySQL badge Pinecone badge OpenAI badge Tailwind CSS badge




🚀 프로젝트 소개

Labor Policy AI Assistant는 고용노동부의 방대한 정책 정보를 쉽게 찾고 활용할 수 있도록 돕는 AI 기반 정책 추천 및 상담 서비스입니다.
이 프로젝트는 제4회 고용노동 공공데이터 활용 공모전에 제출되었으며, 319페이지에 달하는 '한권으로 통하는 고용노동정책' PDF 자료를 AI 기술로 분석하여 개인 맞춤형 서비스를 제공합니다.

🔹 AI 기반 정책 매칭: 사용자의 프로필(나이, 성별, 취업 상태 등)을 기반으로 적합한 정책 추천
🔹 LLM 기반 질의응답: 고용노동 정책에 관한 자유로운 질의응답 서비스




🏗️ 기능 소개

🔑 회원가입 및 로그인

  • 사용자 프로필 기반 맞춤형 서비스 제공을 위한 회원 관리 시스템
  • 나이, 성별, 취업 상태 등 정책 추천에 필요한 프로필 정보 입력
image
image


🔍 맞춤형 정책 추천

  • 사용자 프로필에 기반한 개인화된 정책 추천
  • 추천 정책의 요약 정보 및 원문 PDF 다운로드 제공
image
image



💬 AI 챗봇 상담

  • 고용노동 정책에 관한 자유로운 질의응답
  • RAG(Retrieval-Augmented Generation) 기술을 활용한 정확한 정보 제공
  • 사용자 프로필 기반 맞춤형 정책 안내
image
image
image


🌀 아키텍처

image

📊 데이터 파이프라인

PDF 문서 -> OCR/텍스트 추출 -> 전처리 -> 청크 분할 -> 임베딩 생성 -> 벡터 DB 저장
  1. OCR 처리:

    • 이미지 기반 PDF에서 텍스트를 추출하기 위해 여러 OCR 기술 비교 테스트
    • Naver Cloud OCR API 채택 (가장 높은 정확도)
  2. 데이터 청킹 및 임베딩:

    • LangChain의 RecursiveCharacterTextSplitter를 사용하여 추출된 텍스트를 의미 있는 단위로 분할
    • OpenAI의 text-embedding-3-small 모델을 사용해 텍스트 청크를 1536차원 벡터로 변환
  3. 벡터 데이터베이스 저장:

    • LangChain 벡터 저장소 인터페이스를 통해 생성된 임베딩을 Pinecone 벡터 DB에 저장
    • 텍스트 내용과 페이지 정보를 메타데이터로 함께 저장하여 검색 시 활용
  4. RAG(Retrieval-Augmented Generation) 시스템:

    • LangChain의 검색 체인을 활용하여 사용자 질문 임베딩 → 유사 문서 검색 → LLM에 컨텍스트 제공 → 정확한 응답 생성
    • LangChain의 RetrievalQA 체인으로 검색-증강-생성 과정을 통합 구현

🛠️ 설치 및 실행

1️⃣ 환경 설정

# 저장소 클론
git clone https://github.com/yourusername/labor-policy-assistant.git
cd labor-policy-assistant

# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 라이브러리 설치
pip install -r requirements.txt

2️⃣ 환경 변수 설정

.env 파일을 생성하고 다음 변수를 설정:

# API 키
OPENAI_API_KEY=your-openai-api-key
PINECONE_API_KEY=your-pinecone-api-key
NAVER_CLOVA_SECRET_KEY=your-naver-api-key
NAVER_CLOVA_API_URL=your-naver-api-url

# 데이터베이스
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PASSWORD=your-password
MYSQL_DB=labor_policy
MYSQL_PORT=3306

# JWT
SECRET_KEY=your-secret-key-for-jwt

3️⃣ 백엔드 실행

cd backend
uvicorn app.main:app --reload

4️⃣ 프론트엔드 실행

cd frontend
npm install
npm start

📡 API 목록

API 엔드포인트 메소드 설명
/api/auth/register POST 사용자 회원가입
/api/auth/login POST 사용자 로그인 및 토큰 발급
/api/auth/me GET 현재 로그인한 사용자 정보 조회
/api/policies GET 정책 목록 조회
/api/policies/{id} GET 특정 정책 상세 조회
/api/policies/search GET 정책 검색 (타이틀 및 설명 기반)
/api/profiles POST 사용자 프로필 생성 및 업데이트
/api/profiles/{user_id} GET 특정 사용자의 프로필 조회
/api/recommendations POST 사용자 프로필 기반 정책 추천
/api/chat POST AI 챗봇 질의응답


개발일지

제4회 고용노동 공공데이터 활용 공모전 탐색
pdf 파서해서 pinecone에 넣기
PDF OCR하기
OCR 채택
고용노동부 어시스턴트 API 개발 및 테스트
OCR중 critical한 문제 해결
PDF 100장 넣고 테스트
백엔드, 프론트엔드 연동
프론트엔드 마무리 작업
공공데이터 공모전 사업계획서 작성

👤 개발자 정보

이름 GitHub 역할
강현구 @ardkyer Backend / Frontend / AI

About

고용노동부 정책 AI 어시스턴트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published