QuixiAI VectorGraph
A minimal, batteries-included PostgreSQL stack that pairs Apache AGE (graph) with pgvector. Spin it up with Docker, hit a couple of Python helpers, and you have graph + vector storage in one place.
60-second start
- Install:
pip install vectorgraph(orpipx install vectorgraph) - Bring up services:
vectorgraph up(Docker compose stack with graph/vector) - Run tests:
pytest -q(optional if you cloned) - Tinker in Python (see below) or run
vectorgraph demothenpython demo.py.
Install options:
pip install vectorgraph(orpipx install vectorgraphfor a global CLI).- CLI commands:
vectorgraph up,vectorgraph down,vectorgraph logs -f,vectorgraph ps,vectorgraph demo.- Prefer async API for apps; sync helpers are available at
vectorgraph.sync(see async/sync combined demo).
- Prefer async API for apps; sync helpers are available at
Python quickstart
import asyncio
from vectorgraph import create_db, delete_db, graph_create_entity, vector_add, vector_nearest_neighbors
async def main():
db_id = await create_db()
try:
await graph_create_entity(db_id, "n1", "Hello", "Graph+Vector")
await vector_add(db_id, "n1", [0.1]*768, {"label": "hello"})
neighbors = await vector_nearest_neighbors(db_id, [0.1]*768, k=3)
print(neighbors)
finally:
await delete_db(db_id)
asyncio.run(main())
Combined example: python examples/demo.py (async flow) and python examples/demo.py --sync (sync via vectorgraph.sync).
Use as a library
Install into your app (no CLI needed if you already run Postgres/AGE/pgvector):
pip install vectorgraph
Minimal usage (sync helpers):
from vectorgraph import sync as vg
db_id = vg.create_db()
vg.vector_add(db_id, "id1", [0.1]*768, {"tag": "demo"})
print(vg.vector_nearest_neighbors(db_id, [0.1]*768, k=1))
vg.delete_db(db_id)
Env vars respected by the helpers: POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB, POSTGRES_HOST, POSTGRES_PORT. If you’re pointing at an existing stack, set these to your running Postgres/AGE instance. Defaults match the bundled compose stack: POSTGRES_USER=vg_user, POSTGRES_PASSWORD=vg_password, POSTGRES_DB=vg_db, POSTGRES_HOST=127.0.0.1, POSTGRES_PORT=5432.
Clone the repo (optional)
If you want the source and tests locally:
- Clone:
git clone https://github.com/QuixiAI/vectorgraph.git && cd vectorgraph - Install editable:
pip install -e . - Run tests:
pytest -q
Files
db.py— public async API for graph + vector helpers (AGE + pgvector).graph.py/vector.py— thin wrappers if you prefer to import per-domain.schema.sql— enables extensions and embeds the TEI-friendlyget_embeddingfunction.Dockerfile— Postgres 16 image with AGE, pgvector, pgsql-http.docker-compose.yml— Postgres + HuggingFace TEI (embedding service).tests/— async end-to-end tests for graph and vector paths.pyproject.toml— package metadata (dependencies via pip/uv/pdm) and CLI entrypoint.vectorgraph/stack/— packageddocker-compose.yml,Dockerfile,schema.sqlused by the CLI.vectorgraph-mcp.py— MCP stdio server exposing VectorGraph tools (for Claude Desktop or other MCP clients).
Environment
Defaults are baked into the stack; you normally don’t need to touch .env. If a .env exists in your project root, vectorgraph up will copy it into its cache and use it; otherwise it uses the packaged defaults. The embedding container sits on a private Docker network (no host port) and is reachable from Postgres at http://embeddings:80.
Typical flow
vectorgraph up- run Python code using the helpers (or
vectorgraph demothenpython demo.py) pytest -qto sanity checkvectorgraph downwhen done
MCP server (Claude Desktop)
- Ensure the stack is running (
vectorgraph up) and your env vars point at it if customized. - Start the server:
vectorgraph mcp(stdio MCP server; alternativelypython -m vectorgraph.mcp_server). - Configure Claude Desktop to point at this server; exposed tools include
create_db,delete_db, graph helpers (graph_create_entity,graph_get_entity,graph_create_relationship,graph_neighbors,graph_similarity), vector helpers (vector_add,vector_get,vector_nearest_neighbors,vector_query_by_id,vector_batch_add,vector_batch_delete), andbatchfor chaining mixed calls in one request. - Example Claude Desktop snippet:
- Create an MCP server entry named
vectorgraphwith commandvectorgraph mcp(no args). Leave env empty unless you need customPOSTGRES_*. - Ask Claude: “Use vectorgraph to create a DB, add an entity id='n1' name='Hello', add a vector [0.1]*768 with metadata {'tag':'demo'}, then fetch nearest neighbors for [0.1]*768.” Claude will call
create_db,graph_create_entity,vector_add, andvector_nearest_neighborsthrough the MCP tools.
- Create an MCP server entry named
- Example JSON config snippet for Claude Desktop:
{ "mcpServers": { "vectorgraph": { "command": "vectorgraph", "args": ["mcp"], "env": { "POSTGRES_HOST": "127.0.0.1", "POSTGRES_PORT": "5432", "POSTGRES_USER": "vg_user", "POSTGRES_PASSWORD": "vg_password", "POSTGRES_DB": "vg_db" } } } }
Notes
- Vectors are fixed at 768-dim; the TEI model (
unsloth/embeddinggemma-300m) matches that. - Each call to
create_db()makes a dedicated AGE graph + vector table keyed by UUID to keep tests isolated.
Metadata
Release files for vectorgraph 0.1.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vectorgraph-0.1.11.tar.gz | 23.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vectorgraph-0.1.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.7 kB
Release files / vectorgraph-0.1.11.tar.gz
| Download URL | vectorgraph-0.1.11.tar.gz |
|---|---|
| Size | 23.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf955fcdeb366f7f01fdb2bda7e0ffa65d4e87655f9aa19e7b365a79d8f7957b
|
|
BLAKE2b-256 checksum How to use checksums |
2cf59cbac02713d18eb5d9575a3b15a5bec3d6fc7c48b8873c3df45193d0214e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|
Release files / vectorgraph-0.1.11-py3-none-any.whl
| Download URL | vectorgraph-0.1.11-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5714ad699c1885bfd52c36cbc42481d8faf91bf7c4e4b7a4c6a77add97f08f47
|
|
BLAKE2b-256 checksum How to use checksums |
bf16a477c393ed4a2681bbbbae295486a2431bd880ccb94bb3be95db06ff4db3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.9
|