weaviate-ops

Weaviate 向量库的生产运维:认证、备份、多租户与索引。

补充说明

Weaviate 是支持 HNSW、混合检索和多租户的向量数据库。生产运维重点不是建表,而是认证、备份恢复、租户隔离、索引参数和容量监控。

基础用法见 weaviate;本页只写集群运维和故障处理。

安装与启动

docker run -d --name weaviate \
  -p 8080:8080 -p 50051:50051 -p 2112:2112 \
  -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false \
  -e AUTHENTICATION_APIKEY_ENABLED=true \
  -e AUTHENTICATION_APIKEY_ALLOWED_KEYS="$WEAVIATE_API_KEY" \
  -e AUTHENTICATION_APIKEY_USERS=admin \
  -e AUTHORIZATION_ADMINLIST_ENABLED=true \
  -e AUTHORIZATION_ADMINLIST_USERS=admin \
  -e PROMETHEUS_MONITORING_ENABLED=true \
  -v weaviate-data:/var/lib/weaviate \
  semitechnologies/weaviate:"$WEAVIATE_VERSION"

生产要固定版本并使用外部对象存储/副本,不要依赖单容器和本地卷。

常用示例

检查存活、就绪和版本:

curl -s http://localhost:8080/v1/.well-known/ready
curl -s http://localhost:8080/v1/meta
curl -s http://localhost:2112/metrics | grep -E 'weaviate_(object|vector|request)'

创建启用多租户的集合,并添加租户:

curl -X POST http://localhost:8080/v1/schema \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"class":"Docs","vectorizer":"none","multiTenancyConfig":{"enabled":true},"vectorIndexConfig":{"distance":"cosine","efConstruction":256,"maxConnections":32}}'

curl -X POST http://localhost:8080/v1/schema/Docs/tenants \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"tenants":[{"name":"tenant-a"},{"name":"tenant-b"}]}'

按租户查询,租户名通过 GraphQL 参数传入:

curl -X POST http://localhost:8080/v1/graphql \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ Get { Docs(tenant: \"tenant-a\", limit: 5) { title } } }"}'

备份到文件系统并查询进度(容器需设置 BACKUP_FILESYSTEM_PATH):

curl -X POST http://localhost:8080/v1/backups/filesystem \
  -H "Authorization: Bearer $WEAVIATE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"id":"backup-20261018","include":["Docs"]}'

curl -s http://localhost:8080/v1/backups/filesystem/backup-20261018 \
  -H "Authorization: Bearer $WEAVIATE_API_KEY"

易错点与排错

读完自测

合上页面,先回答,再展开对照。

  1. 文件系统备份需要哪些前置配置?
  2. 为什么 S3 备份读不到 ~/.aws/credentials?
  3. 多租户查询为什么要显式传 tenant?
答案
  1. 启用备份模块并设置 BACKUP_FILESYSTEM_PATH 指向持久卷;调用 /v1/backups/filesystem 创建备份,再用同一路径恢复。
  2. Weaviate 的 backup-s3 模块有自己的凭据解析逻辑,不使用 AWS 共享配置链。它优先使用认证代理,其次环境变量访问密钥,最后才是 IAM 角色。
  3. 多租户集合的数据按租户分片存储,查询时不带 tenant 无法确定分片。租户还必须提前创建,否则写入和查询都会失败。

相关条目