首页
/ Weaviate/Verba项目Docker部署架构深度解析

Weaviate/Verba项目Docker部署架构深度解析

2025-07-07 04:32:20作者:沈韬淼Beryl

项目概述

Weaviate/Verba是一个基于Weaviate向量数据库构建的知识检索与问答系统,通过Docker容器化部署可以快速搭建完整的服务环境。本文将详细解析其docker-compose.yml文件的技术实现,帮助开发者理解系统架构和部署要点。

核心服务架构

该docker-compose配置定义了三个主要服务组件:

  1. Verba应用服务:基于自定义Dockerfile构建的前端应用
  2. Weaviate服务:向量数据库服务,使用semitechnologies/weaviate官方镜像
  3. Ollama服务(可选):本地大语言模型运行环境

Verba服务配置详解

Verba服务是整个应用的核心入口,其配置体现了几个关键技术点:

verba:
  build:
    context: ./
    dockerfile: Dockerfile
  ports:
    - 8000:8000
  environment:
    - WEAVIATE_URL_VERBA=http://weaviate:8080
    - OPENAI_API_KEY=$OPENAI_API_KEY
    - COHERE_API_KEY=$COHERE_API_KEY
    - OLLAMA_URL=http://host.docker.internal:11434
    - OLLAMA_MODEL=$OLLAMA_MODEL
    - OLLAMA_EMBED_MODEL=$OLLAMA_EMBED_MODEL
    - UNSTRUCTURED_API_KEY=$UNSTRUCTURED_API_KEY
    - UNSTRUCTURED_API_URL=$UNSTRUCTURED_API_URL

关键配置说明

  1. 多模型支持:通过环境变量集成了OpenAI、Cohere和Ollama三种AI模型服务,提供了灵活的模型选择
  2. 数据预处理:UNSTRUCTURED_API相关配置用于文档解析和预处理
  3. 容器网络:使用host.docker.internal特殊域名访问宿主机服务
  4. 健康检查:通过HTTP端点检查服务可用性

Weaviate向量数据库配置

Weaviate作为核心向量数据库,其配置体现了生产级部署的最佳实践:

weaviate:
  image: semitechnologies/weaviate:1.25.10
  ports:
    - 8080:8080
    - 3000:8080
  environment:
    OPENAI_APIKEY: $OPENAI_API_KEY
    COHERE_APIKEY: $COHERE_API_KEY
    AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
    PERSISTENCE_DATA_PATH: '/var/lib/weaviate'

技术亮点

  1. 多端口映射:同时映射8080和3000端口,提供灵活的访问方式
  2. 数据持久化:通过volume挂载确保数据安全
  3. 模块化设计:通过ENABLE_MODULES参数控制功能模块
  4. 生产级健康检查:完善的健康检查机制确保服务稳定性

可选Ollama服务

虽然默认注释掉了Ollama服务,但配置展示了本地运行大语言模型的方案:

# ollama:
#   image: ollama/ollama:latest
#   ports:
#     - 7869:11434
#   volumes:
#     - ./ollama/ollama:/root/.ollama
#   environment:
#     - OLLAMA_KEEP_ALIVE=24h

本地模型运行特点

  1. 模型持久化:通过volume保存下载的模型文件
  2. 长连接保持:OLLAMA_KEEP_ALIVE参数优化性能
  3. 灵活部署:可作为OpenAI/Cohere的替代方案

网络与存储设计

networks:
  ollama-docker:
    external: false

volumes:
  weaviate_data: {}
  1. 自定义网络:创建专用网络确保服务间安全通信
  2. 数据卷管理:weaviate_data卷确保数据库持久化存储

部署实践建议

  1. 环境变量管理:所有API_KEY类配置应通过.env文件管理
  2. 服务依赖:Verba配置了depends_on确保Weaviate就绪后启动
  3. 资源监控:各服务都配置了健康检查,可集成监控系统
  4. 扩展性:配置支持横向扩展,可添加更多Weaviate节点

总结

Weaviate/Verba的Docker部署架构体现了现代AI应用的最佳实践,通过容器化实现了:

  • 模块化设计
  • 多模型支持
  • 生产级可靠性
  • 灵活的部署选项

理解这份docker-compose配置,开发者可以轻松定制自己的知识检索系统,根据需求调整模型组合和资源配置。