【Agent智能体】44项目部署

发布时间:2026/7/9 19:19:18
【Agent智能体】44项目部署 章节四十四项目部署一、GPU模型部署vLLMBGE1.1 部署目标用2台Linux GPU服务器承载3个本地模型服务BGE-M3和bge-reranker-large部署在同一台机器上Qwen3-8B通过vLLM部署在另一台机器上业务项目通过HTTP远程调用三个模型服务生产环境两台模型服务器模型服务器A运行BGE-M3端口6006和reranker端口6008模型服务器B运行Qwen3-8B vLLM端口6006业务项目、Milvus、Neo4j、MongoDB、MinIO继续部署在业务服务器上。两台模型服务器只负责模型推理服务。1.2 模板机准备先准备一台模板机验证阶段安装并测试三个服务。第一步检查GPU环境执行nvidia-smi命令能看到GPU、驱动版本和CUDA Version即可。第二步创建目录创建工作目录/data和模型目录/data/models。第三步创建Python虚拟环境创建并激活虚拟环境。如果镜像已预装PyTorch先验证torch.cuda.is_available()是否为True。如果没有根据服务器CUDA版本安装对应PyTorch。第四步安装依赖安装vLLM、fastapi、uvicorn、transformers、FlagEmbedding等。注意模型服务器不需要安装langchain、langgraph、neo4j等业务依赖。1.3 准备模型文件使用ModelScope下载模型文件到/data/models目录。1.4 部署Qwen3-8BvLLM服务启动vLLM的关键参数served-model-name业务项目中配置的模型名、api-key开启鉴权、gpu-memory-utilizationGPU显存利用率、max-model-len最大上下文长度RAG场景先用8k、trust-remote-codeQwen系模型建议开启。通过curl调用vLLM的chat/completions接口验证服务是否正常。1.5 部署BGE-M3hybrid embedding服务BGE-M3不能只用普通dense embedding替换因为当前项目Milvus混合检索依赖densesparse双路召回。使用FastAPI封装BGE-M3的hybrid embedding功能接收文本列表返回dense稠密向量和sparse稀疏向量两种表示。启动后通过curl验证返回结果是否同时包含两类向量。1.6 部署reranker重排序服务使用FastAPI封装bge-reranker-large接收querydocuments列表返回每个文档与查询的相关性分数。启动后通过curl验证。1.7 模板机联调测试建议在克隆前做一次完整联调。如果显存允许同时启动三个服务测试如果显存不够按顺序逐个验证。验证核心目标Python依赖可用、模型文件路径正确、服务脚本无语法错误、三个HTTP接口都能返回正确结构、端口和防火墙没问题。1.8 克隆与正式部署模板机验证通过后关闭三个模型服务克隆出新机器。模型服务器A正式只启动BGE-M3端口6006和reranker端口6008不启动Qwen3-8B。模型服务器B正式只启动Qwen3-8B适当调高gpu-memory-utilization不启动BGE-M3和reranker。如果启动报显存不足优先降低max-model-len或减少并发。1.9 改造业务项目代码第一步改造bge_m3_embedding_util.py改为调用远程HTTP服务获取hybrid embedding。第二步改造bge_rerank_util.py改为调用远程HTTP服务获取重排序分数。第三步生成新的llm_client_txt_util.py替换原有基于阿里云模型的文本模型调用。第四步在本地启动业务服务测试。二、应用服务部署2.1 整体部署流程当前业务主链路默认使用外部API不强依赖GPU。导入链路依赖MinerU API、DashScope/OpenAI兼容LLM、DashScope Embedding、Milvus、Neo4j、MinIO。查询链路依赖DashScope/OpenAI兼容LLM、DashScope Embedding、DashScope Rerank、Milvus、Neo4j、MongoDB。建议按下面顺序部署第一步在本地整理代码确保仓库已推送到Gitee。第二步购买腾讯云服务器推荐Ubuntu 22.042核4G或4核8G系统盘至少50GB。第三步安装git、docker、docker compose。第四步从Gitee拉取项目代码到服务器。第五步编写生产环境配置文件.env.prod。第六步基于项目编写导入服务和查询服务的Dockerfile。导入和查询服务都是Python FastAPI服务推荐保留一份公共Dockerfile在docker compose里通过不同command区分。第七步编写docker-compose.yml统一编排kb-import、kb-query、etcd、minio、Milvusstandalone、mongodb、neo4j。第八步先启动基础中间件再启动业务服务。第九步通过接口和容器日志做健康检查。第十步后续通过docker compose up/down/restart/logs维护服务。2.2 中间件版本Milvusmilvusdb/milvus:v2.4.0etcdquay.io/coreos/etcd:v3.5.0MinIOminio/minio:RELEASE.2023-03-20T20-16-18ZMongoDBmongo:7.0Neo4jneo4j:5.15.0-community2.3 端口建议公网只开放22SSH、8000导入服务、8001查询服务。尽量不要直接暴露到公网27017MongoDB、19530Milvus、2379etcd、9000MinIO API。2.4 启停服务首次启动先确认基础中间件正常docker compose ps确认无误后再启动业务服务。分两步启动的原因导入服务在模块加载时会初始化MinIO客户端如果MinIO还没准备好minio_client可能是None。因此建议先启动MinIO再启动kb-import。健康检查查询服务提供/health接口导入服务可访问页面验证中间件通过各自方式检查。日常维护命令停止容器docker compose stop停止并删除容器保留数据docker compose down重启全部docker compose restart重启单个服务docker compose restart kb-query代码更新后重新构建git pull origin main docker compose up -d --build