Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

代码目录结构

VSAG 项目代码处于快速迭代中,目录组织并不完美,这里仅对当前目录的功能划分做简要介绍。

项目结构

  • .circleci/:CircleCI 配置文件;
  • .github/:GitHub 配置文件,包括 CI、Issue 模版、代码 Owner 等;
  • cmake/:CMake 工具函数,例如检测编译平台的指令集支持;
  • docker/:构建 CI 的 Dockerfile 以及用于二进制分发的 Dockerfile;
  • docs/:设计文档、用户文档(含本站点源)和博客文章;
  • examples/:C++、Python、TypeScript 的示例代码;
  • extern/:第三方库,以 CMake 的方式从 GitHub 下载和集成;
  • include/:公开头文件,对外稳定 API 都位于此目录;
  • mockimpl/:接口的 Mock 实现,可以用于简单的接口测试;
  • python/:pyvsag 打包和安装工具;
  • python_bindings/:基于 pybind11 的 Python 绑定实现;
  • typescript/:Node.js / TypeScript 绑定及对应 npm 包源代码;
  • scripts/:一些有用的工具脚本,例如安装依赖、计算代码覆盖率等;
  • src/:核心源代码和单元测试(*_test.cpp);
  • tests/:功能测试用例;
  • tools/:相关工具,包括索引性能测试和兼容性检查工具。

核心源代码

  • src/*.cpp:各种公共功能代码实现,包括内存分配器、线程池等;
  • src/algorithm/:索引算法目录;
  • src/data_cell/:data cell 是数据的逻辑单元,索引算法依赖于 data cell;
  • src/impl/:一些功能和算子的实现,例如图结构增强、k-means 聚类等;
  • src/index/:索引层实现,和 algorithm 目录相互配合;
  • src/io/:数据 IO 实现,包括基于内存访问数据和基于磁盘访问数据的方法;
  • src/quantization/:量化方法,当前支持 SQ4/SQ8、PQ、RaBitQ 等量化方式;
  • src/simd/:指令集加速模块,根据运行平台自动选择最快的距离计算方法;
  • src/utils/:工具函数目录。