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目錄中的示例代碼。