Deploy Infinity
This document provides guidance on deploying the Infinity database. In general, you can deploy Infinity in the following three ways:
- Import Infinity as a Python module: To run Infinity locally as a Python module.
- Deploy Infinity using Docker: To run Infinity with the client and server as separate processes.
- Deploy Infinity using binary: To run Infinity with the client and server as separate processes.
Import Infinity as a Python module
This approach allows you to call Infinity as a Python module. To deploy Infinity with the client and server as separate processes, follow the instructions in Deploy Infinity using Docker or Deploy Infinity using binary.
Prerequisites
- CPU: x86_64 with AVX2 support.
- Python: Python 3.10+.
- OS:
- Linux with glibc 2.17+.
- Windows 10+ with WSL/WSL2.
Install Infinity as a module
pip install infinity-embedded-sdk==0.5.0.dev1
Create an Infinity object
import infinity_embedded
infinity_obj = infinity_embedded.connect("absolute/path/to/save/to")
For detailed information about the capabilities and usage of Infinity's Python API, see the Python API Reference.
Deploy Infinity using Docker
To deploy Infinity with the client and server as separate processes, consider either Deploy Infinity using Docker or Deploy Infinity using binary. Be aware of the respective system requirements for each approach.
Prerequisites
- CPU: x86_64 with AVX2 support.
- OS:
- Linux with glibc 2.17+.
- Windows 10+ with WSL/WSL2.
- MacOS
Install Infinity server
This section provides instructions on deploying the Infinity using Docker on Linux x86_64, MacOS x86_64, and Windows WSL/WSL2.
- Linux x86_64 & MacOS x86_64
- Windows
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
docker pull infiniflow/infinity:nightly
docker run -d --name infinity -v /var/infinity/:/var/infinity --ulimit nofile=500000:500000 --network=host infiniflow/infinity:nightly -f /var/infinity/infinity_conf.toml
If you are on Windows 10+, you must enable WSL or WSL2 to deploy Infinity using Docker. Suppose you've installed Ubuntu in WSL2:
-
Follow this to enable systemd inside WSL2.
-
Install docker-ce according to the instructions here.
-
If you have installed Docker Desktop version 4.29+ for Windows: Settings > Features in development, then select Enable host networking.
-
Pull the Docker image and start Infinity:
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
docker pull infiniflow/infinity:nightly
docker run -d --name infinity -v /var/infinity/:/var/infinity --ulimit nofile=500000:500000 --network=host
infiniflow/infinity:nightly
Install Infinity client
pip install infinity-sdk==0.5.0.dev1
Connect to Infinity Server and run a dense vector search
import infinity
infinity_obj = infinity.connect(infinity.NetworkAddress("<SERVER_IP_ADDRESS>", 23817))
db_object = infinity_object.get_database("default_db")
table_object = db_object.create_table("my_table", {"num": {"type": "integer"}, "body": {"type": "varchar"}, "vec": {"type": "vector, 4, float"}})
table_object.insert([{"num": 1, "body": "unnecessary and harmful", "vec": [1.0, 1.2, 0.8, 0.9]}])
table_object.insert([{"num": 2, "body": "Office for Harmful Blooms", "vec": [4.0, 4.2, 4.3, 4.5]}])
res = table_object.output(["*"])
.match_dense("vec", [3.0, 2.8, 2.7, 3.1], "float", "ip", 2)
.to_pl()
print(res)
For detailed information about the capabilities and usage of Infinity's Python API, see the Python API Reference.
Deploy Infinity using binary
To deploy Infinity with the client and server as separate processes, consider either Deploy Infinity using binary or Deploy Infinity using Docker. Be aware of the respective system requirements for each approach.
Prerequisites
- CPU: x86_64 with AVX2 support.
- OS:
- Linux with glibc 2.17+.
- Windows 10+ with WSL/WSL2.
Install Infinity server
This section provides instructions on deploying Infinity using binary package on Linux x86_64. You can download the binary package (deb, rpm, or tgz) for your Linux system from https://github.com/infiniflow/infinity/releases. The prebuilt packages are compatible with Linux distributions based on glibc 2.17 or later, for example, RHEL 7, Debian 8, Ubuntu 14.04.
- Fedora/RHEL/CentOS/OpenSUSE
- Ubuntu/Debian
Fedora/RHEL/CentOS/OpenSUSE
sudo rpm -i infinity-0.5.0.dev1-x86_64.rpm
sudo systemctl start infinity
sudo dpkg -i infinity-0.5.0.dev1-x86_64.deb
sudo systemctl start infinity
Install Infinity client
pip install infinity-sdk==0.5.0.dev1
Connect to Infinity Server and run a dense vector search
import infinity
infinity_object = infinity.connect(infinity.NetworkAddress("<SERVER_IP_ADDRESS>", 23817))
db_object = infinity_object.get_database("default_db")
table_object = db_object.create_table("my_table", {"num": {"type": "integer"}, "body": {"type": "varchar"}, "vec": {"type": "vector, 4, float"}})
table_object.insert([{"num": 1, "body": "unnecessary and harmful", "vec": [1.0, 1.2, 0.8, 0.9]}])
table_object.insert([{"num": 2, "body": "Office for Harmful Blooms", "vec": [4.0, 4.2, 4.3, 4.5]}])
res = table_object.output(["*"])
.match_dense("vec", [3.0, 2.8, 2.7, 3.1], "float", "ip", 2)
.to_pl()
print(res)
For detailed information about the capabilities and usage of Infinity's Python API, see the Python API Reference.