블로그 목록

핀터레스트 수백억 검색비용 30% 줄인 양자화 매장 적용법

2026년 9월 15일
핀터레스트 수백억 검색비용 30% 줄인 양자화 매장 적용법

핀터레스트 수백억 검색비용 30% 줄인 양자화 매장 적용법

• 핵심: 수백억 개 상품 신호를 임베딩으로 찾아내는 구조를 양자화로 가볍게 만든 사례
• 비용: 인덱스 메모리 50퍼센트 이상 절감과 서빙 비용 20퍼센트에서 30퍼센트 절감
• 적용: 매장 온라인몰 상품 검색에 상품명 정리 10건부터 시작

사장님, 손님이 찾는 상품이 온라인몰 검색에서 빠진다면 어떨까요. 분명히 매장에 있는 상품인데 검색어 한 글자 차이로 화면에 나오지 않습니다. 핀터레스트는 이런 문제를 임베딩 검색으로 풀어온 대표적인 사례입니다. 자체 검색 플랫폼 Manas를 개선해 수백억 개에 이르는 임베딩 처리 비용을 낮추고 의미를 더 세밀하게 반영했습니다 [1].

검색비용이 불어나는 진짜 이유 3가지

첫째, 상품 수가 아니라 의미의 수가 늘어납니다. 사진 한 장에는 색상과 모양과 쓰임새가 함께 담깁니다. 텍스트 검색만으로는 러그와 카페트와 매트를 같은 말로 알아듣기 어렵습니다. 임베딩은 이런 관계를 숫자로 바꿔서 비슷한 상품을 찾아줍니다. 핀터레스트에서는 홈 피드와 검색과 관련 핀과 광고와 알림까지 주요 화면 전체가 이 방식에 기대고 있습니다 [1].

둘째, 빠른 검색 구조가 메모리를 많이 씁니다. 대표 방식인 HNSW는 전체 색인을 메모리에 올려야 속도가 납니다. 상품이 늘면 비용이 그대로 따라 늘어납니다. 핀터레스트는 80개가 넘는 클러스터에 수십억 개 임베딩을 나눠서 serving하고 있습니다. 규모가 커질수록 메모리 한 장을 아끼는 일이 곧 이익이 됩니다 [1].

셋째, 예전 검색 틀은 한 상품을 하나의 숫자로만 봅니다. 두 개의 탑을 세워서 점 하나로 비교하는 방식입니다. 풍부한 상품 설명을 담기에는 틀이 좁습니다. Manas는 처음부터 자사 검색을 위해 만든 분산 검색 체계입니다. 1000억 개가 넘는 핀을 대상으로 지연을 절반으로 줄이고 처리량을 30퍼센트 늘린 경험이 있습니다 [2].

핵심 변화 3가지를 표로 정리하면

핀터레스트 팀은 세 갈래로 Manas 임베딩 검색을 고도화했습니다. 압축과 디스크 활용과 다중 임베딩 지원입니다. 그중 매장 사장님이 바로 감을 잡을 부분은 압축입니다. 벡터를 작은 정수로 바꾸는 양자화를 주요 화면에 적용해 인덱스 메모리를 50퍼센트 이상 줄이고 serving 비용을 20퍼센트에서 30퍼센트 아꼈습니다 [1].

구분 이전 방식 2026년 변화 우리 가게 영향
검색 단위 글자 일치 중심 의미 숫자 변환 오타와 유의어에 강함
비용 구조 메모리 증가에 비례 압축으로 절반 이하 저가 요금제로 시작 가능
정확도 관리 설정 후 방치 실험으로 방식 선택 반품과 문의 감소 기대

핵심 변화 3가지를 표로 정리하면 — 매장 작업대에서 사장의 손이 태블릿 비교표를 확인하는 장면, 이전·변화 대비

표에서 보듯 핵심은 무조건 압축이 아니라 용도별 선택입니다. 1억 개 GraphSage 자료로 HNSW와 IVF를 함께 시험한 결과가 공개되어 있습니다. 스칼라 양자화는 HNSW 색인을 59퍼센트, IVF 색인을 75퍼센트 줄이면서 재현율 90퍼센트를 넘게 유지했습니다. 프로덕트 양자화는 HNSW 74퍼센트, IVF 93퍼센트까지 줄였지만 재현율은 70퍼센트에서 80퍼센트 구간에 머물렀습니다 [1].

