搬瓦工 VPS 部署 Weaviate 向量搜索引擎教程

Weaviate 是一款开源的向量搜索引擎,它不仅支持纯向量搜索,还提供了强大的混合搜索能力,可以同时结合关键词搜索和语义搜索。Weaviate 内置了对多种 AI 模型的支持,能够自动完成文本到向量的转换。本教程将介绍如何在搬瓦工 VPS 上部署和配置 Weaviate。

一、Weaviate 核心特点

  • 混合搜索:同时支持向量搜索(语义)和 BM25 关键词搜索,并可调节两者权重。
  • 模块化架构:通过模块扩展向量化、生成和引用等功能。
  • GraphQL API:提供灵活的 GraphQL 查询接口。
  • 多租户支持:单实例可服务多个隔离的租户。
  • 自动向量化:内置文本向量化模块,无需手动生成向量。

二、环境要求

  • 操作系统:Ubuntu 20.04 或更高版本。
  • 内存:至少 2GB,推荐 4GB 以上。
  • Docker:需要 Docker 和 Docker Compose。

部署 Weaviate 需要先安装 Docker,参考 Docker 安装教程。选购 VPS 请参考 全部方案

三、Docker 部署 Weaviate

mkdir -p /opt/weaviate && cd /opt/weaviate

cat > docker-compose.yml <<'EOF'
version: '3.4'
services:
  weaviate:
    image: cr.weaviate.io/semitechnologies/weaviate:latest
    ports:
      - "8080:8080"
      - "50051:50051"
    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: 'none'
      CLUSTER_HOSTNAME: 'node1'
      ENABLE_MODULES: 'text2vec-transformers,generative-openai'
    restart: unless-stopped

volumes:
  weaviate_data:
EOF

docker compose up -d

3.1 带内置向量化模块部署

如果需要 Weaviate 自动将文本转换为向量,可以启用内置的向量化模块:

cat > docker-compose-vectorizer.yml <<'EOF'
version: '3.4'
services:
  weaviate:
    image: cr.weaviate.io/semitechnologies/weaviate:latest
    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-transformers'
      ENABLE_MODULES: 'text2vec-transformers'
      TRANSFORMERS_INFERENCE_API: 'http://t2v-transformers:8080'
      CLUSTER_HOSTNAME: 'node1'
    restart: unless-stopped

  t2v-transformers:
    image: cr.weaviate.io/semitechnologies/transformers-inference:sentence-transformers-all-MiniLM-L6-v2
    environment:
      ENABLE_CUDA: 0
    restart: unless-stopped

volumes:
  weaviate_data:
EOF

docker compose -f docker-compose-vectorizer.yml up -d

四、验证部署

# 检查服务状态
curl http://localhost:8080/v1/meta | python3 -m json.tool

# 检查健康状态
curl http://localhost:8080/v1/.well-known/ready

五、Python 客户端操作

pip install weaviate-client
cat > /opt/weaviate/weaviate_demo.py <<'EOF'
import weaviate
import weaviate.classes as wvc

# 连接 Weaviate
client = weaviate.connect_to_local()

# 创建集合
articles = client.collections.create(
    name="Article",
    properties=[
        wvc.config.Property(name="title", data_type=wvc.config.DataType.TEXT),
        wvc.config.Property(name="content", data_type=wvc.config.DataType.TEXT),
        wvc.config.Property(name="category", data_type=wvc.config.DataType.TEXT),
    ]
)

# 插入数据(手动提供向量)
import random
with articles.batch.dynamic() as batch:
    for i in range(50):
        batch.add_object(
            properties={
                "title": f"VPS 教程 {i}",
                "content": f"这是第 {i} 篇关于 VPS 配置和管理的教程内容。",
                "category": "技术教程"
            },
            vector=[random.random() for _ in range(384)]
        )

print(f"已插入 {articles.aggregate.over_all(total_count=True).total_count} 条数据")

# 向量搜索
query_vector = [random.random() for _ in range(384)]
results = articles.query.near_vector(
    near_vector=query_vector,
    limit=5,
    return_metadata=wvc.query.MetadataQuery(distance=True)
)

for obj in results.objects:
    print(f"标题: {obj.properties['title']}, 距离: {obj.metadata.distance}")

client.close()
EOF

python3 /opt/weaviate/weaviate_demo.py

六、混合搜索

Weaviate 的混合搜索结合了 BM25 关键词搜索和向量搜索:

cat > /opt/weaviate/hybrid_search.py <<'EOF'
import weaviate

client = weaviate.connect_to_local()
articles = client.collections.get("Article")

# 混合搜索 - alpha 控制向量搜索和关键词搜索的权重
# alpha=1 纯向量搜索,alpha=0 纯关键词搜索
results = articles.query.hybrid(
    query="VPS 安全配置",
    alpha=0.5,  # 50% 向量 + 50% 关键词
    limit=5
)

for obj in results.objects:
    print(f"标题: {obj.properties['title']}")

client.close()
EOF

七、GraphQL 查询

Weaviate 提供了 GraphQL 查询接口:

# 查询示例
curl -X POST http://localhost:8080/v1/graphql \
  -H "Content-Type: application/json" \
  -d '{
    "query": "{Get{Article(limit:5){title content category}}}"
  }'

八、配置认证

生产环境建议启用 API 密钥认证。修改 Docker Compose 配置:

# 在 environment 中修改
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
AUTHENTICATION_APIKEY_ENABLED: 'true'
AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'your-secure-api-key'
AUTHENTICATION_APIKEY_USERS: 'admin'
AUTHORIZATION_ADMINLIST_ENABLED: 'true'
AUTHORIZATION_ADMINLIST_USERS: 'admin'

九、数据备份

# 备份 Weaviate 数据
docker compose stop
tar -czf /opt/backups/weaviate-backup-$(date +%Y%m%d).tar.gz /opt/weaviate/
docker compose start

十、Weaviate 与其他向量数据库对比

Weaviate 的独特优势在于混合搜索和内置向量化模块。Milvus 在纯向量搜索性能和大规模数据处理方面表现更好。ChromaDB 最为轻量,适合快速原型开发。选择时需要根据实际需求权衡。

十一、常见问题

内存占用过高

Weaviate 使用 HNSW 索引,会将索引数据加载到内存中。可以通过配置 LIMIT_RESOURCES 或减少数据量来控制。

模块加载失败

确认 Docker Compose 中的模块服务正常运行,检查模块容器日志:

docker compose logs t2v-transformers

总结

Weaviate 是功能全面的向量搜索引擎,特别适合需要混合搜索能力的 AI 应用。配合 LangChainLlamaIndex 可以构建强大的知识库问答系统。选购搬瓦工 VPS 请查看 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,购买链接:bwh81.net

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。