weaviate

module
v1.34.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2025 License: BSD-3-Clause

README ΒΆ

Weaviate Weaviate logo

GitHub Repo stars Go Reference Build Status Go Report Card Coverage Status Slack

Weaviate is an open-source, cloud-native vector database that stores both objects and vectors, enabling semantic search at scale. It combines vector similarity search with keyword filtering, retrieval-augmented generation (RAG), and reranking in a single query interface. Common use cases include RAG systems, semantic and image search, recommendation engines, chatbots, and content classification.

Weaviate supports two approaches to store vectors: automatic vectorization at import using integrated models (OpenAI, Cohere, HuggingFace, and others) or direct import of pre-computed vector embeddings. Production deployments benefit from built-in multi-tenancy, replication, RBAC authorization, and many other features.

To get started quickly, have a look at one of these tutorials:

Installation

Weaviate offers multiple installation and deployment options:

See the installation docs for more deployment options, such as AWS and GCP.

Getting started

You can easily start Weaviate and a local vector embedding model with Docker. Create a docker-compose.yml file:

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

  # A lightweight embedding model that will generate vectors from objects during import
  text2vec-model2vec:
    image: cr.weaviate.io/semitechnologies/model2vec-inference:minishlab-potion-base-32M

Start Weaviate and the embedding service with:

docker compose up -d

Install the Python client (or use another client library):

pip install -U weaviate-client

The following Python example shows how easy it is to populate a Weaviate database with data, create vector embeddings and perform semantic search:

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

# Connect to Weaviate
client = weaviate.connect_to_local()

# Create a collection
client.collections.create(
    name="Article",
    properties=[Property(name="content", data_type=DataType.TEXT)],
    vector_config=Configure.Vectors.text2vec_model2vec(),  # Use a vectorizer to generate embeddings during import
    # vector_config=Configure.Vectors.self_provided()  # If you want to import your own pre-generated embeddings
)

# Insert objects and generate embeddings
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"},
    ]
)

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

client.close()

This example uses the Model2Vec vectorizer, but you can choose any other embedding model provider or bring your own pre-generated vectors.

Client libraries and APIs

Weaviate provides client libraries for several programming languages:

There are also additional community-maintained libraries.

Weaviate exposes REST API, gRPC API, and GraphQL API to communicate with the database server.

Weaviate features

These features enable you to build AI-powered applications:

  • ⚑ Fast Search Performance: Perform complex semantic searches over billions of vectors in milliseconds. Weaviate's architecture is built in Go for speed and reliability, ensuring your AI applications are highly responsive even under heavy load. See our ANN benchmarks for more info.

  • πŸ”Œ Flexible Vectorization: Seamlessly vectorize data at import time with integrated vectorizers from OpenAI, Cohere, HuggingFace, Google, and more. Or you can import your own vector embeddings.

  • πŸ” Advanced Hybrid & Image Search: Combine the power of semantic search with traditional keyword (BM25) search, image search and advanced filtering to get the best results with a single API call.

  • πŸ€– Integrated RAG & Reranking: Go beyond simple retrieval with built-in generative search (RAG) and reranking capabilities. Power sophisticated Q&A systems, chatbots, and summarizers directly from your database without additional tooling.

  • πŸ“ˆ Production-Ready & Scalable: Weaviate is built for mission-critical applications. Go from rapid prototyping to production at scale with native support for horizontal scaling, multi-tenancy, replication, and fine-grained role-based access control (RBAC).

  • πŸ’° Cost-Efficient Operations: Radically lower resource consumption and operational costs with built-in vector compression. Vector quantization and multi-vector encoding reduce memory usage with minimal impact on search performance.

For a complete list of all functionalities, visit the official Weaviate documentation.

Useful resources

Demo projects & recipes

These demos are working applications that highlight some of Weaviate's capabilities. Their source code is available on GitHub.

  • Elysia (GitHub): Elysia is a decision tree based agentic system which intelligently decides what tools to use, what results have been obtained, whether it should continue the process or whether its goal has been completed.
  • Verba (GitHub): A community-driven open-source application designed to offer an end-to-end, streamlined, and user-friendly interface for Retrieval-Augmented Generation (RAG) out of the box.
  • Healthsearch (GitHub): An open-source project aimed at showcasing the potential of leveraging user-written reviews and queries to retrieve supplement products based on specific health effects.
  • Awesome-Moviate (GitHub): A movie search and recommendation engine that allows keyword-based (BM25), semantic, and hybrid searches.

We also maintain extensive repositories of Jupyter Notebooks and TypeScript code snippets that cover how to use Weaviate features and integrations:

Blog posts
Integrations

Weaviate integrates with many external services:

