포트폴리오
프로젝트 목록으로 돌아가기

프로젝트 상세

팀 프로젝트

SpecMate

컴퓨터 하드웨어 지식이 부족한 사용자를 위한 AI 견적 에이전트

프로젝트 자료

프로젝트 화면

SpecMate의 실제 화면과 프로젝트 시각 자료입니다.

SpecMate AI PC 견적 추천 서비스 메인 화면
SpecMate AI PC 견적 추천 서비스 메인 화면
PC 내부 부품을 표현한 SpecMate 프로젝트 시각 자료
PC 내부 부품을 표현한 SpecMate 프로젝트 시각 자료

개요

프로젝트 개요

예산, 용도, 선호 브랜드 등 사용자의 요구를 분석해 PC 부품 조합을 제안하는 RAG 기반 웹 애플리케이션입니다.

프로젝트 형태
팀 프로젝트
담당 영역
백엔드 · 데이터 크롤링
서비스 유형
AI 기반 PC 견적 추천
데이터 영역
PC 부품 상품 데이터
진행 기간
2025.09.02 — 2025.11

개인 기여

담당 기능

백엔드 개발과 PC 부품 데이터 크롤링을 담당했습니다.

  1. 백엔드

    Spring Boot 기반 API와 인증, 상품, 채팅, 견적 도메인 및 AI 연동 구조를 담당했습니다.

  2. 데이터 크롤링

    다나와 PC 부품 데이터 수집, 중복 제거, JSON 구조화와 임포트 흐름을 담당했습니다.

사용 기술

기술 스택

SpecMate의 백엔드와 데이터 수집 흐름을 구성하는 기술입니다.

백엔드

  • Java 17
  • Spring Boot 3.4.6
  • Spring Security
  • Spring Data JPA
  • JWT
  • SpringDoc OpenAPI

데이터 및 AI

  • Python
  • Selenium
  • BeautifulSoup
  • Spring AI
  • OpenAI Assistant
  • PostgreSQL
  • pgvector
  • RAG

프런트엔드 및 인프라

  • React
  • JavaScript
  • PostgreSQL
  • Redis
  • Docker
  • Nginx
  • AWS

구성

시스템 아키텍처

백엔드가 PostgreSQL에서 상품·채팅·견적 데이터와 pgvector 기반 벡터 데이터를 함께 관리하고, Spring AI Vector Search와 OpenAI Assistant·Thread를 통해 검색 결과와 사용자별 대화 맥락을 연결합니다.

SpecMate의 React 프런트엔드, Spring Boot 백엔드, PostgreSQL과 pgvector 및 Redis 데이터 계층, OpenAI API, Docker Compose와 AWS EC2 배포 구성을 나타낸 시스템 아키텍처

핵심 흐름사용자 → React/Vite → Nginx → Spring Boot API → PostgreSQL·pgvector·Redis → OpenAI API → 응답 반환

원본 크기로 보기 (새 창에서 열림)

핵심 기능

주요 기능

백엔드 API와 데이터 저장소에서 확인되는 핵심 기능을 정리했습니다.

AI 견적 생성

예산, 용도, 선호 브랜드를 바탕으로 PC 부품 조합을 제안

유사 부품 추천

PostgreSQL의 pgvector와 Spring AI Vector Search를 이용한 유사 부품 검색

대화형 상담

AI 챗봇에서 견적을 요청하고 추천 결과와 설명을 확인

관리자 기능

부품 데이터, 사용자 견적 이력과 FAQ를 통합 관리

부품 데이터 구조화

다나와 크롤링 데이터를 정제해 JSON과 PostgreSQL로 관리

트러블슈팅

문제 해결

데이터 수집과 AI 연동 과정에서 발생한 문제를 원인과 해결 결과 중심으로 정리했습니다.

크롤링 데이터 누락 및 IP 차단

문제
JavaScript 렌더링으로 실제 판매처 URL이 누락되고, 요청 과다로 특정 시간대에 IP가 차단되었습니다.
해결
Selenium과 WebDriverWait으로 렌더링 완료 시점을 감지하고 요청 간격 조절, 예외 처리와 재시도 로직을 적용했습니다.

결과

  • 프로젝트 내부 테스트에서 요청 실패율 약 10% → 2% 이하
  • 전체 수집 시간 약 2시간 → 1시간 30분
  • 실제 판매처 링크까지 수집

중복 데이터 및 품질 문제

문제
옵션별 동일 제품이 중복 수집되어 JSON 크기가 증가하고 제품을 구분할 기준이 부족했습니다.
해결
제품명과 제조사를 조합한 중복 검사 알고리즘을 추가하고 중복 데이터 필터링과 JSON 정제를 자동화했습니다.

결과

  • 제품명과 제조사 기준으로 확인된 중복 데이터 제거
  • AI 입력 데이터 품질 개선

벡터 데이터 저장 구조 통합

문제
Qdrant와 PostgreSQL을 분리해 사용하면서 일반 데이터와 벡터 데이터를 별도로 관리해야 했습니다.
해결
PostgreSQL에 pgvector를 적용해 저장 구조를 통합하고 Spring AI Vector Search를 구성했습니다. 이후 OpenAI Assistant와 Thread를 연결해 사용자별 대화 맥락을 유지하도록 확장했습니다.

결과

  • 실제 PC 부품 데이터를 참조하는 견적 추천
  • 사용자별 대화 맥락을 유지하는 RAG 구조
  • 프로젝트 내부 테스트에서 프롬프트 오류율 약 15% → 2% 이하

성과와 학습

결과 및 배운 점

프로젝트를 통해 구현한 결과와 새롭게 학습한 내용을 정리했습니다.

  • JSON 임포트와 중복 제거를 포함한 부품 데이터 자동화 및 ERD 정립

  • Spring Boot·Spring AI·PostgreSQL·pgvector 기반 AI 견적 생성과 유사도 검색 구현

  • LangChain과 LangGraph의 역할 차이 학습

  • OpenAI Assistant를 활용한 프롬프트와 Thread 구성

  • 운영자의 데이터·상담·사용자 통합 관리 흐름 설계