팀 프로젝트
Mapin
2026.03 ~ 2026.04
백엔드
Spring Boot 4.0Java 21PostgreSQL 16pgvectorOpenAI APIJWTOAuth
백엔드
- URL → 메타데이터 파싱(YouTube API/OG 태그) → GPT 분석(키워드·관점 점수·반대관점 검색어) → YouTube+Naver 병렬 검색 → GPT 스코어링 → 필터링까지 이어지는 분석 파이프라인 오케스트레이션
- 키워드마다 OpenAI 임베딩(text-embedding-3-small)을 pgvector에 저장, 코사인 거리(<=>) 기반 2단계 검색(주제 유사 후보 50개 → 관점 점수 차이 재정렬)으로 반대관점 콘텐츠 추천
- opposition_json 캐시·is_analyzed 플래그·키워드 임베딩 DB 저장까지 3단계 캐싱으로 GPT 재호출 없이 재분석 방지
- Java 21 Virtual Threads + CompletableFuture로 YouTube·Naver 검색 병렬화
- 직접 퍼블리시한 oauth-spring-boot-starter 라이브러리를 재사용해 Google/Apple OIDC 로그인·JWT 발급/갱신 구현
- 단순 키워드 매칭으로는 같은 주제의 반대 입장 콘텐츠를 찾기 어려운 문제를, 키워드 임베딩을 pgvector에 저장하고 코사인 유사도로 주제 후보를 추린 뒤 관점 점수 차이로 재정렬하는 2단계 검색으로 해결
- URL 분석마다 GPT를 다시 호출하면 비용·응답 시간이 늘어나는 문제를 opposition_json 캐시·is_analyzed 플래그·임베딩 DB 저장 3단계 캐싱으로 해결 - 동일 콘텐츠 재분석·재임베딩 없이 즉시 응답
- 메타데이터 파싱→GPT 분석→검색→스코어링 순차 처리로 응답이 느려지는 문제를 Java 21 Virtual Threads 기반 병렬 검색으로 해결
- Google/Apple OAuth를 매번 새로 구현하는 대신, 직접 퍼블리시한 오픈소스 라이브러리(oauth-spring-boot-starter)를 재사용해 로그인 구현 시간을 단축