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 的先備知識)。
- 對 AI 系統底層實作感興趣的人——特別是嵌入式檢索如何整合至資料庫中。
授權
- 程式碼: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 驅動應用中日益重要的基礎建構模組。
相關
- 專案
- 專案
- 專案
- 專案