AI Open Source · RAG 与检索
weaviate/weaviate
开源向量数据库,把对象和向量一起存,支持向量相似度检索与结构化字段过滤 混合查询。生成式搜索模块可以直接对接 LLM 做 RAG。云原生设计带来横向扩展 和容错,常见于知识库检索、多模态检索这类企业应用。
Weaviate is an open-source vector database that stores both objects and vectors, allowing for the combination of vector search with structured filtering with the fault tolerance and scalability of a cloud-native database.
- Stars
- ★ 16k
- Language
- Go
- License
- BSD-3-Clause
- Last push
- today
- Created
- 2016-03-30
- Topics
- approximate-nearest-neighbor-searchgenerative-searchgrpchnswhybrid-searchimage-search
README
Weaviate <img alt='Weaviate logo' src='https://weaviate.io/img/site/weaviate-logo-light.png' width='148' align='right' />
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.36.0
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:
- Python
- [JavaScript/TypeScript](
同一分类的其他项