skyzh/vector-db-from-scratch
Learn vector search with Rust and DataFusion; the C++/BusTub track is deprecated.
skyzh/vector-db-from-scratch – Rust로 벡터 데이터베이스를 처음부터 구축하기 (Rust)
무엇인가요
- 시스템 또는 데이터베이스 엔지니어를 대상으로 하는 오픈소스 실습 튜토리얼로, Rust로 작고 메모리 내 벡터 검색 엔진을 단계적으로 구축하는 과정을 안내합니다.
- 본 교육은 다일간 과정(및 부록 책) 형태로 제공되며, Arrow 기반 테이블, DataFusion 최적화 규칙, 여러 ANN 인덱스 구조(IVFFlat, NSW, HNSW, IVF-PQ)와 같은 데이터베이스 스타일 기능을 점진적으로 추가합니다.
왜 중요한가요
- 벡터 검색은 현대 AI 시스템의 핵심 구성 요소입니다 (예: 임베딩의 유사성 검색, 검색 기반 생성). 이 리포지토리는 이러한 알고리즘이 블랙박스 서비스가 아니라 데이터베이스의 일급 연산자로 어떻게 구현되는지를 보여줍니다.
- 직접 인덱스를 구현함으로써 정확 검색과 근사 검색 사이의 트레이드오프를 이해할 수 있으며, SIFT1M 데이터셋을 기반으로 한 명확한 벤치마크 테스트 세트(재현율, 구축 시간, 쿼리 지연)를 얻게 됩니다.
주요 학습 결과
| 일 | 추가된 기능 |
|---|---|
| 1 | Arrow 기반 메모리 내 테이블 + 안전한 DataFusion 최적화 규칙 |
| 2 | 정확한(브루트포스) 벡터 검색 |
| 3 | IVFFlat 인덱스 |
| 4 | NSW(Navigable Small World) 인덱스 |
| 5 | HNSW 인덱스 |
| 6 | 잔차 IVF-PQ 인덱스 |
| – | 인덱스 생성, 쿼리 계획 비교, 벤치마크 실행을 위한 SQL 명령어 |
사용 방법
- 리포지토리를 클론하고, 과정 사이트에서 링크된 가이드된 Rust 노트북을 따라 진행합니다.
- 매일의 시작 코드, 단위 테스트, 참조 구현체가 제공되며, 비교할 수 있습니다.
- 인덱스를 구축한 후 DataFusion를 통해 SQL 문을 실행하여 벡터 검색을 직접 호출할 수 있습니다. 이를 통해 벡터 유사성과 전통적인 관계형 쿼리를 결합할 수 있습니다.
- 공유된 벤치마크를 실행하여 다양한 인덱스 유형 간의 재현율, 구축 시간, 쿼리 지연의 차이를 확인할 수 있습니다.
대상 독자
- Rust에 익숙한 엔지니어 (벡터 검색이나 DataFusion 지식은 필요 없음).
- 임베딩 기반 검색이 데이터베이스에 어떻게 통합되는지에 관심 있는 누구나.
라이선스
- 코드: Apache License 2.0.
- 책/Markdown/그림: Creative Commons BY-NC-SA 4.0.
- 하위 모듈(
bustub-vectordb-starter/bustub-vectordb-solution)은 원래 라이선스를 유지합니다.
커뮤니티
- 학습자들이 연습 문제를 논의하고 결과를 공유하며 질문을 할 수 있는 Discord 서버가 제공됩니다.
결론
skyzh/vector-db-from-scratch는 Rust와 DataFusion 쿼리 엔진을 사용하여 AI 기반 애플리케이션에 점점 더 중요한 역할을 하는 벡터 데이터베이스의 핵심 구성 요소를 배우는 진정한 교육용 오픈소스 프로젝트입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트