채용 공고 데이터를 활용한 Q&A 시스템 구축 과정을 6편의 시리즈로 소개합니다.
프로젝트 개요
채용 공고를 자동으로 수집하고, Vector Database에 저장한 뒤, RAG 기반 LLM을 활용해 질문에 답하는 시스템입니다.
주요 기능
- 자동 데이터 수집: 사람인 채용 공고 스크래핑
- 데이터 파이프라인: 수집 → 전처리 → 임베딩 자동화
- 시맨틱 검색: Vector DB 기반 의미 검색
- 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://..."
}
]
}
시리즈 목차
- 프로젝트 개요
- Docker 환경 구축
- Airflow 파이프라인
- Ollama LLM 활용
- ChromaDB Vector DB
- 실전 운영
'Data Engineer' 카테고리의 다른 글
| 6. Vector DB와 시맨틱 검색: Chroma DB (0) | 2025.10.11 |
|---|---|
| 5. LLM 활용 RAG 질의응답 구현 (0) | 2025.10.11 |
| 4. Spark로 대용량 데이터 전처리 (0) | 2025.10.10 |
| 3. Airflow로 데이터 파이프라인 자동화 (0) | 2025.10.10 |
| 2. Docker Compose를 활용한 서비스 통합 실행 (0) | 2025.10.09 |
댓글