양자화가 메모리를 절반으로 줄이는 원리

오랫동안 16비트나 32비트 실수로 임베딩을 serving하는 일이 관행이었습니다. 규모가 커지면 정밀도는 사치가 됩니다. 양자화는 고차원 실수 벡터를 작은 정수 표현으로 바꾸는 방법입니다. 같은 상품을 더 적은 바이트로 기억하는 셈입니다. 핀터레스트는 스칼라 양자화와 프로덕트 양자화 두 가지를 중심에 두었습니다. 스칼라는 차원마다 균등하게 나누고, 프로덕트는 부분 공간을 묶어서 가까운 중심 번호로 바꿉니다 [1].

스칼라 양자화는 정확도를 지키는 선택

실험 결과는 분명합니다. 압축률은 프로덕트가 높고 정확도 유지는 스칼라가 낫습니다. 핀터레스트는 오프라인 시험에 이어 실제 서비스 실험을 돌려서 용도마다 다른 방식을 골랐습니다. 사용자 반응 지표에 영향을 주지 않는 선에서 스칼라와 프로덕트를 주요 화면에 나눠 적용했습니다. 그 결과 전체 메모리 할당을 크게 줄이고 serving 비용 20퍼센트에서 30퍼센트 절감을 만들었습니다 [1].

8비트나 4비트로 바꾸면 기억 공간은 줄지만 계산이 과제가 됩니다. 보통은 거리 계산 전에 푸는 과정이 병목이 됩니다. 이를 풀기 위해 크기 조정만으로 양자화하는 선형 스케일 방식을 도입했습니다. 푸는 과정을 없애고 CPU가 한 번에 여러 8비트 정수 연산을 하도록 했습니다. 이 최적화로 조회당 계산 자원을 10퍼센트에서 15퍼센트 줄였습니다 [1]. 작은 가게 관점에서는 같은 검색 품질로 서버비를 낮추는 지름길입니다.

디스크 기반 검색 SPANN은 왜 빠른지

메모리에 다 올리지 않고 디스크를 쓰는 방법도 검증했습니다. DiskANN과 SPANN을 1억 개 검색용 말뭉치로 비교했습니다. SPANN이 Manas 쓰임새에 더 맞았습니다. 디스크에 두는 임베딩 저장소에 프로덕트 양자화를 걸고 중심값은 원래 정밀도로 두는 조정이 주효했습니다. 원 논문과 살짝 다른 이 조정으로 SPANN과 양자화 조합은 일반 SPANN보다 4.5배 빨라졌습니다. DiskANN과 비교하면 초당 조회수는 3배가 넘고 지연은 3분의 1이며 재현율 하락은 5퍼센트 이내였습니다 [1].

실제 추천 쓰임새 50억 개 규모 시험에서는 HNSW 대비 생산 조회 CPU 시간을 40퍼센트 이상 아꼈고 재현율 하락은 5퍼센트 미만으로 묶었습니다. 중심 색인은 메모리에 두고 긴 목록은 디스크에 두는 구조입니다. 계층 균등 군집으로 목록 길이를 고르게 맞춰서 느린 요청을 줄였습니다. 중심 색인 탐색에는 HNSW를 썼습니다. 실시간 반영이 강점인 Manas와 잘 맞는 선택입니다. 실시간 HNSW를 위한 잠금 없는 그래프 갱신과 온라인 재현율 측정은 별도 연재에서 다룬 기반 기술입니다 [3].

매장 온라인몰에 주는 시사점 3가지

첫째, 상품명을 손님 말로 고치는 일이 양자화보다 먼저입니다. 임베딩이 좋아도 상품명에 유의어가 없으면 매칭이 흔들립니다. 예를 들어 무염버터와 가염버터와 발효버터를 이름과 태그에 구분해서 적습니다. 색상과 용량과 보관법을 같은 자리에 같은 순서로 적습니다. 검색은 이런 규칙에서 정확도가 올라갑니다.

둘째, 사진과 글을 함께 쓰는 구조가 유리합니다. 핀터레스트는 이미지와 텍스트를 함께 배우는 방향으로 진화하고 있습니다. 매장도 상품 사진 3장과 짧은 설명 2줄을 세트로 올리면 됩니다. 사진에는 규격과 사용 장면을 담고 글에는 재료와 대상과 주의점을 담습니다. 상품 문의 응대를 정리할 때는 소상공인 AI 챗봇 도입 가이드를 함께 참고하면 질문 분류에 도움이 됩니다.

