Skip to content

nambar-wan/marky

Repository files navigation

개요

선정이유

  • AI발전에 따라 사용자 경험의 개인화 요구 증가
  • 현대 기업들은 LLM(대형 언어 모델) 활용 능력을 요구함
  • 다양한 openAPI를 프로젝트에 적용하는 것으로 API 활용 경험을 향상

 목표

  • Spring AI를 사용하여 AI의 기초를 학습하고 Spring에서 AI활용한 프로그램을 구현하는 능력을 기른다
  • 생성형 AI에서 사용되는 벡터 임베딩의 개념을 이해하고 벡터 데이터베이스 활용 능력을 기른다
  • 각 팀원별 카테고리를 선정하여 특정 분야에 특화된 생성형 AI를 활용한 서비스 구현
    • RAG, LangGraph, MCP 서버 사용
    • 항공권 검색, 데이트코스 검색, 경로 검색, 경로 상의 지하철 혼잡도 검색, 목적지 인근 주차장 검색 등등
  • 테스트용도의 공용 LLM 런타임 서버 구현
  • 사용자 응답과 그에 따른 응답을 지도에 표시하는 프론트엔드를 AI 툴을 사용하여 구현
  • 스프링 액츄에이터와 그라파나 연동하여 유사도, 응답시간, 토큰 사용량 등 모니터링
  • 팀원별로 구현한 LangGraph를 단계별로 테스트하는 테스트 코드 작성
  • MCP 서버 분리

 성과(기대효과)

  • 현대 기업들은 LLM(대형 언어 모델) 및 생성형 AI에 대한 실제 활용 능력을 요구
  • 다양한 Open API를 실제 프로젝트에 적용하며 API 연동 및 활용 능력 강화 가능

프로젝트 수행 내역

  • 역할: 어드바이저/툴 설계 및 구현, 임베딩 파이프라인 구축, 인증 및 토큰 관리, 데이터 수집 및 최적화 전반
  • 개발 언어 및 프레임워크: Java, Spring Boot, Spring AI
  • 벡터 검색 및 위치 필터링: PostgreSQL + pgvector, Redis GEO
  • 챗 모델 및 임베딩: OpenAI GPT-4o (chat), nomic-embed-text (embedding)
  • 외부 API: Google Places, Kakao Map, Tmap
  • 모니터링 및 분석: Spring Actuator, Prometheus, Grafana

2.1 핵심 해결 과제

  • Spring AI 문서 부정확 → deprecated된 CallAroundAdvisor 대신 CallAdvisor로 직접 구현, 테스트 기반 구조 구성
  • pgvector 거리 필터 미지원 → Redis GEO를 통해 반경 내 후보 필터링 후 유사도 검색 수행
  • 유사도 정확도 문제 → 임베딩 문장 품질 개선 및 사용자 질문 패턴 반영한 맞춤형 임베딩 설계
  • 리뷰 없는 장소가 추천되는 문제 → “리뷰 없음” 문구 제외 및 리뷰 요약 정제 로직 적용

2.2 시스템 설계 및 성능 개선

  • 사용자 질문 분석 → 어드바이저 체인으로 intent/location/mood 추출
  • 적절한 툴 자동 선택 및 실행 (유사도 검색, 주차장 탐색, 경로 안내 등)
  • 대화 저장 구조 설계: ChatMemory를 확장하여 사용자별 대화 흐름 및 토큰 사용량 저장
  • ngrok으로 임베딩 서버 외부 공유, GPU 서버 실험 → 네트워크 병목 문제 분석
  • Grafana로 프롬프트 길이에 따른 토큰 비용 및 지연 시간 분석 → 프롬프트 최적화 유도

2.3 협업 및 설계 방식

  • 매주 지식 공유 문서화 및 코드 리뷰를 통한 공통 로직 개선

About

Spring AI를 활용한 데이트코스 안내 어플리케이션

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages