PyVGX - Vector Graph Index Python Extensions
Project description
Distributed engine for plugin-based graph and vector search
Why VGX?
VGX + 1 is WHY ...and you are the +1. Originally short for Vector Graph indeX, VGX is a high-performance, distributed engine for building custom search and recommendation services using Python plugins. It combines real-time graph traversal, vector similarity, and expressive filtering into a unified platform, backed by a native C-core for speed and scalability. Developers can implement service logic using the PyVGX C-extensions, expose it as HTTP endpoints, and automatically scale across a sharded, replicated back-end. With built-in support for ANN search, dynamic graphs, expression-based filtering, and pluggable infrastructure, VGX makes it easy to develop powerful, low-latency systems for semantic search, recommendation, autocomplete, and more.
Getting Started
You will need Python 3.12 or higher. It may be a good idea to use a virtual environment to keep things isolated:
MacOS / Linux venv setup
python3 -m venv vgxenv
source vgxenv/bin/activate
Windows venv setup
python3 -m venv vgxenv
call vgxenv\Scripts\activate.bat
Install PyVGX
pip install pyvgx
Hello VGX
Now let's define and expose a service using VGX:
Plugin Code
# hello.py
from pyvgx import *
system.Initialize("hello")
# This function will be exposed as an HTTP endpoint
def Hello(request: PluginRequest, message: str = "nothing"):
response = PluginResponse()
response.Append(f"Hi, you said {message}")
return response
system.AddPlugin(Hello)
system.StartHTTP(9000) # main port=9000, admin port=9001
print("Visit 'http://127.0.0.1:9001' for admin" )
# Until SIGINT
system.RunServer()
Start Service
# Run the service
python hello.py
Send Request
# Send a request
curl http://127.0.0.1:9000/vgx/plugin/Hello?message=hello!
VGX Demo System
If you want to see a more interesting demo system in action, type the following in a terminal:
# Start a multi-node VGX system
vgxdemosystem multi
This will start many server instances (using ~16GB RAM) and open a system dashboard in your web browser:
Allow startup to finish and then try to send a query to the dispatcher running on port 9990:
# Run a test query, returns JSON search result
curl -s http://127.0.0.1:9990/vgx/plugin/search?name=7357 | jq
You can see how the demo is implemented here: vgxdemoservice.py and vgxdemoplugin.py
To stop the system type this in a terminal:
vgxdemoservice stop
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyvgx-3.6.0a1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32ab46b66bbef0ee279cf0da81c40633478f60f57f7131729eed3b1892f4b1ad
|
|
| MD5 |
8cb887e7d2cd602cbc722b3844791997
|
|
| BLAKE2b-256 |
0bb3666ad38f22d4459c0eeba89bd649946bb47b262303573f228b53d26100ad
|
File details
Details for the file pyvgx-3.6.0a1-cp313-cp313-manylinux_2_38_x86_64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp313-cp313-manylinux_2_38_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.38+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f434313bea66e6c9d568feddcfdfb5bb0d5f9482ede7df12a9605e4b7ebc9f9c
|
|
| MD5 |
befe010888952349bd6628d955f8d3c0
|
|
| BLAKE2b-256 |
ccc38c57cac4af70e67b29dab3704272c69812861cc300cdc878f0f45cb73fcd
|
File details
Details for the file pyvgx-3.6.0a1-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0796e1d6bb82fbf682d10abe59f0abe2b0d7412b74ba6f8ba86ad45c3ee3aa56
|
|
| MD5 |
5cc846d9004b5acf482c47771967f7b4
|
|
| BLAKE2b-256 |
25aced9cbd1fcd9b521651eb967cf8f9fb3e7873e84ba967b92dae380d8191a3
|
File details
Details for the file pyvgx-3.6.0a1-cp313-cp313-macosx_14_0_arm64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp313-cp313-macosx_14_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bd35adc6495babf979aeca01779153ba7827f153a1f12dc80a91bf49ffd6d40
|
|
| MD5 |
92215c1a6cddc4b645572802a11b3577
|
|
| BLAKE2b-256 |
28b8fb535de5e26bf2897556be0ba073dc65cc059f276c8042c4fc1c29788ae0
|
File details
Details for the file pyvgx-3.6.0a1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 2.7 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5087b9d893826d75f43627ec0f9cd14f65146596503a317f4b2c90565c457505
|
|
| MD5 |
e447dce9ad94276157a230604f0a88e4
|
|
| BLAKE2b-256 |
0d03fa1a9cdc201a1957cde40f5f98b6662e1a067b435b121d72f441d09eb8b9
|
File details
Details for the file pyvgx-3.6.0a1-cp312-cp312-manylinux_2_38_x86_64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp312-cp312-manylinux_2_38_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.38+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47395c676d985fbc17881fece8c9164cc498cab53341826a33a732440b97fc9d
|
|
| MD5 |
93049cf3c8c718b45b2f4550dcb83bb5
|
|
| BLAKE2b-256 |
250f28af18194878f914fe01783e00e34893983116d2b2f500d5fd0bf02960fa
|
File details
Details for the file pyvgx-3.6.0a1-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 3.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f9450d976f7852bba60a1782a2c8504e9a02454fb6139f4dc7e2964b5eabeb5
|
|
| MD5 |
1b9626cd74ec57bfbc805c7839ea899b
|
|
| BLAKE2b-256 |
7092a1e5e2f84c0f23a42b894e1f76081321894e0dfb9ee4af22a7f8cd959087
|
File details
Details for the file pyvgx-3.6.0a1-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: pyvgx-3.6.0a1-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f837187ec6f849a7cdb64951864461ad4e089655f2cd4fde885837e8d9652ebb
|
|
| MD5 |
00aeaa585a59485ce5f512a6ad4aa9b4
|
|
| BLAKE2b-256 |
313efe88baa91ed191810fb897128143ae5acf2dfd14e2d43c4588bb99932a72
|