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
02Getting startedInstall, pick an embedding backend, ingest a tenant's first index, run a search.03API referenceEvery HTTP endpoint with method, path, body shape, and curl example.04Multi-tenancyTenant isolation, shared indexes, role-based access (admin / editor / viewer).05DeploymentSingle binary, Docker Compose, 3-node high-availability cluster.06Migration guideMove existing data from Pinecone, Weaviate, or Qdrant. Dual-run and cutover strategy included.
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.