GN⁺: Turbopuffer - 오브젝트 스토리지에서 빠른 검색 기술
(turbopuffer.com)- 2022년 말, Readwise의 인프라를 확장하면서 기사 추천 및 벡터 임베딩을 사용한 의미 검색 기능을 추가하려 했음
- 관계형 데이터베이스 비용이 월 $5k였으나, 벡터 검색 비용은 월 $20k 이상이어서, 높은 비용 때문에 기능 구현을 포기
- 기존 검색 엔진은 비싸고 운영이 어려움 : 객체 저장소, NVMe SSD, AI 및 벡터 기술의 발전으로 새로운 검색 엔진이 필요함
- 기존 벡터 데이터베이스는 인메모리 저장소를 사용해 비용이 높음
- 객체 저장소(S3, GCS)와 SSD 캐싱을 활용해 비용을 크게 절감할 수 있음
- 예: 인메모리 저장소는 $2+/GB, 객체 저장소는 $0.02/GB
turbopuffer의 설계
- 현재에 맞는 검색 엔진을 개발
- 객체 저장소와 스마트 캐싱을 활용해 비용 효율성과 성능을 모두 달성
- 수십억 개의 벡터와 수백만 개의 테넌트를 처리할 수 있음
-
객체 저장소 기반 검색 엔진
- 기존 검색 엔진은 관계형 데이터베이스의 복제 디스크 아키텍처를 사용
- 검색 엔진은 높은 쓰기 처리량과 느슨한 쓰기 지연 시간을 요구
- 객체 저장소와 SSD/메모리 캐싱을 통해 비용을 절감하면서 성능을 유지
-
객체 저장소 Native 데이터베이스 구현
- 객체 저장소를 기본으로 하는 데이터베이스를 구축
- 높은 신뢰성과 무제한 확장성을 제공
- 멀티 테넌시와 샤딩을 통해 높은 가용성을 유지
-
고객 사례
- Cursor: AI 코드 편집기, 수십억 개의 벡터를 관리하며 비용을 10배 절감
- Suno: 라디오 기능
- Dot: 메모리 기능
- Shapes: 메모리 기능
GN⁺의 정리
- turbopuffer는 객체 저장소와 스마트 캐싱을 활용해 검색 엔진의 비용 효율성과 성능을 크게 개선함
- 기존 검색 엔진의 높은 비용과 운영의 어려움을 해결하고자 함
- AI 및 벡터 기술의 발전에 맞춰 새로운 검색 엔진을 설계함
- Cursor와 같은 초기 고객 사례를 통해 비용 절감과 성능 향상을 입증함
- 유사한 기능을 가진 다른 프로젝트로는 ElasticSearch와 Vector DBs가 있음
Hacker News 의견
-
Simon과 함께 일해본 경험이 있으며, 그는 자신의 분야에 능통함
- Shopify에서 검색 관련 작업을 함께 했으며, 이상적인 검색 스택에 대해 많은 대화를 나눔
- 클라우드에서 검색 API를 통해 랭킹을 표현하고, 데이터프레임 수학을 사용하여 다양한 속성으로 부스트하는 이상적인 시스템을 원함
-
Turbopuffer가 Polars 데이터프레임처럼 동작하여 검색 API에서 랭킹을 표현할 수 있기를 바람
- 데이터프레임 수학을 사용하여 첫 번째 패스를 수행하고, 재랭킹 모델을 실행하는 기능을 원함
-
Fixie.ai의 웹사이트 디자인도 매우 마음에 듦
- Fixie.ai는 Turbopuffer의 고객 중 하나임
-
Hetzner에서 RAM 비용이 $200/TB/월로, 다른 곳보다 18배 저렴함
- 복잡성을 줄이면 목표를 더 빨리 달성할 수 있음
-
2022년 이전부터 pg_vector가 존재했으며, 인메모리 스토리지가 필요하지 않음
- 1억 개 이상의 문서에 대해 벡터 검색을 수행할 수 있음
-
Lucene을 사용하여 SSD 캐시 노드를 객체 스토리지 앞에 두는 접근 방식을 구축하는 것이 가능한지 궁금함
- Elasticsearch의 대규모 배포를 목격한 경험이 있으며, 모든 것을 S3에 넣을 수 있다면 놀라울 것임
-
Quickwit의 소스 비공개 버전처럼 들림
-
S3에 대용량 읽기 전용 데이터베이스를 저장하고 직접 조회할 수 있는 일반적인 솔루션이 있는지 궁금함
- Duckdb가 parquet 파일을 http로 열고 쿼리할 수 있지만, 많은 작은 요청을 트리거함
- 수백만 개의 객체를 관리하기 위해 단일 파일과 캐시 가능한 인덱스를 원함
-
ClickHouse의 읽기 지연 시간은 100ms 이하, 쓰기 지연 시간은 1초 이하임
- ClickHouse는 로깅, 실시간 분석, RAG에도 적합함
-
벡터 데이터베이스에 대해 잘 알지 못하지만, RAG 및 기타 AI 관련 작업에 주로 사용된다고 생각함
- 더 깊이 탐구할 필요가 있음
-
객체 스토리지 우선 접근 방식이 클라우드에 자연스럽게 맞는다고 생각함