Weaviate can be configured and deployed in many different ways. Generally, the two first decisions to make in using Weaviate involve:
This page helps you to find the right combination for your needs.
In all cases, we recommend using a Weaviate client library to interact with your Weaviate instance.
Weaviate can be deployed in the following ways:
When adding data objects to Weaviate, you have two choices:
- Specify the object vector directly, or
- Use a Weaviate vectorizer module to generate the object vector.
If you are using a vectorizer module, your choices will depend on your input medium/modality, as well as whether you would prefer a local or API-based vectorizer.
Generally speaking, an API-based vectorizer will be more convenient to use, but will incur additional costs. On the other hand, a local vectorizer will be lower cost, but may require specialized hardware (such as a GPU) to run at comparable speeds.
For text, this open-source benchmark provides a good overview of the performance of different vectorizers. Please do keep in mind that domain-specific, or real-world performance may vary.
By use case
As a starting point, we recommend the following setups for different use cases.
If you are evaluating Weaviate, we recommend the following easy and convenient setup:
- An easy-to-use Weaviate instance, with
- A Weaviate Cloud Services (WCS) sandbox, or
- Embedded Weaviate
- An inference-API based text vectorizer
This will allow you to quickly get started with Weaviate, and evaluate its capabilities. Note that the Quickstart guide uses this setup, with a WCS sandbox, and an API vectorizer.
For development, we recommend using
- Docker-Compose or Weaviate Cloud Services (WCS), with
- A vectorization strategy that at least approximates your production needs.
Docker-Compose vs. Weaviate Cloud Services (WCS)
Of the two, Docker-Compose is more flexible as it exposes all configuration options, and can be used in a local development environment. Additionally, it can use local vectorizer modules such as
multi2vec-clip for example.
On the other hand, WCS instances are easier to spin up, and takes away the need to manage the deployment yourself.
Note that Embedded Weaviate is currently not recommended for serious development use as it is at an experimental phase.
For development, we recommend using a vectorizer module that at least approximates your needs.
As a first point, you must choose:
- Whether to vectorize data yourself and import it into Weaviate, or
- To use a Weaviate vectorizer module.
Then, we recommend choosing a vectorizer module that is as close as possible to your production needs. For example, if search quality is of paramount importance, we suggest using your preferred vectorizer module in development as well.
Keep in mind two other factors, which are cost, and their footprint.
- Vectorization, such as with an API-based vectorizer, can be expensive. This is especially true if you are dealing with very large datasets.
- Vector lengths can vary by a factor of ~5, which will impact both your storage and memory requirements. This can ultimately impact cost down the line.
For use in production, generally we recommend
- Weaviate Cloud Services (WCS),
- Self-managed Kubernetes, or
- Hybrid SaaS.
All of these options are scalable, with Kubernetes and Hybrid SaaS options offering the most flexibility in configuration.
As with the development use case, a WCS-based solution would be the easiest in terms of setup and maintenance, while a self-managed Kubernetes deployment combines the flexibility and scalability.
If you wish to fully control your Weaviate deployment without having to manage it yourself, Hybrid SaaS offers the best-of-both-worlds solution.
By Vectorizer & Reranker
Weaviate makes various vectorizer & reranker modules available for different media types, also called modalities.
We recommend starting from the following table of vectorizers and their availability in different Weaviate setups.
|Module type||Modality||Module||Embedded Weaviate||Weaviate Cloud Services||Docker-Compose||Kubernetes||Hybrid SaaS|
|Vectorizer||Text & Image||❌||❌||✅||✅||✅|
For additional information, try these sources.