Skip to content
← Tools / Skills
ToolWeaviate B.V./10 trustVerified
Weaviate logo

Weaviate

Open-source vector database with built-in vectorization, hybrid search, and in-database RAG.

Visit official site →

About

Weaviate is an open-source vector database (Go) that stores objects alongside their vectors, so semantic search, keyword (BM25) search, and generative retrieval can live in one system. Its client modules can vectorize text automatically at import time using providers like OpenAI, Cohere, or Hugging Face, removing the need for a separate embedding pipeline.

It supports multi-tenancy, horizontal sharding, metadata filtering, and a GraphQL/REST API, with managed Weaviate Cloud as an alternative to self-hosting. The core database is BSD-3-Clause; enterprise-only code in the repo's wl/ directory is proprietary.

What it can do

  • • Vector + BM25F hybrid search in a single query, with tunable alpha fusion
  • • Built-in vectorization modules (OpenAI, Cohere, Hugging Face, Weaviate Embeddings) at import time
  • • Generative search: in-database RAG via provider integrations (e.g. Anthropic, OpenAI)
  • • Multi-tenancy with per-tenant shards, plus horizontal sharding and replication
  • • GraphQL and REST APIs with official Python, TypeScript, Go, and Java clients
  • • Metadata filtering with an AllowList that constrains vector, keyword, and hybrid execution
  • • Backup/restore, RBAC, and API-key/OIDC auth for production deployments
  • • Query Agent service for natural-language querying (Weaviate Cloud)

Setup

  1. Install Docker and start Weaviate locally with the official compose setup: docker compose up -d
  2. Install the v4 Python client: pip install -U "weaviate-client"
  3. Connect: import weaviate then client = weaviate.connect_to_local() (pass headers={"X-OpenAI-Api-Key": key} if you use OpenAI vectorization)
  4. Create a collection with automatic vectorization: client.collections.create(name="Article", vector_config=Configure.Vectors.text2vec_openai())
  5. Insert objects with collection.data.insert({...}), then search with collection.query.near_text(query="...", limit=5) or run in-database RAG with collection.generate.near_text(...)

Prerequisites

Docker 20.10+; ~2 CPU / 4 GB RAM minimum for local dev; Python 3.9+ for the client; an API key from an embedding/LLM provider if you use Weaviate's built-in vectorization or generative search (bring-your-own-vectors mode needs none).

Use cases

embeddingssearchdatamemory

Works with

Generic APIAny agent (.md)

Trust score — 9/10

/10 trustVerified

Scored 9/10 (verified tier, metrics-v1). Evidence: 16,876 GitHub stars (log-scaled vs catalog peers); blended with ~9,835,248 monthly package downloads; last push 0d ago; 100 releases/12mo; 804 open issues. Manual review: telemetry on by default (opt-out verified); cloud-only Query Agent; perf claims third-party. License: BSD-3-Clause.

★ 16,876 GitHub stars

How the trust score is built

Full methodology →
Adoption · stars/downloads, log-scaled vs peers
8.6/10
Maintenance · recency, releases, issue load
8.2/10
Openness · license + docs
10.0/10
Manual review · sanity read + red-flag check
9.0/10
  • · 16,876 GitHub stars (log-scaled vs catalog peers)
  • · blended with ~9,835,248 monthly package downloads
  • · last push 0d ago; 100 releases/12mo; 804 open issues
  • · manual review: telemetry on by default (opt-out verified); cloud-only Query Agent; perf claims third-party

Sources

Every fact above was checked against these sources. Where a claim comes from the provider and couldn't be independently verified, the text says so.