新贡献者指南

这是为Lance项目新贡献者准备的指南。 即使您之前没有Python、Rust和开源经验,仍然可以通过帮助我们改进文档、示例等做出重要贡献。 对于有经验的开发者,您可以处理的问题范围广泛,从热身练习到Python和Rust中的严峻挑战都有涉及。

如有任何疑问,请加入我们的Discord获取实时支持。我们始终欢迎您的反馈!

快速入门

  1. 加入我们的Discord并打个招呼

  2. 设置您的开发环境

  3. 选择一个要处理的问题。查看https://github.com/lancedb/lance/contribute获取适合新手的入门任务。

  4. 玩得开心!

开发环境

目前Lance采用Rust实现并附带Python封装。因此您需要确保两者都已正确安装配置。

  1. 安装Rust: https://www.rust-lang.org/tools/install

  2. 安装 Python 3.9+:https://www.python.org/downloads/

  3. 安装protocol buffers: https://grpc.io/docs/protoc-installation/ (请确保版本为3.20或更高)

  4. Install commit hooks:
    1. 安装pre-commit工具: https://pre-commit.com/#install

    2. 在代码库的根目录下运行 pre-commit install

示例工作流程

  1. 克隆代码仓库

  2. 选择 Github issue

  3. 为该问题创建一个分支

  4. 进行您的修改

  5. 从你的fork创建一个拉取请求到lancedb/lance

  6. 获取反馈并进行迭代

  7. 合并!

  8. 返回第2步

Python 开发

参见: https://github.com/lancedb/lance/blob/main/python/DEVELOPMENT.md

Rust开发

要格式化和检查Rust代码:

cargo fmt --all
cargo clippy --all-features --tests --benches

仓库结构

核心格式

核心格式在rust目录下通过Rust实现。配置好Rust环境后,您可以通过以下命令构建核心格式:

cargo build

这将构建调试版本。如需构建优化后的发布版本:

cargo build -r

运行Rust单元测试:

cargo test

如果您正在开发与性能相关的功能,可以通过以下方式运行基准测试:

cargo bench

Python绑定

Lance的Python绑定采用了Rust(pyo3)与Python混合实现的方式。 直接支持Python绑定的Rust代码位于python/src目录下,而纯Python代码则存放在python/python目录中。

要构建Python绑定,首先需要安装依赖项:

pip install maturin

进行开发安装:

cd python
maturin develop

要使用本地Python绑定,建议使用venv或conda环境。

文档

文档使用Sphinx构建,存放在docs目录下。 要构建文档,首先需要安装依赖项:

pip install -r docs/requirements.txt

然后构建文档:

cd docs
make html

The docs will be built under docs/build/html.

示例笔记本

示例笔记本位于examples目录下。这些是独立的笔记本,您应该能够下载并运行它们。

基准测试

我们的Rust基准测试每天会运行多次,历史记录可以在此这里查看。

另外,我们还有针对sift1m数据集的向量索引基准测试,以及针对tpch的基准测试。 这些测试位于benchmarks目录下。

行为准则

详情请参阅 https://www.python.org/psf/conduct/https://www.rust-lang.org/policies/code-of-conduct