VQLite
1.0.0
中文点这里
VQLite是基于Google扫描的轻巧且简单的矢量相似性搜索引擎。 VQLITE为构建向量相似性搜索服务提供了简单的RESTFUL API。
我们创建此项目的原因是,目前没有解决我们需求的解决方案(如下所述),我们认为市场上可用的矢量搜索引擎太重了,通常需要带有多个复制品的Kubernetes群集。这可能是浪费资源和许多项目的负担。
常用的矢量相似性搜索引擎(例如Milvus,Qdrant,Vearch)由向量维度管理并在向量上操作。相反,VQLite根据文档作为维度处理数据。我们发现,在许多情况下,文档和向量之间没有一对一的关系,而是一种一对多的关系,文档可能具有多个向量。仅基于向量管理数据可能会很麻烦,并且在存储多个元数据副本时会导致资源浪费。因此,VQLite的设计允许每个文档多个向量,同时还允许存储元数据,而无需依赖其他存储解决方案,例如MySQL或Redis。
如果您真的想使用此项目,了解VQLite的结构和设计,或者您想对VQLite进行一些修改以根据自己的需求进行调整,则强烈建议您阅读Design.md。
当然,最重要的方面是检索速度。因此,我们使用Google的扫描在我们系统的核心中,因为目前可能是最快的公共向量相似性搜索方法。实际上,我们只是封装了扫描
以下图像来自扫描。

我们使用1300万个向量在AWS机器上构建数据库。以下是测试结果。
| 机器 | QPS | 参数(nprobe,重新排序,topk) |
|---|---|---|
| C5.9xlarge | 7600 | 256,256,30 |
| c7g.8xlarge | 2900 | 256,256,30 |
| R5.8xlarge | 6900 | 256,256,30 |
我们提供两种使用它的方法,从源代码编译并使用Docker。我们建议使用Docker。
git clone --recurse-submodules https://github.com/VQLite/VQLite.git
# git submodule update --remote --merge
cd vqindex
bash build.sh vqindex_api
cp bazel-bin/scann/scann_ops/cc/libvqlite_api.so /usr/local/lib/
cp bazel-bin//external/local_config_tf/libtensorflow_framework. * /usr/local/lib/
cd ..
go build cmd/vqlite.go首先,将vqlite.yaml复制到您的计算机上并进行适当的修改。
docker pull ghcr.io/vqlite/vqlite:latest
docker run --restart=always -d --name vqlite -p 8880:8880
-v $( pwd ) /vqlite.yaml:/app/vqlite.yaml
-v $( pwd ) /vqlite_data:/app/vqlite_data
vqlite您可以检查python_sdk目录中的示例代码。