encapsulation of microsoft/SPTAG python API into rpc service.
Install SPTAG in docker, and put SPTAG_rpc_server.py in /path/to/Release
Then Run:
python3 SPTAG_rpc_server.py
After running rpc server, you can use Ctrl+p plus Ctrl+q to put the docker container in background.
import numpy as np
from SPTAG_rpc_demo_client import SPTAG_RpcDemoClient, DataBean
if __name__ == "__main__":
client = SPTAG_RpcDemoClient("127.0.0.1", "8888", timeout=None)
beans = []
for i in range(5):
vec = i * np.ones((10,), dtype=np.float32)
beans.append(DataBean(_id=f"s{i}", vec=vec))
index_name = "test"
print("Adding Data:", client.add_data(index_name, beans))
print("*"*100)
print("Test Search")
q = DataBean(_id=f"s{0}", vec=0 * np.ones((10,), dtype=np.float32))
print(client.search(index_name, [q], 3))
print("*"*100)
print("Test Delete:", client.delete_data(index_name, [q]))
print("*"*100)
print("Test Search After Deletion")
print(client.search(index_name, [q], 3))
print("*"*100)
print("Test Delete Index:", client.delete_index(index_name))
python3 export_test_index_input.py
docker cp test_index_input.txt 25042d741f07:/app/Release/
docker attach 25042d741f07
./indexbuilder -d 10 -v Float -i ./test_index_input.txt -o data/test_index -a BKT -t 2 Index.DistCalcMethod=L2
python3 SPTAG_rpc_search_server.py -i test_index
import numpy as np
from SPTAG_rpc_search_client import SPTAG_RpcSearchClient, DataBean
if __name__ == "__main__":
client = SPTAG_RpcSearchClient("127.0.0.1", "8888", timeout=None)
print("Test Search")
q = DataBean(_id=f"s{0}", vec=0 * np.ones((10,), dtype=np.float32))
print(client.search([q], 3))