You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DevPick 플랫폼의 FastAPI AI 서버입니다.
전체 프로젝트 소개는 Devpick-Org 에서 확인할 수 있습니다.
기술 스택
구분
기술
비고
언어
Python 3.12
프레임워크
FastAPI 0.116
LLM
Claude Haiku 4.5 / Sonnet 4.6
AWS Bedrock Converse API + Tool Use
임베딩
Amazon Titan Embeddings v2
AWS Bedrock
DB (관계형)
PostgreSQL
AI 서버가 직접 저장 (Backend push 없음)
DB (비정형)
Amazon DynamoDB
요약·퀴즈·RAG·이벤트 로그
벡터 검색
FAISS
로컬 인덱스 (data/vectors/)
RAG
LangChain + FAISS
청킹·임베딩·검색
형태소 분석
kiwipiepy
한국어 TF-IDF 전처리
태그 정규화
rapidfuzz
유사 태그 병합
스케줄링
APScheduler
수집·트렌드 배치
린트/포맷
ruff, black
CI 자동 체크
테스트
pytest
CI 자동 실행
시스템 구조
flowchart LR
Browser[Browser]
Nginx[Nginx]
Front[Next.js port 3000]
Api[Spring Boot port 8080]
Pg[PostgreSQL on RDS]
Redis[Redis on ElastiCache]
Dyn[DynamoDB]
Ai[FastAPI AI port 8000]
Faiss[FAISS Local Index]
Browser --> Nginx
Nginx --> Front
Nginx --> Api
Api --> Pg
Api --> Redis
Api --> Ai
Ai --> Dyn
Ai --> Pg
Ai --> Faiss
Loading
브라우저
└─ Nginx
└─ Next.js (프론트, :3000)
└─ Spring Boot (백엔드, :8080)
├─ PostgreSQL (:5432) ← 콘텐츠·트렌드 저장
├─ Redis (:6379) ← 요약·퀴즈 캐시
└─ FastAPI AI 서버 (:8000) ← 이 레포
├─ DynamoDB (AWS) ← 요약·퀴즈·RAG·로그 저장
└─ FAISS (로컬) ← 콘텐츠·질문 벡터 인덱스
주요 기능
기능
설명
콘텐츠 수집
30개 소스(국내외 기업 블로그, Velog, Stack Overflow, YouTube 등) 통합 수집 → PostgreSQL 저장
4레벨 AI 요약
입문·주니어·중급·시니어 수준별 요약 자동 생성 (Claude Haiku, Bedrock 1회 호출)
4레벨 퀴즈 생성
레벨별 문제·보기·해설 자동 생성 (Claude Haiku, 요약과 독립 실행)
RAG 질문 답변
FAISS 벡터 검색 + Claude Tool Use 기반 AI 답변 생성
채용 AI
JD 파싱 · 면접 Q&A 생성 · 스킬 갭 분석 · 모의면접 (Claude Sonnet)
이력서 처리
이력서 텍스트 → 마스터 이력서 JSON 파싱 · 보강
트렌드 분석
일/주/월 단위 태그 빈도 · TF-IDF · LLM 서사 요약 → PostgreSQL 저장
리포트 키워드 추출
읽은 글·질문 목록 → TF-IDF 키워드 추출 (DB 저장 없음)
AI 처리 파이프라인
수집부터 PostgreSQL 저장, AI 처리까지 AI 서버가 직접 담당합니다.
통합 수집기 (Backfill + Incremental)
↓
NormalizeService → NormalizedContent
↓
ContentRepository → PostgreSQL 직접 저장
↓ (신규 저장 콘텐츠만)
ContentPipeline.process_content()
├─ Step 1: PreprocessService — HTML → 구조 보존 텍스트
├─ Step 2: AllLevelsSummaryService — 4레벨 요약 (Claude Haiku, Bedrock 1회)
├─ Step 3: SummaryRepository — DynamoDB ai_summaries 저장
├─ Step 3-1: ContentRepository — PostgreSQL tags·category UPDATE
├─ Step 4: QuizService — 4레벨 퀴즈 (Claude Haiku, Bedrock 1회)
│ QuizRepository — DynamoDB ai_quizzes 저장
└─ Step 5: EmbeddingOrchestrator — RAG 청크 임베딩 → DynamoDB + FAISS
요약(Step 2~3)과 퀴즈(Step 4)는 독립 실행 — 요약 실패해도 퀴즈 생성 계속
Step 3-1은 요약 성공 시에만 실행 — AI 생성 tags·category를 PostgreSQL에 반영
Backend는 Redis → DynamoDB 순서로 조회, miss 시 fallback 엔드포인트 호출
Meta Engineering · GitHub Blog · AWS Korea · Cloudflare · Microsoft DevBlogs · NVIDIA Developer · Google Developers · Grab Engineering · Spring Blog · Next.js Blog