Weaviate/Verba项目Docker部署架构深度解析
2025-07-07 04:32:20作者:沈韬淼Beryl
项目概述
Weaviate/Verba是一个基于Weaviate向量数据库构建的知识检索与问答系统,通过Docker容器化部署可以快速搭建完整的服务环境。本文将详细解析其docker-compose.yml文件的技术实现,帮助开发者理解系统架构和部署要点。
核心服务架构
该docker-compose配置定义了三个主要服务组件:
- Verba应用服务:基于自定义Dockerfile构建的前端应用
- Weaviate服务:向量数据库服务,使用semitechnologies/weaviate官方镜像
- 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
关键配置说明:
- 多模型支持:通过环境变量集成了OpenAI、Cohere和Ollama三种AI模型服务,提供了灵活的模型选择
- 数据预处理:UNSTRUCTURED_API相关配置用于文档解析和预处理
- 容器网络:使用
host.docker.internal
特殊域名访问宿主机服务 - 健康检查:通过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'
技术亮点:
- 多端口映射:同时映射8080和3000端口,提供灵活的访问方式
- 数据持久化:通过volume挂载确保数据安全
- 模块化设计:通过ENABLE_MODULES参数控制功能模块
- 生产级健康检查:完善的健康检查机制确保服务稳定性
可选Ollama服务
虽然默认注释掉了Ollama服务,但配置展示了本地运行大语言模型的方案:
# ollama:
# image: ollama/ollama:latest
# ports:
# - 7869:11434
# volumes:
# - ./ollama/ollama:/root/.ollama
# environment:
# - OLLAMA_KEEP_ALIVE=24h
本地模型运行特点:
- 模型持久化:通过volume保存下载的模型文件
- 长连接保持:OLLAMA_KEEP_ALIVE参数优化性能
- 灵活部署:可作为OpenAI/Cohere的替代方案
网络与存储设计
networks:
ollama-docker:
external: false
volumes:
weaviate_data: {}
- 自定义网络:创建专用网络确保服务间安全通信
- 数据卷管理:weaviate_data卷确保数据库持久化存储
部署实践建议
- 环境变量管理:所有API_KEY类配置应通过.env文件管理
- 服务依赖:Verba配置了depends_on确保Weaviate就绪后启动
- 资源监控:各服务都配置了健康检查,可集成监控系统
- 扩展性:配置支持横向扩展,可添加更多Weaviate节点
总结
Weaviate/Verba的Docker部署架构体现了现代AI应用的最佳实践,通过容器化实现了:
- 模块化设计
- 多模型支持
- 生产级可靠性
- 灵活的部署选项
理解这份docker-compose配置,开发者可以轻松定制自己的知识检索系统,根据需求调整模型组合和资源配置。