셋째, 비싼 검색부터 도입할 필요가 없습니다. 오픈소스 벡터 검색인 Faiss 문서에는 스칼라 양자화와 프로덕트 양자화와 IVF 조합이 단계별로 정리되어 있습니다. 작은 규모에서는 8비트 스칼라부터 시험하고 목록이 커지면 역파일과 조합하는 순서가 안전합니다 [4]. 원문엔 없지만, 우리 가게 적용을 위해 추가로 확인했습니다 [4][5]. 정부 온라인 판로 지원은 소상공인시장진흥공단 안내에서 조건과 일정을 확인할 수 있습니다 [5].

우리 가게에 어떻게 적용할까

마포에서 소규모 온라인 식품몰을 운영하는 사장님을 예로 들겠습니다 (가상 예시). 취급 품목은 120개이며 주력 상품은 당일조리 나물반찬 12종입니다. 고민은 검색 유입이 상품명에 묶여 있다는 점입니다. 손님은 나물반찬과 데친나물과 곤드레를 섞어서 검색합니다. 기존 온라인몰 검색은 글자 일치라서 곤드레를 쳐야 곤드레 상품이 나옵니다. 나물을 치면 일부만 나옵니다.

이 사장님이 한 일은 세 가지입니다. 먼저 12종 상품명을 규칙에 맞춰 다시 썼습니다. 앞에 조리방식을 두고 뒤에 주재료를 두었습니다. 예시로 당일조리 곤드레나물 200그램과 같은 형태입니다. 태그에는 데친나물과 곤드레밥과 도시락반찬을 넣었습니다. 사진은 조리 전후와 포장 상태를 3장으로 통일했습니다. 설명 2줄에는 당일조리와 보관 2일과 데우기 방법을 적었습니다.

다음으로 카테고리를 손님 기준으로 묶었습니다. 기존에는 공급자 기준인 채소반찬과 나물류가 섞여 있었습니다. 바꾼 뒤에는 도시락용과 제사상용과 저염식으로 나눴습니다. 검색창에 도시락을 치면 관련 12종이 함께 나오도록 했습니다. 마지막으로 일주일 동안 검색어 30개를 기록했습니다. 들어온 말과 산 말의 차이를 표로 정리했습니다. 산 말에는 담은 이유를 한 줄로 적었습니다. 이 기록을 바탕으로 태그 10건을 고쳤습니다.

비용은 크게 들지 않았습니다. 온라인몰 기본 검색과 무료 벡터 검색 시험판으로 충분했습니다. 주문이 늘어난 뒤에 유료 요금제를 검토하기로 했습니다. 성과는 문의 감소로 확인했습니다. 이 상품이 저염인가요라는 질문이 주 5건에서 주 1건으로 줄었습니다. 반품 사유 중 오배송이 아닌 맛과 상상 다름도 줄었습니다. 검색 개선이 곧 상담 시간 절감으로 이어진 셈입니다. 다음 단계로는 계절 상품 20종에 같은 규칙을 적용할 예정입니다.

우리 가게에 어떻게 적용할까 — 매장에서 사장과 직원이 새 업무 방식을 적용·협업하는 장면, vector database, cost

결론과 오늘 할 일 1개

정리하면 세 가지입니다. 수백억 규모에서도 압축과 실험으로 비용을 낮출 수 있습니다 [1]. 정확도를 지키려면 스칼라부터 고르고 규모가 커지면 디스크형과 조합하면 됩니다 [1][3]. 매장은 상품명 규칙과 사진과 글 세트부터 시작하면 됩니다 [4][5].

오늘 할 일 1개는 이것입니다. 잘 팔리는 상품 10건을 골라서 이름과 태그와 설명 2줄을 같은 규칙으로 다시 쓰세요. 일주일 뒤 검색어와 문의 건수를 비교하세요. 숫자가 좋아지면 20건으로 넓히면 됩니다.

함께 보면 좋은 글

참고 자료

PalanK 서비스와 함께 더 빠르게

소상공인 AI 자동화 전체 보기PalanK AI 솔루션

PalanK AI 솔루션 보기