본문 바로가기
Data Engineer

1. 채용공고 Q&A 시스템 아키텍처

by yu901 2025. 10. 9.

 

채용 공고 데이터를 활용한 Q&A 시스템 구축 과정을 6편의 시리즈로 소개합니다.

프로젝트 개요

채용 공고를 자동으로 수집하고, Vector Database에 저장한 뒤, RAG 기반 LLM을 활용해 질문에 답하는 시스템입니다.

주요 기능

  1. 자동 데이터 수집: 사람인 채용 공고 스크래핑
  2. 데이터 파이프라인: 수집 → 전처리 → 임베딩 자동화
  3. 시맨틱 검색: Vector DB 기반 의미 검색
  4. RAG 질의응답: LLM 답변 생성

기술 스택

데이터 파이프라인

  • Apache Airflow (오케스트레이션)
  • PySpark (데이터 처리)
  • BeautifulSoup (스크래핑)
  • pytesseract (OCR)

AI/ML

  • Ollama (gemma:2b)
  • SentenceTransformer (ko-sroberta-multitask)
  • ChromaDB

인프라

  • Docker, Docker Compose
  • FastAPI
  • PostgreSQL

시스템 아키텍처


데이터 흐름

1단계: 데이터 수집 (Scrape)

사람인 → BeautifulSoup → OCR → JSON 저장

2단계: 데이터 전처리 (Parse)

JSON → PySpark → 정규표현식 추출
         ↓ (실패 시)
      Ollama LLM 구조화
         ↓
  Parquet 저장 (담당업무|자격요건|우대사항)

3단계: 임베딩 (Embed)

Parquet → SentenceTransformer → 768차원 벡터 → ChromaDB

4단계: 질의응답 (QA)

사용자 질문 → 임베딩 → ChromaDB 검색 → LLM 답변 생성

Docker 구성

서비스 컨테이너 포트 역할
PostgreSQL career-rag-postgres 5433 Airflow 메타데이터
Airflow career-rag-aitflow-standalone 8080 파이프라인 오케스트레이션
FastAPI career-rag-app 8000 QA API
Ollama ollama 11434 LLM 서버

 

실행

docker compose up --build

디렉토리 구조

CareerRAG/
├── dags/
│   └── career_rag_pipeline.py
├── src/main/python/
│   ├── scraper.py
│   ├── parser.py
│   ├── embedder.py
│   ├── qa.py
│   └── main.py
├── config/
│   └── default_variables.json
├── data/
│   ├── raw/
│   └── processed/
├── chroma/
├── docker-compose.yml
└── Dockerfile

실행 방법

1. 파이프라인 실행

# 서비스 시작
docker compose up --build

# Airflow UI: http://localhost:8080 (admin/admin)
# career_rag_pipeline DAG 트리거

2. QA 테스트

curl -X POST "http://localhost:8000/ask" \
  -H "Content-Type: application/json" \
  -d '{"query": "데이터 엔지니어 필수 역량은?"}'

응답 예시:

{
  "answer": "15개 공고 분석 결과:\n- Python (14/15)\n- SQL (13/15)\n- Spark (10/15)",
  "sources": [
    {
      "title": "데이터 엔지니어",
      "company": "카카오",
      "link": "https://..."
    }
  ]
}

시리즈 목차

  1. 프로젝트 개요
  2. Docker 환경 구축
  3. Airflow 파이프라인
  4. Ollama LLM 활용
  5. ChromaDB Vector DB
  6. 실전 운영

댓글