김재현Hammer Turtle
프로젝트 목록

Metaforge

AI 기반 사내 게임 리소스 통합 관리 및 하이브리드 벡터 검색 시스템 구축 (PoC)

배경 및 목표

① 게임 미디어 자산 관리의 한계: 사내 여러 부서와 다양한 저장소(로컬 파일시스템, 구글 드라이브, GitLab 등)에 게임 미디어 자산(이미지, 오디오 등)이 파편화되어 흩어져 있어 관리 및 재사용성이 극도로 저하됨.

→ 멀티 어댑터 동기화, 미디어 프리뷰 변환, 멀티모달 기반의 실시간 캡셔닝 및 임베딩, OpenSearch 기반의 하이브리드(BM25 + kNN) 검색 엔진을 연동한 엔터프라이즈급 에셋 관리 플랫폼 PoC 성공을 목표로 진행.

역할

시스템 구조 설계 참여 및 주도적 백엔드 개발

주요 업무 및 성과

① File Hash 기반 1:N 중복 제거 데이터 모델링

  • 중복 처리 비용의 원천 차단: 파일 해시를 통해 여러 프로젝트에 동일한 게임 에셋 파일이 중복 등록되더라도 AI 연산 비용(캡셔닝, 임베딩)은 단 1회만 발생하도록 아키텍처 설계.
  • 관계형 데이터 맵 구조 구축: 프로젝트·데이터소스별 참조 정보를 담는 Asset 테이블에는 파일 해시를 담고, 실제 파일 정보는 해시값을 기본키로 삼는 AssetMetadata 테이블로 1:N 분할하여 NoSQL(DynamoDB/OpenSearch)과 RDB(PostgreSQL/Prisma) 간의 데이터 무결성 확보.

② 증분 동기화(Incremental Sync) 및 멀티 데이터소스 어댑터 파이프라인 개발

  • 폴링 및 커서 기반 증분 동기화: 로컬 파일시스템 스캔 방식뿐만 아니라, Google Drive 및 GitLab API의 변경점 추적 방식 구현.
  • 네트워크 가용성 최적화: 초기 동기화 이후에는 Revision 플래그를 활용하여 변경분만 타깃팅해 동기화 처리 속도 향상 및 대역폭 낭비 방지.

③ Valkey 분산 락 기반의 AI 및 미디어 후처리 스케줄링 워커 구축

  • 동시성 및 데이터 경합 제어: 오래 걸리는 AI 작업의 중복 연산을 방지하기 위해, 인메모리 스토어 Valkey를 활용한 TTL 기반 분산 락 시스템 도입.
  • 멀티미디어 리사이징 및 스트리밍 변환: 대용량 원본 파일 조회 오버헤드를 막기 위해 sharp(이미지용 WebP 80% 압축 및 640x640 리사이징)와 ffmpeg(오디오용 64kbps 모노 MP3 변환)를 이식해 AWS S3 기반의 경량 프리뷰 파이프라인 구성.
  • Gemini Embedding 기반 지능형 데이터 추출: 멀티모달 프롬프트 제어를 통해 한국어 캡션 및 검색용 태그(Keyword)를 자동 레이블링하는 상태 머신 파이프라인(PENDING_CAPTIONING → PENDING_EMBEDDING → SUCCEEDED) 연동.

④ OpenSearch 기반 kNN 벡터 및 텍스트 하이브리드(Hybrid) 검색 엔진 고도화

  • 의미론적(Semantic) 검색 융합: 사용자의 자연어 쿼리(“파란 하늘”)를 임베딩을 통해 벡터 데이터로 변환 후 OpenSearch에 주입.
  • BM25 가중치 융합 알고리즘 구현: 텍스트 매칭 기반의 BM25 스코어와 고차원 공간 내 거리를 연산하는 kNN 벡터 검색 결과를 서버 단에서 결합하여, 단순 키워드 누락 상황에서도 높은 검색 정합성 보장.

결과

① 자원 탐색 시간 극적 단축: 텍스트가 명시되지 않은 이미지나 오디오 자산도 자동 캡셔닝·임베딩 파이프라인을 거쳐 자연어 검색이 가능해짐에 따라 사내 리소스 재사용 편의성 향상.

② 실무진 대상 가치 검증 성공: 구축된 PoC 프로토타입을 사내 게임 개발 실무진(기획자, 아트 디렉터, 디자이너 등)에게 배포 후 만족도 설문 조사를 진행하여 높은 긍정적 피드백 수렴.

회고

이번 프로젝트는 처음으로 AI 기반 서비스를 설계하고 구현해 본 프로젝트였다. 완제품 AI API를 연동하는 수준을 넘어, 비정형 데이터를 실시간 수집하고 가공하여 지능형 검색 엔진까지 이어지는 자동화 데이터 파이프라인을 주도적으로 구축하며 기술적 스펙트럼을 넓혔고, 기술적 실험에 그치지 않고 현업 실무진의 설문 피드백으로 프로덕트의 가치를 증명해 낸 점이 뜻깊었다.

이후 팀이 옮겨지며 프로토타입 단계에서 개발을 멈추게 되었지만, 도메인에 구애받지 않고 새로운 기술적 패러다임을 마주하더라도 두려움 없이 판을 짜고 솔루션을 도출해 낼 수 있다는 자신감을 얻었다.

어려웠던 점

사전 기획이나 요구사항 정의서 없이 백지상태에서 시작해야 했던 점이 가장 어려웠다.

→ MVP를 목표로 우선 돌아가는 시스템을 만들고 현업의 피드백을 받으며 고쳐 나가는 접근법을 택했다.