【Agent智能体】44项目部署

发布时间:2026/10/15 11:46:35

【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
延伸阅读

更多相关文章

2026/10/15 13:27:13

Windows零代码接入Claude Code:WSL+winget+Node.js本地化实践

1. 项目概述:为什么“8分钱”能撬动Claude Code的本地化落地?最近在技术圈里刷到一条标题特别扎眼的消息:“零代码基础配置 Claude Code 成功,只花了8分钱”。一开始我以为是标题党——Claude Code作为Anthropic推出的、主打代码理…

2026/10/14 16:12:48

浏览器资源嗅探革命:重新定义网页内容获取方式

浏览器资源嗅探革命:重新定义网页内容获取方式 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾为无法保存网页上的精彩视频而烦…

2026/10/16 1:36:18

ng-zorro Modal组件实战:从基础用法到性能优化的完整指南

ng-zorro的Modal组件,我用了一年多,从最开始只会打开关闭,到后来处理各种嵌套表单、异步提交、动态数据、组件通信的复杂场景,踩了不少坑,也攒了不少心得。这篇就把我在实际项目中操作Modal的细节经验完整梳理一遍&…

2026/10/16 1:36:18

GetQzonehistory|扫码一次,把 QQ 空间历史说说搬进本地 Excel

GetQzonehistory|扫码一次,把 QQ 空间历史说说搬进本地 Excel 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你上一次翻到几年前的说说是什么时候?Q…

2026/10/16 1:36:18

CSS transform: skew 深度解析:从数学原理到实战避坑指南

1. 从一次界面错位说起:为什么偏偏是skew前阵子帮一个做数据可视化的朋友调界面,他拿着屏幕截图问我:“为什么我这个卡片列表在鼠标悬停时,文字会跟着一起歪掉?我只想让背景斜切一下。”我一看代码,问题出在…

2026/10/16 1:36:18

Unity字体裁剪性能优化方案:从动态字体到静态图集

如果你接手过一个中大型Unity项目,大概率遇到过这样的场景:界面功能都做完了,真机一发版,聊天框一打开就顿一下,Profiler里跳出的是字体纹理重建。这通常不是你的业务代码有问题,而是字体裁剪没做好。Unity…

2026/10/16 1:31:18

Redis String 不只是字符串:拆解 bitmap 位图的底层原理与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