Quarkus와 pgvector를 이용한 오디오 검색 엔진 구축하기
요약
Quarkus와 Python, pgvector를 활용하여 외부 API 없이 오프라인으로 작동하는 의미론적 오디오 검색 엔진 프로토타입을 구축했습니다. CLAP 신경망을 통해 오디오 특징을 추출하고 PostgreSQL에 저장하여 유사한 트랙을 검색하는 아키텍처를 제안합니다.
핵심 포인트
- Java Quarkus와 Python을 혼합한 효율적인 파이프라인 구축
- CLAP 모델을 이용한 512차원 오디오 임베딩 추출
- pgvector를 활용한 코사인 유사도 기반 벡터 검색 구현
- Docker Compose를 통한 간편한 로컬 환경 구성
여러분, 안녕하세요!
이것은 저의 첫 번째 게시물이며, 이 프로젝트를 여러분 모두와 공유하며 시작하고 싶었습니다.
저는 최근에 음악을 위한 셀프 호스팅(self-hosted) 검색 도구를 구축할 수 있을지 확인하기 위해 오디오 임베딩 (audio embeddings)을 실험해 왔습니다.
그 결과 (현재로서는) Agnostic Intelligence Layer라고 불리는 프로토타입이 탄생했습니다. 이것은 외부 클라우드 API에 의존하지 않고 완전히 오프라인으로 실행되도록 설계된 의미론적 오디오 검색 엔진 (semantic audio search engine)입니다.
스택 및 아키텍처 (The Stack & Architecture)
빠르고 효율적인 것을 원했기에, Java와 Python을 혼합하기로 결정했습니다:
- Java Quarkus: 핵심 엔진 파이프라인 (pipeline)과 컨테이너 효율성을 처리합니다.
- Python: CLAP 신경망 (neural networks)을 사용하여 오디오 특징을 512차원 벡터 (vectors)로 추출함으로써 실제 AI의 무거운 작업을 관리합니다.
- PostgreSQL + pgvector: 벡터를 저장하고 코사인 유사도 (cosine similarity)를 사용하여 음향적으로 유사한 트랙을 찾습니다.
- MinIO: 빠르고 쉬운 로컬 스토리지를 처리합니다.
모든 것은 단일 _docker-compose_를 통해 시작되므로, 외부 서비스를 구성하는 데 시간을 낭비할 필요가 없습니다.
이것을 공유하는 이유
아직 프로토타입이지만, 핵심 파이프라인은 잘 작동하며 저는 계속해서 작업을 이어 나갈 예정입니다. 코드에 대한 피드백을 받고 이 아키텍처가 다른 개발자들에게도 타당하게 느껴지는지 확인하기 위해 조기에 공유하고 싶었습니다.
코드를 확인하거나 로컬에서 테스트하고 싶다면 저장소에 빠른 시작 가이드가 있습니다:
👉 https://github.com/BothBasilisk/agnostic-audio-engine.git
여러분의 생각이나 비판, 또는 파이프라인을 개선할 방법에 대한 어떤 팁이라도 자유롭게 남겨주세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기