GraphANN™ documentation

A storage-efficient vector database. No stored embeddings. Graph traversal plus on-demand recompute over compressed text. Single binary, multi-tenant, optional 3-node high-availability cluster.

Pick a path

Quickstart

Self-contained binary, embedded ONNX model. No Ollama, no API key, no external dependencies required for local use.

# 1. Run the server with the embedded ONNX model
./graphann serve --embedding-server local_onnx --port 38888

# 2. Create a tenant
curl -s -X POST http://localhost:38888/v1/tenants \
-H 'content-type: application/json' \
-d '{"name":"acme"}'
# → {"id":"t_...","name":"acme",...}

# 3. Create an index
curl -s -X POST http://localhost:38888/v1/tenants/t_.../indexes \
-H 'content-type: application/json' \
-d '{"name":"product-docs"}'
# → {"id":"i_...","tenant_id":"t_...",...}

# 4. Ingest a document
curl -s -X POST http://localhost:38888/v1/tenants/t_.../indexes/i_.../documents \
-H 'content-type: application/json' \
-d '{"documents":[{"id":"doc-1","text":"Vector search recomputes on demand."}]}'

# 5. Search
curl -s -X POST http://localhost:38888/v1/tenants/t_.../indexes/i_.../search \
-H 'content-type: application/json' \
-d '{"query":"how does search work","k":5}'

Core concepts

  • Tenant: isolation boundary. Every request runs in a tenant context. IDs are prefixed t_.
  • Index: a searchable collection inside a tenant. IDs are prefixed i_.
  • Document: input unit. Text plus optional metadata and external ID. Chunked automatically on ingest.
  • External ID: your stable ID for a document. Survives re-embedding and migration. Use it for upserts and deletes.
  • Live index: concurrent buffer for new ingests. Searchable immediately; merged into the base index on compact.

What's not in these docs (yet)