TL;DR
- Weaviate is an open-source vector database written in Go by Weaviate B.V. (Netherlands), first released in 2019.
- Distributed under a mix of BSD-3-Clause for the core and a Business Source License (BSL) for some enterprise components; broadly considered open-source for self-hosted production use.
- Distinct for a GraphQL-style query API, native modules for embedding and reranking, and an opinionated approach to schema (collections with typed properties).
- Managed offering is Weaviate Cloud Services; the company offers a free sandbox tier and paid managed clusters in AWS, GCP, and Azure regions.
Architecture#
Weaviate runs as a standalone Go server with HTTP and gRPC endpoints. The default index type is HNSW per shard; flat indices are available for small collections. Storage uses a custom LSM tree built on top of RocksDB-like primitives, with separate stores for the object data and the vector index.
A Weaviate deployment is conceptually a list of 'collections' (formerly called 'classes'), each with typed properties and an optional vectoriser. Sharding is per-collection, with consistent hashing across nodes and raft-based metadata replication. As of 2026 the recommended production topology is at least three nodes for HA.
Modules#
Weaviate's most distinctive feature is its module system. Modules plug embedding models (text2vec-openai, text2vec-cohere, text2vec-transformers for self-hosted), rerankers (reranker-cohere, reranker-transformers), generators (generative-openai, generative-cohere, generative-anthropic), and other integrations directly into the database. The 'generative-*' modules execute RAG end-to-end inside Weaviate — query the collection, retrieve, and pass results to the configured LLM in one round-trip.
Generative modules make demos fast and production debugging slow. Most mature deployments retrieve through Weaviate but call the LLM separately so the retrieval and generation layers can be observed independently.
Hybrid Search#
Weaviate ships hybrid search as a first-class query parameter: `hybrid: { query: '...', alpha: 0.5 }` runs BM25 and dense in parallel and fuses with weighted score combination (alpha = 0 is pure BM25, alpha = 1 is pure dense). Reciprocal rank fusion is also available. BM25 is implemented natively with per-shard inverted indices.
import weaviate
from weaviate.classes.query import HybridFusion
client = weaviate.connect_to_local()
docs = client.collections.get("Documents")
result = docs.query.hybrid(
query="how does HNSW handle deletions",
alpha=0.5,
fusion_type=HybridFusion.RELATIVE_SCORE,
limit=10,
)
for obj in result.objects:
print(obj.properties["title"], obj.metadata.score)When to Pick Weaviate#
Weaviate is the most opinionated of the open-source vector databases. Pick it when you want a database that takes a position on schema, on hybrid search, and on direct LLM integration; when you are comfortable with Go-based ops; and when the module ecosystem aligns with your model providers. Pick something else when you want a lower-level, faster, less prescriptive vector engine — Qdrant tends to win those comparisons.
References
- Weaviate Documentation · Weaviate
- weaviate/weaviate on GitHub · GitHub