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(ナビゲーブル・スモール・ワールド)インデックス |
| 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駆動アプリケーションに不可欠なベクトルデータベースの基本構成要素を学ぶための本格的で教育的なオープンソースプロジェクトです。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト