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 驱动应用中日益重要的基础构建模块。
相关
- 项目
- 项目
- 项目
- 项目