本文档将帮助您从源代码构建Knowhere仓库并运行单元测试。如果遇到问题,请提交issue。
简介
Knowhere是用C++编写的。它是一个独立项目,作为Milvus的内部核心。
在Milvus中构建Knowhere
如果您只想在Milvus中使用Knowhere而不更改任何Knowhere源代码,我们建议您转到Milvus主项目并直接构建Milvus,Knowhere将在Milvus构建过程中隐式构建。
系统要求
所有Linux发行版都可用于Knowhere开发。然而,我们的大多数贡献者使用Ubuntu或CentOS系统,少部分贡献者使用Mac(包括x86_64和Apple Silicon)。如果您希望Knowhere能在其他发行版上构建和运行,欢迎提交issue并贡献!
以下是Knowhere已验证可以成功构建和运行的操作系统类型列表:
- Ubuntu 20.04 x86_64
- Ubuntu 20.04 Aarch64
- MacOS (x86_64)
- MacOS (Apple Silicon)
从源代码构建Knowhere
安装依赖
$ sudo apt install build-essential libopenblas-dev libaio-dev python3-dev python3-pip
$ pip3 install conan==1.61.0 --user
$ export PATH=$PATH:$HOME/.local/bin
从源代码构建
- Ubuntu 20.04
$ mkdir build && cd build
#添加conan远程仓库
$ conan remote add default-conan-local https://milvus01.jfrog.io/artifactory/api/conan/default-conan-local
#DEBUG CPU
$ conan install .. --build=missing -o with_ut=True -s compiler.libcxx=libstdc++11 -s build_type=Debug
#RELEASE CPU
$ conan install .. --build=missing -o with_ut=True -s compiler.libcxx=libstdc++11 -s build_type=Release
#DEBUG GPU
$ conan install .. --build=missing -o with_ut=True -o with_raft=True -s compiler.libcxx=libstdc++11 -s build_type=Debug
#RELEASE GPU
$ conan install .. --build=missing -o with_ut=True -o with_raft=True -s compiler.libcxx=libstdc++11 -s build_type=Release
#DISKANN支持
$ conan install .. --build=missing -o with_ut=True -o with_diskann=True -s compiler.libcxx=libstdc++11 -s build_type=Debug/Release
#使用conan构建
$ conan build ..
#详细输出
export VERBOSE=1
- MacOS
#RELEASE CPU
conan install .. --build=missing -o with_ut=True -s compiler.libcxx=libc++ -s build_type=Release
#DEBUG CPU
conan install .. --build=missing -o with_ut=True -s compiler.libcxx=libc++ -s build_type=Debug
#使用conan构建
conan build ..
运行单元测试
# 在build目录中
#Debug
$ ./Debug/tests/ut/knowhere_tests
#Release
$ ./Release/tests/ut/knowhere_tests
清理
$ git clean -fxd
生成PYTHON包(需要RELEASE构建)
安装依赖:
sudo apt install swig python3-dev
pip3 install bfloat16
构建knowhere后:
cd python
python3 setup.py bdist_wheel
安装knowhere wheel:
pip3 install dist/pyknowhere-0.0.0-cp38-cp38-linux_x86_64.whl
清理
cd python
rm -rf build
rm -rf dist
rm -rf knowhere.egg-info
rm knowhere/knowhere_wrap.cpp
rm knowhere/swigknowhere.py
贡献
预提交
在提交拉取请求之前,请确保在本地运行预提交检查,以确保代码已准备好进行审核。使用以下命令安装预提交检查:
pip3 install pre-commit
pre-commit install --hook-type pre-commit --hook-type pre-push
# 如果尚未安装clang-format和clang-tidy:
# linux
apt install clang-format clang-tidy
# mac
brew install llvm
ln -s "$(brew --prefix llvm)/bin/clang-format" "/usr/local/bin/clang-format"
ln -s "$(brew --prefix llvm)/bin/clang-tidy" "/usr/local/bin/clang-tidy"