一、官方信息
| 项目名称 | Weaviate |
| 仓库地址 | https://github.com/weaviate/weaviate |
| 官方网站 | https://weaviate.io/ |
| 最新更新 | 2026 年持续活跃 |
| 项目定位 | AI 原生、模块化的开源向量数据库 |
| 开源协议 | BSD-3-Clause |
二、项目背景
很多向量数据库只负责"存向量 + 检索",embedding 的生成、模型的对接都要用户自己在外层完成。Weaviate 的思路不太一样:它从一开始就把"向量化"做成了内置模块。你只要告诉它用哪个模型(OpenAI、Cohere、HuggingFace、本地模型都行),Weaviate 在写入数据时会自动帮你把原始文本转成向量,查询时也自动把问题向量化,开发者几乎不用手写 embedding 代码。
Weaviate 用 Go 编写,原生支持 GraphQL 风格的查询接口,内置混合检索(向量 + 关键词 BM25)、Reranker 重排器、生成式检索(Generative Search,直接在数据库层调用 LLM 生成答案)。它在多模态搜索、企业知识库、电商商品搜索领域用得很多,也是 LangChain、LlamaIndex 官方支持的向量后端之一。
对个人用户,Weaviate 提供了非常简单的 Docker Compose 单机部署,配合环境变量即可接入 OpenAI / 本地模型;生产环境则有 Weaviate Cloud 和分布式集群版。
三、核心特性
- 内置向量化模块:写入 / 查询时自动调用模型生成 embedding,无需外部代码。
- 混合检索:向量相似度 + BM25 关键词搜索自动融合排序。
- Generative Search:在数据库层直接调用 LLM,基于检索结果生成答案(RAG 内置)。
- GraphQL 查询:强大灵活的查询语法,支持过滤、聚合、分组。
- 多模态支持:文本、图片、视频向量统一存储检索。
- Reranker 模块:内置 Cohere / HuggingFace rerank,提升召回精度。
- 模块化架构:model provider、vectorizer、reranker 均可插拔。
四、环境要求
- 操作系统:Linux / macOS / Windows(WSL2)。
- Docker 20.10+ 与 Docker Compose v2。
- 内存:建议 4GB 以上。
- 端口:8080(HTTP / GraphQL)、50051(gRPC)。
- 若用 OpenAI 模块需 OpenAI API Key;用本地模型则需可访问的 embedding 服务。
五、详细部署步骤
方式一:Docker Compose(接入 OpenAI 模块)
mkdir weaviate && cd weaviate
cat > docker-compose.yml <<'EOF'
version: '3.4'
services:
weaviate:
command:
- --host
- 0.0.0.0
- --port
- '8080'
- --scheme
- http
image: cr.weaviate.io/semitechnologies/weaviate:1.28.0
ports:
- "8080:8080"
- "50051:50051"
restart: always
volumes:
- ./weaviate_data:/var/lib/weaviate
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'
ENABLE_MODULES: 'text2vec-openai,generative-openai'
OPENAI_APIKEY: 'sk-xxxxxxxxxxxxxxxx'
EOF
docker compose up -d关键环境变量说明:
DEFAULT_VECTORIZER_MODULE:默认向量化模块,这里用 OpenAI。ENABLE_MODULES:启用的模块列表,generative-openai 用于内置 RAG 生成。AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:是否允许匿名访问,生产环境建议关闭并启用 OIDC / API Key。
方式二:使用本地模型(Ollama,无需 OpenAI Key)
cat > docker-compose.yml <<'EOF'
services:
weaviate:
image: cr.weaviate.io/semitechnologies/weaviate:1.28.0
ports:
- "8080:8080"
volumes:
- ./weaviate_data:/var/lib/weaviate
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
DEFAULT_VECTORIZER_MODULE: 'text2vec-ollama'
ENABLE_MODULES: 'text2vec-ollama,generative-ollama'
OLLAMA_API_ENDPOINT: 'http://host.docker.internal:11434'
EOF
docker compose up -d方式三:Python 客户端
pip install -U weaviate-clientimport weaviate
client = weaviate.connect_to_local(host="服务器IP", port=8080)
# 创建 collection
from weaviate.classes.config import Configure
client.collections.create(
"Article",
vectorizer_config=Configure.Vectorizer.text2vec_openai(),
generative_config=Configure.Generative.openai(),
properties=[
{"name": "title", "data_type": "text"},
{"name": "content", "data_type": "text"},
],
)
# 写入数据(自动向量化)
articles = client.collections.get("Article")
articles.data.insert({"title": "Weaviate 入门", "content": "Weaviate 是一个开源向量数据库……"})
# 混合检索 + 生成式回答
response = articles.generate.near_text(
query="向量数据库有什么用",
limit=3,
single_prompt="用一句话总结:{content}",
)
for o in response.objects:
print(o.properties, o.generated)验证部署
curl http://localhost:8080/v1/.well-known/ready
# 浏览器访问 GraphQL Playground:
# http://服务器IP:8080六、使用方法
- 浏览器访问
http://服务器IP:8080打开 Weaviate 控制台 / GraphQL Playground。 - 匿名模式下无账号密码;若启用了 API Key 需在客户端配置。
- 用 GraphQL 查询:GET
/v1/schema查看 schema,POST/v1/graphql执行查询。 - LangChain 集成:
from langchain_community.vectorstores import Weaviate,传入weaviate_url。
七、常见问题 FAQ
Q1:模块加载失败 / OpenAI 报错?
A:检查 OPENAI_APIKEY 是否正确、网络能否访问 OpenAI;国内服务器需走代理或改用 Ollama 模块。
Q2:容器一直重启?
A:看日志 docker compose logs weaviate,常见是数据目录权限问题,把 weaviate_data 目录权限放开。
Q3:如何开启鉴权?
A:设 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false',并配置 AUTHENTICATION_APIKEY_ALLOWED_KEYS。
Q4:向量化是自动的吗?
A:是的,只要配置了 vectorizer module,写入文本时 Weaviate 自动调用模型生成向量,无需自己算。
Q5:数据持久化位置?
A:compose 里映射的 ./weaviate_data 目录,备份它即可。
八、跳转链接
- GitHub 仓库:https://github.com/weaviate/weaviate
- 官方文档:https://weaviate.io/developers/weaviate
- Docker Compose:Docker Compose 安装
- Python 客户端:weaviate-client