Skip to main content
Vector fields route through the same workspace storage planner as SQL and search fields.

1. Why Vector Routing Exists

Vector providers differ in local versus remote lifecycle, filtering, exhaustive scans, index ownership, and supported distance metrics. HeavenBase keeps the Entity and query surface stable while Registry records, handlers, and explain() expose what one concrete route can actually do.

2. Choose a Vector Backend

HeavenBase includes vector backend implementations for:
  • inmem for dependency-light local tests
  • pgvector for vectors beside PostgreSQL rows
  • lance for local LanceDB storage
  • milvus and milvus-lite for server and embedded Milvus deployments
  • chroma and pinecone for Chroma and hosted Pinecone indexes
  • qdrant for local-path or server deployments
  • weaviate for workspace-scoped remote collections
  • redisearch for Redis Stack vector and hybrid search
These ten usable routes include the multi-role inmem Backend plus nine concrete vector and hybrid providers. They do not promise identical native filtering or exhaustive enumeration; inspect the generated capability matrix and the concrete query plan.

3. Start from a Preset

The built-in debug workspace preset uses SQLite for rows plus in-memory vector and search backends:
The local-lts preset is shaped for a local stack with Postgres rows, LanceDB vectors, and Elasticsearch search:
The Lance path uses the workspace id in its configured URI, so each workspace gets an isolated vector directory.

4. Use Explicit Backend Configuration

You can pass backend config directly when a test or application should avoid global presets:
Then define vector fields in normal entities:
Queries use the same JSON and Python DSL surfaces:

5. Inspect the Concrete Route

Milvus vector fields must be required because its rows cannot represent a missing FLOAT_VECTOR. Pinecone cannot prove exhaustive unbounded folds. Local Qdrant, Milvus Lite, and TinyDB-style paths remain explicitly workspace-owned; detached=True does not make their data temporary.

Summary

  • Choose from ten usable built-in vector routes, including local, embedded, and hosted providers.
  • Keep placement on named workspace Backends and query through the same typed surface.
  • Treat explain() as execution evidence instead of inferring behavior from a provider label.

Further Exploration

Related resources: