新贡献者指南¶
这是为Lance项目新贡献者准备的指南。 即使您之前没有Python、Rust和开源经验,仍然可以通过帮助我们改进文档、示例等做出重要贡献。 对于有经验的开发者,您可以处理的问题范围广泛,从热身练习到Python和Rust中的严峻挑战都有涉及。
如有任何疑问,请加入我们的Discord获取实时支持。我们始终欢迎您的反馈!
快速入门¶
加入我们的Discord并打个招呼
设置您的开发环境
选择一个要处理的问题。查看https://github.com/lancedb/lance/contribute获取适合新手的入门任务。
玩得开心!
开发环境¶
目前Lance采用Rust实现并附带Python封装。因此您需要确保两者都已正确安装配置。
安装 Python 3.9+:https://www.python.org/downloads/
安装protocol buffers: https://grpc.io/docs/protoc-installation/ (请确保版本为3.20或更高)
- Install commit hooks:
安装pre-commit工具: https://pre-commit.com/#install
在代码库的根目录下运行 pre-commit install
示例工作流程¶
克隆代码仓库
选择 Github issue
为该问题创建一个分支
进行您的修改
从你的fork创建一个拉取请求到lancedb/lance
获取反馈并进行迭代
合并!
返回第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。