尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

银河麒麟V10上部署Dify+DeepSeek构建RAG知识库全流程

银河麒麟V10上部署Dify+DeepSeek构建RAG知识库全流程 简介面向银河麒麟服务器V10SP1-2403环境下结合Dify与Deepseek搭建本地知识库的部署物料包主要服务于需要在国产化、内网环境中构建AI问答系统的运维和开发人员可解决离线部署时依赖下载难、多架构兼容麻烦的问题。资源共8个文件涵盖2个gz压缩包、1个zip压缩包、1个yaml配置以及针对aarch64、x86_64、armv6、armv7四种处理器的docker-compose文件整体约423MB完整覆盖Dify部署所需的基础组件、docker安装包与多架构启动配置。目前已有1183人学习下载。通过这份物料使用者能直接获得经过整理的容器化部署文件、离线安装所需的docker组件及适配不同硬件的编排脚本免去逐一下载和排查版本兼容的步骤进而在银河麒麟服务器上顺利启动Dify并接入Deepseek快速搭建起可用的本地知识库服务。 最近在做国产化环境的知识库落地需要在一台银河麒麟服务器V10SP1-2403上把RAG问答整套链路跑起来。我试过很多组合比如直接写Python脚本调向量库、再用LangChain串流程折腾了大半天最后还是觉得DifyDeepSeek这条路最省心。这篇把我从裸机到知识库能正常问答的完整过程整理出来每个命令、每个配置项、每个坑都写清楚适合需要在国产服务器平台上做知识库的运维、开发和交付工程师照着抄。开头先把这套方案能解决什么问题说透。Dify负责整个LLMOps平台涵盖知识库管理、应用编排、API发布DeepSeek负责大模型推理银河麒麟V10SP1-2403则是基础操作系统。三者组合起来就能在信创环境里跑起一个完整的企业知识库问答系统支持上传文档、切片向量化、检索增强、流式回答还能通过API对接现有业务系统。整个过程不需要额外购买商业软件模型API按量计费也非常便宜。1. 部署前必须想清楚的架构与选型1.1 为什么DifyDeepSeek是国产服务器上最稳的组合我接触过不少在国产化服务器上做AI应用的方案要么是纯手工从零搭RAG链路要么是硬套某个商业平台。手工链路适合极客玩家但真要交付给客户一个个组件手工维护太痛苦日志、升级、权限、多用户全都要自己写。商用平台又往往对国产系统支持平平装个依赖都得现改源码。Dify的优势在于它是开源LLMOps平台核心服务全部容器化对底层操作系统不敏感。银河麒麟V10SP1-2403本身是Linux发行版内核较新兼容Docker装上容器引擎之后Dify的所有组件nginx、api、worker、web、数据库、向量库全都跑在容器里和操作系统解耦。这正好绕开了国产系统软件源不全、Python版本依赖难搞的痛点。DeepSeek这边它的API国内直连就能用不需要做额外网络配置响应速度和稳定性实测下来都不错。而且DeepSeek也开源了R1系列模型权重如果客户对数据安全有硬性要求可以退回到本地Ollama部署模式一套Dify配置两种模型接入方式都支持切换成本很低这个灵活性在国产化项目里非常关键。1.2 知识库的核心原理从文档导入到检索生成知识库系统看起来高大上底层原理其实就是RAGRetrieval-Augmented Generation检索增强生成。拿一个生活化例子解释你问一个刚入职的实习生他可能答不上来因为你没给过他公司资料但如果你先递给他一本《员工手册》让他翻到第10页看请假流程他就能准确回答你的问题。RAG就是这个思路用户提问前系统先从知识库里检索最相关的片段把这些片段拼到上下文里再交给大模型生成答案。具体流程是文档上传后先做切片处理把长文本切成多个小片段每个片段经过Embedding模型转换成高维向量这些向量连同原文一起存入向量数据库。用户提问时系统把问题也转成向量在数据库里做相似度检索找到TopK个最相关的片段连同问题一起发给大模型最终生成带依据的回答。理解了这套原理你就能明白为什么选型重要切片策略决定了检索的精度Embedding模型决定了语义理解的深度向量库决定了检索速度而大模型决定了最终回答质量。Dify把这套流程的可视化和API化做得非常完整这也是我推荐用它的核心原因。2. 银河麒麟V10SP1环境准备与Docker部署2.1 系统检查与基础环境初始化拿到一台新的银河麒麟服务器别急着装东西先把配置摸清楚。登录系统后依次执行下面几条命令cat /etc/os-release uname -m free -h df -h第一条看系统版本确认是V10SP1-2403第二条看CPU架构一般是x86_64如果是鲲鹏、飞腾平台会显示aarch64第三条看内存Dify全家桶跑起来在线API模式建议至少8GB空闲内存如果还要跑本地模型建议16GB以上第四条看磁盘Dify镜像加向量数据预留50GB比较稳妥。如果系统自带SELinux且处于enforcing模式建议先临时关闭或者设为宽松模式否则后面Docker挂载目录时经常出现权限拒绝的问题。执行sudo setenforce 0 sudo sed -i s/^SELINUXenforcing/SELINUXpermissive/ /etc/selinux/config另外确认系统时间是否准确容器启动如果时间偏差太大会导致TLS证书校验失败。执行date看当前时间不对就用sudo ntpdate ntp.aliyun.com同步一下。2.2 安装Docker与Compose的完整命令银河麒麟V10SP1的软件源里没有直接提供docker-ce包我试过几种方式最可靠的是用阿里云镜像站的源。先配置Docker官方仓库的镜像源然后安装sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /etc/yum.repos.d/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin在离线环境或者网络受限的环境下也可以选择直接下载rpm包安装但依赖比较多我建议能用在线源就用在线源。安装完成后启动Dockersudo systemctl enable --now docker sudo docker version输出里有Client和Server两段就说明Docker正常工作了。再确认Compose插件sudo docker compose version2.3 镜像加速与服务自启动设置Docker装上之后第一件事就是配置镜像加速。国内直接拉Docker Hub的镜像非常慢经常几KB/s拉一个Dify的nginx镜像能等一上午。我用了DaoCloud的公共加速地址。创建或修改/etc/docker/daemon.json{ registry-mirrors: [https://docker.m.daocloud.io], log-driver: json-file, log-opts: { max-size: 50m, max-file: 5 } }第二个配置顺手把容器日志做了大小限制不然Dify跑久了日志文件能撑爆磁盘。修改完重启Docker生效sudo systemctl daemon-reload sudo systemctl restart docker验证加速是否生效可以拉一个测试镜像看看速度sudo docker pull nginx:alpine这一步能明显感受到速度差异。3. Dify平台全栈容器部署实操3.1 获取Dify部署文件与版本选择Dify官方推荐用docker compose方式部署部署文件在GitHub仓库里。我的习惯是直接下载指定版本的release包不做git clone避免后面版本升级时本地改动和远端冲突。以当前最新的1.x版本为例cd /opt sudo git clone https://github.com/langgenius/dify.git cd dify/docker sudo cp .env.example .env这里有个经验之谈建议在clone之前先看看release分支如果GitHub访问速度不行可以用镜像站加速。下载完成后进入docker目录里面有个docker-compose.yaml文件Dify的一整套组件都在这里定义。3.2 环境变量配置要点用编辑器打开.env文件重点看几个配置项。第一是端口EXPOSE_NGINX_PORT80默认是80端口如果这台服务器上已经跑了Nginx或者其他Web服务一定要提前改成别的端口比如8080。我踩过这个坑80端口被占导致容器起不来排查了半天。第二是向量数据库类型。Dify默认使用Weaviate开箱即用不需要额外配置很适合起步阶段。如果你的知识库文档量特别大比如超过百万级向量后期可以迁移到Qdrant或者Milvus但前期我建议就用默认的省心。第三是密钥相关的配置比如SECRET_KEY。看.env里是否已经生成了随机值如果没有可以自己生成一个sudo openssl rand -hex 32填到SECRET_KEY这一行。3.3 启动服务与初始化管理员配置完成后在docker目录下执行sudo docker compose up -d sudo docker compose ps第一次启动会拉取所有镜像包括nginx、api、web、worker、postgres、redis、weaviate、sandbox等总共大概4GB。镜像拉取完后所有容器会自动创建并启动。用下面的命令持续观察API服务日志直到出现类似“Application startup complete”的提示sudo docker compose logs -f api等待期间可以等活动完全就绪然后在浏览器打开http://服务器IP如果改了端口就是http://服务器IP:8080。第一次访问会进入初始化页面让你设置管理员邮箱和密码。这一步没什么难度按提示填完即可。初始化完成后会跳转到登录页用刚才设置的管理员账号登录Dify后台。3.4 Dify升级的正确姿势Dify版本迭代很快后续想升级要按官方推荐的流程操作不要直接docker compose up -d就算完。正确步骤是cd /opt/dify sudo git pull sudo cp docker/.env.example docker/.env注意不要覆盖已有的.env而是把新增的配置项合并进去。然后cd docker sudo docker compose pull sudo docker compose up -d升级前一定要备份数据库可以用docker exec进Postgres容器里做pg_dump也可以直接备份整个docker数据卷目录。升级这事宁可多备份一次也不要赌版本兼容性。4. DeepSeek模型接入在线API与本地模型双方案4.1 在线API方式DeepSeek对话模型接入知识库能不能回答问题核心在于大模型接入是否成功。Dify支持多种模型供应商DeepSeek是原生支持之一。登录Dify后台点右上角头像进入设置找到“模型供应商”搜DeepSeek填入API Key即可。API Key在DeepSeek开放平台注册后生成按量计费。填入后Dify会自动拉取该供应商支持的模型列表一般有deepseek-chat和deepseek-reasoner两个模型。前者适合普通对话和知识库问答响应快、价格低后者是推理增强模型适合复杂推理场景但速度和成本都会高一些。知识库问答场景用deepseek-chat就够了。这里要提醒一句国产大模型API的调用链路完全在国内网络环境内完成不需要额外设置出口网络直接配置Key就能连通实测响应速度稳定。4.2 本地模型方式Ollama部署DeepSeek蒸馏版很多信创项目要求数据不出内网不能调在线API那就需要本地部署模型。推荐用Ollama它是一个极简的模型运行工具一条命令就能拉起一个模型服务。curl -fsSL https://ollama.com/install.sh | sh sudo systemctl enable --now ollama然后拉取DeepSeek-R1的蒸馏版模型。以7B版本为例sudo ollama pull deepseek-r1:7b模型体积大概4.7GB左右下载完成后验证一下sudo ollama run deepseek-r1:7b 你好请介绍一下你自己能正常输出就说明模型服务跑起来了。然后在Dify的模型供应商配置里选择Ollama类型填入服务器地址http://localhost:11434模型名填deepseek-r1:7b保存后在测试弹窗里验证连通性。本地部署需要注意硬件资源7B模型量化版本CPU推理也能跑但速度会慢单轮问答可能要等几十秒如果服务器有GPU最好用NVIDIA GPU 显存至少8GB跑起来体验会好很多。没有GPU的机器建议选择更小的模型比如1.5B或者直接在线API。4.3 Embedding模型配置的关键点这是整个部署过程中比较容易忽略的环节。要说清楚的是DeepSeek的API目前不提供Embedding向量化接口而知识库的切片向量化必须有Embedding模型。所以需要单独配置一个Embedding模型。方案有两种。一种是通过Ollama本地跑一个bge-m3嵌入模型适合纯内网环境sudo ollama pull bge-m3然后在Dify的模型供应商里配置Ollama Embedding模型模型名填bge-m3。另一种是使用兼容OpenAI接口的在线向量化API比如硅基流动SiliconFlow上托管的BAAI/bge-m3。在Dify模型供应商里选择OpenAI-API-compatible类型填对应的Base URL和API Key。两种方案都能让知识库的文档向量化正常跑通本地方案更私有在线方案部署更简单。5. 知识库从0到1分段、向量化与检索调优5.1 创建知识库与文档导入模型配好后开始建知识库。在Dify左侧菜单点“知识库”创建新知识集设置名称和描述。然后上传文档支持PDF、TXT、Markdown、DOCX等常见格式。Dify会自动识别文档内容也可以直接粘贴纯文本。上传时有一个很关键的选项“索引方式”。Dify社区版通常提供高质量模式和经济模式。高质量模式会调用Embedding模型做向量化检索效果更好经济模式走关键词索引速度更快但语义召回能力弱。生产环境我强烈建议用高质量模式因为知识库的核心价值就是语义检索。5.2 分段策略决定检索上限的核心参数文档上传后进入分段设置页这里是最影响检索效果的地方。我总结了几个经验值。分段长度默认是500 tokens对于中文文档这个长度偏大。如果分段太长一个片段包含多个主题提问时检索到的片段里有一半内容是不相关的大模型容易被干扰。如果分段太短语义被切碎单独一个片段表达不了完整意思召回率会下降。我建议从500到800字开始试同时设置重叠长度100字左右。重叠的作用是让相邻片段之间保留衔接信息避免在段落边界处丢失语义。另外分隔器选择上中文文档最好把“中文句号、逗号”加到分隔符里Dify默认的空格分隔对中文不友好。手动调整完分段设置Dify会显示切片的预览结果可以直观看到每个切片的起始和结尾。这一步花点时间检查比上线后调检索要省事得多。5.3 检索模式与Rerank精排配置分段做完Dify会调用Embedding模型把所有片段向量化写入向量库。之后新建一个聊天助手应用在应用编排页面添加知识库节点关联刚建的知识集。这里需要设置检索模式Dify提供三个选项向量检索纯语义相似度匹配适合“意思相近但字面不同”的提问全文检索关键词倒排索引适合“精确匹配某个编码/术语”的提问混合检索两者结合取并集后加权排序默认推荐知识库场景直接选混合检索。如果对回答精准度要求很高建议再加一层Rerank精排。Dify支持接入Rerank模型比如在SiliconFlow上托管的bge-reranker-v2-m3配置方式类似Embedding模型。加了Rerank之后系统会先召回Top20候选片段再用Rerank模型精排到Top3效果提升非常明显。TopK参数推荐设为3到5。设得太小容易漏正确答案设得太大则会把大量噪声塞进上下文稀释大模型的注意力反而降低回答质量。Score阈值建议先设为0.5根据实际效果再微调。5.4 在对话应用里挂载知识库在应用编排里把已经建好的知识库拖到上下文区域设置好引用模式比如“对话模式”或“指令模式”。保存后在预览窗口里发一条和知识库内容相关的问题比如“请假流程是什么”看系统是否能引用知识库片段并给出回答。Dify会在回答下面显示引用的来源片段方便核查回答是否基于知识库内容。如果引用的片段完全不相关说明分段或检索配置有问题要回到上一节调整如果引用片段正确但回答质量差说明大模型配置或提示词需要优化。这一步就是调试知识库的核心环节。6. 常见问题排查与避坑记录6.1 镜像拉取慢与网络异常前面提过配置镜像加速如果配置之后还是慢可以试几个不同的加速地址不同网络环境下效果差异很大。拉取Pytorch这种大镜像时建议直接使用docker pull分步验证。还有一个坑是Docker服务配置了代理环境变量后内网镜像仓库反而拉不下来遇到这种情况检查一下/etc/systemd/system/docker.service.d/下的配置。6.2 端口冲突与容器启动失败端口冲突是最常见的问题。如果执行docker compose up -d后发现nginx容器不断重启先执行sudo ss -tlnp | grep 80确认端口占用来源。如果是已有Web服务占用改.env里的EXPOSE_NGINX_PORT然后重新加载sudo docker compose up -d容器启动失败还有一个常见原因docker compose up -d时数据库还没就绪API服务在启动后立刻退出。这时Docker的restart策略会自动重试等一两分钟再查状态即可不用手动干预。6.3 知识库检索不准的排查路径检索效果差90%的情况先检查Embedding模型是否配置正确。在知识库列表页重新跑一次索引看有没有报错。如果向量化正常但检索还是不准按顺序检查分段长度是否过大、TopK是否太小、是否有Rerank、Score阈值是否过滤掉了正确答案。还有一个容易被忽略的细节文档格式转换。PDF尤其是扫描件或图文混排的PDF解析出来的文本可能是乱码这种文档无论检索配置多好都没有用。遇到这种文件建议先转成Markdown或用OCR工具清洗后再上传。6.4 系统资源占用过高与自动恢复Dify全家桶占内存大户是Postgres、Weaviate和API服务总占用大约2GB到3GB。如果服务器内存紧张可以在docker-compose里给关键服务加上内存限制避免OOM导致容器被杀。比如api服务deploy: resources: limits: memory: 2G系统重启后如果Dify容器没有自动恢复先检查Docker服务是否在开机时启动sudo systemctl is-enabled docker如果显示disabled执行sudo systemctl enable dockerDify的docker-compose文件默认设置了restart策略只要Docker服务启动容器就会自动拉起。6.5 常用排查命令速查问题现象排查命令处理建议容器状态异常docker compose ps看STATUS列非healthy的容器看日志API服务报错docker compose logs -f api检查是否有Key/连接错误前端页面打不开ss -tlnp | grep 端口确认端口未被占、nginx容器正常知识库索引失败查看知识库索引任务列表确认Embedding模型连通性模型测试超时在模型供应商页测试检查Key、BaseURL、网络链路最后再说一点实际部署中的体会这套环境从裸机到知识库能流畅问答我自己实操下来大约需要一个下午。安装Docker和Dify是最快的一步真正花时间的是调知识库的检索效果。你会有一种感觉文档切分、Embedding选型、Rerank配置任何一个环节差一点点最终回答质量就会有肉眼可见的差别。有一点经验分享给大家刚搭建完不要急着导入大批量文档先用3到5篇覆盖不同问题的文档把链路跑通确认检索质量没问题后再批量导入。批量导入如果发现某些片段频繁检索不到回到分段设置里看看是不是题目、关键术语被切断这种问题越早发现越好处理。本文还有配套的精品资源点击获取
返回列表