本项目是一个强大且全面的系统,旨在提供高效、稳定的服务,以满足多样化的需求。通过整合多种技术和服务,为用户提供了一个一站式的解决方案。
- rag-service:核心服务,通过本地构建,支持GPU加速,为用户提供高性能的服务。
- 端口映射:
50051:50051和9090:9090 - 环境配置:
CUDA_VISIBLE_DEVICES=0,充分利用GPU资源 - 数据挂载:
./models:/app/models和./config:/app/config,方便数据管理
- 端口映射:
- postgres:使用
ankane/pgvector:latest镜像,提供稳定的数据库服务。- 端口映射:
5432:5432 - 数据库配置:
POSTGRES_DB=ragdb,POSTGRES_USER=user,POSTGRES_PASSWORD=password - 数据持久化:
pg_data:/var/lib/postgresql/data
- 端口映射:
- redis-cluster:基于
redis:7.0-alpine镜像,构建高可用的Redis集群。- 端口映射:
7000-7002:7000-7002 - 数据持久化:
redis_data:/data
- 端口映射:
- minio:使用
minio/minio镜像,提供对象存储服务。- 端口映射:
9000:9000和9001:9001 - 认证信息:
MINIO_ROOT_USER=minioadmin,MINIO_ROOT_PASSWORD=minioadmin - 数据持久化:
minio_data:/data
- 端口映射:
- nats:消息队列服务,基于
nats:2.9-alpine镜像,支持4222和8222端口。 - influxdb:时间序列数据库,使用
influxdb:2.7镜像,支持8086端口。 - jaeger:分布式追踪系统,使用
jaegertracing/all-in-one:1.47镜像,支持6831(UDP)和16686端口。 - prometheus:监控系统,使用
prom/prometheus:v2.45.0镜像,支持9091:9090端口。 - model-trainer:模型训练服务,通过
Dockerfile.trainer构建,支持分布式训练。 - experiment-tracker:实验跟踪服务,使用
mlflow:latest镜像,支持5000端口。 - feature-store:特征存储服务,使用
feast:latest镜像,支持6566端口。 - metrics-analyzer:指标分析服务,基于本地
./analyzer构建,依赖influxdb服务。
- Docker
- Docker Compose
-
克隆本项目到本地:
git clone <项目仓库地址> cd <项目目录>
-
配置环境变量(如果需要): 可以根据实际情况修改
docker-compose.yml中的环境变量配置。 -
启动服务:
docker-compose up -d
可以通过访问各个服务的端口来验证服务是否正常启动,例如:
- 访问
http://localhost:9090验证rag-service是否正常。 - 访问
http://localhost:5432验证postgres是否正常。
本项目的配置文件主要为 docker-compose.yml,其中包含了各个服务的详细配置,如镜像、端口映射、环境变量、数据挂载等。
version: '3.8'
services:
rag-service:
build: .
ports:
- "50051:50051"
- "9090:9090"
environment:
- CUDA_VISIBLE_DEVICES=0
volumes:
- ./models:/app/models
- ./config:/app/config
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
# 其他服务配置...如果你想为这个项目做出贡献,可以按照以下步骤进行:
- Fork 本项目到你的仓库。
- 创建一个新的分支进行开发:
git checkout -b feature/your-feature-name
- 进行代码开发和修改。
- 提交你的更改:
git add . git commit -m "Add your commit message" git push origin feature/your-feature-name
- 创建一个 Pull Request 到本项目的主分支。
感谢所有为这个项目做出贡献的人,以及开源社区的支持。
你可以根据实际情况修改上述内容,如项目名称、仓库地址、许可证信息等,以符合你的项目需求。这样的 README 文件可以清晰地向用户介绍项目的基本信息、特性、安装步骤等,方便用户使用和参与项目开发。