Skip to main content

PyVGX - Vector Graph Index Python Extensions

Project description

VGX

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:

SystemDashboard

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyvgx-3.6.0a1-cp313-cp313-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.13Windows x86-64

pyvgx-3.6.0a1-cp313-cp313-manylinux_2_38_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.38+ x86-64

pyvgx-3.6.0a1-cp313-cp313-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

pyvgx-3.6.0a1-cp313-cp313-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pyvgx-3.6.0a1-cp312-cp312-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.12Windows x86-64

pyvgx-3.6.0a1-cp312-cp312-manylinux_2_38_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ x86-64

pyvgx-3.6.0a1-cp312-cp312-manylinux_2_34_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

pyvgx-3.6.0a1-cp312-cp312-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

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

Hashes for pyvgx-3.6.0a1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 32ab46b66bbef0ee279cf0da81c40633478f60f57f7131729eed3b1892f4b1ad
MD5 8cb887e7d2cd602cbc722b3844791997
BLAKE2b-256 0bb3666ad38f22d4459c0eeba89bd649946bb47b262303573f228b53d26100ad

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp313-cp313-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp313-cp313-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 f434313bea66e6c9d568feddcfdfb5bb0d5f9482ede7df12a9605e4b7ebc9f9c
MD5 befe010888952349bd6628d955f8d3c0
BLAKE2b-256 ccc38c57cac4af70e67b29dab3704272c69812861cc300cdc878f0f45cb73fcd

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0796e1d6bb82fbf682d10abe59f0abe2b0d7412b74ba6f8ba86ad45c3ee3aa56
MD5 5cc846d9004b5acf482c47771967f7b4
BLAKE2b-256 25aced9cbd1fcd9b521651eb967cf8f9fb3e7873e84ba967b92dae380d8191a3

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7bd35adc6495babf979aeca01779153ba7827f153a1f12dc80a91bf49ffd6d40
MD5 92215c1a6cddc4b645572802a11b3577
BLAKE2b-256 28b8fb535de5e26bf2897556be0ba073dc65cc059f276c8042c4fc1c29788ae0

See more details on using hashes here.

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

Hashes for pyvgx-3.6.0a1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5087b9d893826d75f43627ec0f9cd14f65146596503a317f4b2c90565c457505
MD5 e447dce9ad94276157a230604f0a88e4
BLAKE2b-256 0d03fa1a9cdc201a1957cde40f5f98b6662e1a067b435b121d72f441d09eb8b9

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp312-cp312-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp312-cp312-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 47395c676d985fbc17881fece8c9164cc498cab53341826a33a732440b97fc9d
MD5 93049cf3c8c718b45b2f4550dcb83bb5
BLAKE2b-256 250f28af18194878f914fe01783e00e34893983116d2b2f500d5fd0bf02960fa

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7f9450d976f7852bba60a1782a2c8504e9a02454fb6139f4dc7e2964b5eabeb5
MD5 1b9626cd74ec57bfbc805c7839ea899b
BLAKE2b-256 7092a1e5e2f84c0f23a42b894e1f76081321894e0dfb9ee4af22a7f8cd959087

See more details on using hashes here.

File details

Details for the file pyvgx-3.6.0a1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pyvgx-3.6.0a1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f837187ec6f849a7cdb64951864461ad4e089655f2cd4fde885837e8d9652ebb
MD5 00aeaa585a59485ce5f512a6ad4aa9b4
BLAKE2b-256 313efe88baa91ed191810fb897128143ae5acf2dfd14e2d43c4588bb99932a72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page