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 命令

如何使用

  1. 克隆仓库,并按照课程网站提供的引导式 Rust 笔记本逐步操作。
  2. 每天提供起始代码、单元测试和参考实现,可供对比。
  3. 构建索引后,可通过 DataFusion 执行 SQL 语句直接调用向量搜索,从而将向量相似性与传统关系查询结合使用。
  4. 运行共享基准测试,观察不同索引类型在召回率、构建时间、查询延迟方面的差异。

目标受众

  • 熟悉 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 驱动应用中日益重要的基础构建模块。

相关

  • 项目
  • 项目
  • 项目
  • 项目