스포티파이 엔지니어가 만든 오픈소스 추천 라이브러리 ANNOY
스포티파이의 엔지니어 한 명이 음악 추천 속도 문제를 해결하기 위해 ANNOY라는 오픈소스 라이브러리를 만들었습니다. 수백만 곡 중에서 비슷한 곡을 빠르게 찾아주는 도구입니다. 지금도 많은 서비스에서 비슷한 문제를 풀 때 활용됩니다.
음악 스트리밍 서비스는 사용자가 좋아할 만한 곡을 실시간으로 추천해야 합니다. 수천만 개의 곡 데이터를 매번 전부 비교하면 너무 느려서 실용적이지 않습니다. 스포티파이 엔지니어는 이 문제를 풀기 위해 ANNOY(Approximate Nearest Neighbors Oh Yeah)라는 라이브러리를 직접 만들어 오픈소스로 공개했습니다.
ANNOY는 '근사 최근접 이웃 탐색' 방식을 사용합니다. 완벽하게 가장 비슷한 항목을 찾는 대신, 아주 빠르게 충분히 비슷한 항목을 찾아줍니다. 덕분에 대규모 데이터에서도 추천을 빠르게 처리할 수 있으며, 음악 외에도 상품 추천, 이미지 검색 등 다양한 분야에서 쓰입니다.
핵심 포인트
- ANNOY는 스포티파이가 음악 추천 속도를 높이기 위해 만든 오픈소스 라이브러리입니다.
- 수백만 개의 데이터 중 비슷한 항목을 빠르게 찾는 '근사 최근접 이웃 탐색' 기술을 사용합니다.
- 완벽한 결과 대신 충분히 정확하고 훨씬 빠른 결과를 제공합니다.
- 음악 추천 외에도 상품 추천, 이미지 검색 등 다양한 곳에 응용할 수 있습니다.
- GitHub에 오픈소스로 공개되어 누구나 무료로 사용할 수 있습니다.
용어 한 줄 설명
- 엔지니어
- 컴퓨터 프로그램을 설계하고 직접 만드는 기술 전문가를 말합니다.
- 오픈소스
- 소스 코드를 공개해 누구나 보고 사용할 수 있게 한 방식입니다.
- 스트리밍
- 여기서는 말이 끝나기 전에도 텍스트가 실시간으로 계속 나타나는 방식을 뜻합니다.
- PR
- Pull Request의 줄임말로, 코드 변경 사항을 프로젝트에 반영해달라는 요청입니다.
- 근사 최근접 이웃 탐색
- 엄청나게 많은 데이터 중에서 '완벽히 가장 비슷한 것' 대신 '충분히 비슷한 것'을 아주 빠르게 찾는 방법입니다.
- Git
- 코드 변경 기록을 저장하고 되돌리거나 공유하는 도구입니다.