Category Description Integrations
Cloud Hyperscalers Large-scale computing and storage AWS, Google
Compute Infrastructure Run and scale containerized applications Modal, Replicate, Replicated
Data Platforms Data ingestion and web scraping Airbyte, Aryn, Boomi, Box, Confluent, Astronomer, Context Data, Databricks, Firecrawl, IBM, Unstructured
LLM and Agent Frameworks Build agents and generative AI applications Agno, Composio, CrewAI, DSPy, Dynamiq, Haystack, LangChain, LlamaIndex, N8n, Semantic Kernel
Operations Tools for monitoring and analyzing generative AI workflows AIMon, Arize, Cleanlab, Comet, DeepEval, Langtrace, LangWatch, Nomic, Patronus AI, Ragas, TruLens, Weights & Biases

Contributing

We welcome and appreciate contributions! Please see our Contributor guide for the development setup, code style guidelines, testing requirements and the pull request process.

Join our Slack community or Community forum to discuss ideas and get help.

License

BSD 3-Clause License. See LICENSE for details.

Directories ΒΆ

Path Synopsis
adapters
handlers/graphql
Package graphql provides the graphql endpoint for Weaviate
Package graphql provides the graphql endpoint for Weaviate
handlers/graphql/descriptions
Package descriptions provides the descriptions as used by the graphql endpoint for Weaviate
Package descriptions provides the descriptions as used by the graphql endpoint for Weaviate
handlers/graphql/graphiql
Based on `graphiql.go` from https://github.com/graphql-go/handler only made RenderGraphiQL a public function.
Based on `graphiql.go` from https://github.com/graphql-go/handler only made RenderGraphiQL a public function.
handlers/graphql/local/aggregate
Package aggregate provides the local aggregate graphql endpoint for Weaviate
Package aggregate provides the local aggregate graphql endpoint for Weaviate
handlers/graphql/local/common_filters
Package common_filters provides the filters for the graphql endpoint for Weaviate
Package common_filters provides the filters for the graphql endpoint for Weaviate
handlers/graphql/utils
Package utils provides utility methods and classes to support the graphql endpoint for Weaviate
Package utils provides utility methods and classes to support the graphql endpoint for Weaviate
handlers/rest
Package rest with all rest API functions.
Package rest with all rest API functions.
repos/db
Some standard accessors for the shard struct.
Some standard accessors for the shard struct.
repos/db/clusterintegrationtest
clusterintegrationtest acts as a test package to provide a component test spanning multiple parts of the application, including everything that's required for a distributed setup.
clusterintegrationtest acts as a test package to provide a component test spanning multiple parts of the application, including everything that's required for a distributed setup.
repos/db/lsmkv/entities
ent contains common types used throughout various lsmkv (sub-)packages
ent contains common types used throughout various lsmkv (sub-)packages
repos/db/multitenancy
Package multitenancy provides tenant validation strategies for Weaviate collections based on their multi-tenancy configuration.
Package multitenancy provides tenant validation strategies for Weaviate collections based on their multi-tenancy configuration.
repos/db/roaringset
Package roaringset contains all the LSM business logic that is unique to the "RoaringSet" strategy
Package roaringset contains all the LSM business logic that is unique to the "RoaringSet" strategy
repos/db/sharding
Package resolver provides shard resolution strategies for Weaviate collections based on their configuration.
Package resolver provides shard resolution strategies for Weaviate collections based on their configuration.
repos/db/vector/hnsw/distancer/asm
asm only has amd64 specific implementations at the moment
asm only has amd64 specific implementations at the moment
fsm
log
router
Package router provides an abstraction for determining the optimal routing plans for reads and writes within a Weaviate cluster.
Package router provides an abstraction for determining the optimal routing plans for reads and writes within a Weaviate cluster.
rpc
cmd
weaviate-server command
Code generated by go generate; DO NOT EDIT.
Code generated by go generate; DO NOT EDIT.
entities
dto
modelsext
Package modelsext provides extension methods to the structures in the models package.
Package modelsext provides extension methods to the structures in the models package.
moduletools
moduletools contains helpers that are passed to modules as part of their capability methods
moduletools contains helpers that are passed to modules as part of their capability methods
grpc
modules
text2vec-contextionary
modcontextionary concentrates some of the code that relates to the contextionary module, this must be extracted when Weaviate becomes modular.
modcontextionary concentrates some of the code that relates to the contextionary module, this must be extracted when Weaviate becomes modular.
test
benchmark command
docker/mockoidc command
tools
license_headers command
usecases
byteops
Package byteops provides helper functions to (un-) marshal objects from or into a buffer
Package byteops provides helper functions to (un-) marshal objects from or into a buffer
mmap
Package mmap is replicating the functionality of the mmap-go package, however, it optimizes usage on darwin and linux to use raw syscalls instead of the golang.org/x/sys/unix package which introduces an additional mutex.
Package mmap is replicating the functionality of the mmap-go package, however, it optimizes usage on darwin and linux to use raw syscalls instead of the golang.org/x/sys/unix package which introduces an additional mutex.
objects
package objects provides managers for all kind-related items, such as objects.
package objects provides managers for all kind-related items, such as objects.
schema
Package migrate provides a simple composer tool, which implements the Migrator interface and can take in any number of migrators which themselves have to implement the interface
Package migrate provides a simple composer tool, which implements the Migrator interface and can take in any number of migrators which themselves have to implement the interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL