Weaviate

RAG & Memory 💻 Go ⚖️ BSD-3-Clause 🟢 Actively maintained
16.8k stars

Weaviate is an open-source, cloud-native vector database that stores objects and vectors, enabling semantic search at scale. It combines vector similarity search with keyword filtering, RAG, and reranking in a single query interface. It is for developers building AI applications like RAG systems, semantic search, and recommendation engines.

✨ Key features

  • Fast semantic search over billions of vectors in milliseconds.
  • Flexible vectorization with integrated models or custom embeddings.
  • Advanced hybrid search combining semantic and keyword (BM25) search.
  • Integrated RAG and reranking capabilities for generative search.
  • Production-ready with horizontal scaling, multi-tenancy, and RBAC.
  • Cost-efficient operations with built-in vector compression and TTL.

🎯 Use cases

  • Build retrieval-augmented generation (RAG) systems.
  • Implement semantic and image search applications.
  • Create recommendation engines and chatbots.
  • Perform content classification and summarization.
  • Power agentic AI systems with decision trees.

📦 Installation

🧰 Requirements: Requires Docker for local setup, or a cloud deployment (Weaviate Cloud, AWS, GCP). Python client requires Python 3.x. Optional API keys for integrated model providers.

Docker Compose

Create a docker-compose.yml file:

services:
  weaviate:
    image: cr.weaviate.io/semitechnologies/weaviate:1.36.0
    ports:
      - "8080:8080"
      - "50051:50051"
    environment:
      ENABLE_MODULES: text2vec-model2vec
      MODEL2VEC_INFERENCE_API: http://text2vec-model2vec:8080

  text2vec-model2vec:
    image: cr.weaviate.io/semitechnologies/model2vec-inference:minishlab-potion-base-32M

Start Weaviate and the embedding service:

docker compose up -d

Install the Python client:

pip install -U weaviate-client

🚀 Usage

import weaviate
from weaviate.classes.config import Configure, DataType, Property

client = weaviate.connect_to_local()

client.collections.create(
    name="Article",
    properties=[Property(name="content", data_type=DataType.TEXT)],
    vector_config=Configure.Vectors.text2vec_model2vec(),
)

articles = client.collections.get("Article")
articles.data.insert_many([
    {"content": "Vector databases enable semantic search"},
    {"content": "Machine learning models generate embeddings"},
    {"content": "Weaviate supports hybrid search capabilities"},
])

results = articles.query.near_text(query="Search objects by meaning", limit=1)
print(results.objects[0])

client.close()

❓ FAQ

How do I install Weaviate?

You can install Weaviate using Docker Compose, Kubernetes, or use Weaviate Cloud. See the installation docs for details.

Can I use my own vector embeddings?

Yes, you can import pre-computed vector embeddings by configuring the vectorizer as self-provided.

What client libraries are available?

Official clients exist for Python, JavaScript/TypeScript, Java, Go, and C#/.NET, plus community-maintained libraries.

Does Weaviate support hybrid search?

Yes, Weaviate supports hybrid search combining semantic and keyword (BM25) search in a single API call.

📊 Repository

Stars★ 16,785
Forks🍴 1,390
Open issues🐛 710
Last commit🕒 Sep 4, 2026
Created📅 Mar 2016
Language💻 Go
License⚖️ BSD-3-Clause

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.