恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
在 NAS 上部署本地 AI(DeepSeek + Dify)用于文档分析与知识蒸馏
首页
资讯中心
/
在 NAS 上部署本地 AI(DeepSeek + Dify)用于文档分析与知识蒸馏
在 NAS 上部署本地 AI(DeepSeek + Dify)用于文档分析与知识蒸馏
发布时间:2026/8/25 10:34:38
本教程基于极空间 NASx86 架构16GB 内存和 Docker 环境详细记录从零开始部署 Ollama DeepSeek-R1 7B 量化版以及 Dify Embedding知识库 的全流程包含所有遇到的踩坑点和解决方案。适合希望通过本地 AI 处理私密文档的小微企业或个人。 环境准备硬件- 极空间 Z4pro性能版或其他 x86 架构 NAS支持 Docker- 内存建议 ≥ 16GB7B 模型需 8~10GB系统及其他服务占用约 4GB- CPU 核心数 ≥ 4N305 可流畅运行软件- 开启 SSH控制面板 → 终端机和 SNMP → 启用 SSH- 已安装 Docker套件中心搜索 Docker 安装- 配置镜像加速器解决国内拉取慢的问题推荐地址- 道客镜像站https://docker.m.daocloud.io- 凌霞加速器https://docker.1panel.live- 中科大https://docker.mirrors.ustc.edu.cn- 网易http://hub-mirror.c.163.com注意在极空间 Docker 设置中进入“加速器配置”标签页填入上述任一地址即可。一、部署 Ollama 并安装 DeepSeek 模型1. 创建存储目录在文件管理器中在机械硬盘如 /SATA存储11下新建文件夹 ollama用于存放模型文件。2. 拉取 Ollama 镜像打开 Docker → 镜像 → 仓库搜索 ollama选择 ollama/ollama:latest 下载。3. 创建容器关键配置| 配置项 | 值 || CPU 限制 | 3 核可根据实际调整留部分给系统 || 内存限制 | 9GB9162 MB给模型和缓存留足空间 || 文件/文件夹映射 | /SATA存储11/ollama → /root/.ollama不要勾选只读 || 网络 | host 模式使用宿主机网络无需额外端口映射 |其他保持默认点击“应用”创建容器。4. 手动下载模型避免网络问题由于直接 ollama pull 在国内极不稳定推荐手动下载 GGUF 文件1. 访问 [HuggingFace 镜像站](https://hf-mirror.com/bartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF)2. 找到 DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf约 4.7GB并下载。3. 将下载的文件上传到 NAS 的 /SATA存储11/ollama 目录不要放到子文件夹。4. 在该目录下新建文本文件命名为 Modelfile无后缀内容为FROM ./DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf5. 导入模型SSH 登录 NAS执行以下命令进入容器并创建模型bashdocker exec -it ollama bashollama create deepseek-r1:7b-q4_K_M -f Modelfile完成后用 ollama list 验证应显示该模型。二、部署 Dify1. 下载 Dify 源码- 从 GitHub 下载最新版 [dify-main.zip](https://github.com/langgenius/dify/archive/refs/heads/main.zip)解压后上传到 NAS 中与 ollama 同级的目录例如 /SATA存储11/dify-main。2. 提权避免权限问题SSH 登录后执行bashsudo usermod -aG docker $USER输入密码然后重新登录 SSH 使组权限生效。3. 进入 Dify 目录并启动bashcd /路径/dify-main/docker # 根据你实际上传的路径docker compose up -d首次运行会自动拉取所需镜像。如果拉取缓慢或失败可参考上面配置镜像加速器或手动拉取以下镜像bashdocker pull langgenius/dify-api:latestdocker pull langgenius/dify-web:latestdocker pull postgres:15-alpinedocker pull redis:6-alpinedocker pull nginx:latestdocker pull langgenius/dify-sandbox:latest拉取完成后再次执行 docker compose up -d。4. 处理端口冲突如 nginx 启动失败如果启动时出现类似 failed to bind host port 0.0.0.0:8080/tcp: address already in use 的错误说明端口被占用需要修改配置。步骤a. 复制环境变量模板并编辑bashcp .env.example .envnano .env修改以下内容可根据需要调整端口DB_USERNAMEpostgresDB_PASSWORDdifyai123456DB_HOSTdb_postgres # 注意服务名是 db_postgres 还是 db查看 docker-compose.yamlDB_PORT5432DB_DATABASEdifyEXPOSE_NGINX_PORT8091 # 使用未被占用的端口NGINX_SSL_ENABLEDfalseREDIS_HOSTredisREDIS_PORT6379REDIS_PASSWORDdifyai123456SECRET_KEYyour-strong-secret-key # 可随机生成如 NAS 登录密码保存CtrlO回车并退出CtrlX。b. 修改 docker-compose.yaml 中 nginx 的端口映射bashcp docker-compose.yaml docker-compose.yaml.baknano docker-compose.yaml找到 nginx 服务的 ports 部分将 80:80 改为 ${EXPOSE_NGINX_PORT:-80}:91确保使用环境变量。保存退出。c. 重新启动bashdocker compose downdocker compose up -d5. 处理 api/worker 重启问题如果某些容器如 api、plugin_daemon不断重启可能是数据库连接未就绪或环境变量未正确读取。可以尝试bashdocker compose stop apidocker compose rm -f apidocker compose up -d api等待片刻查看日志docker logs docker-api-1 --tail 50若仍有报错请检查 .env 中 DB_HOST 是否与 docker-compose.yaml 中的数据库服务名一致常见为 db 或 db_postgres。6. 拉取 Embedding 模型知识库必需在 Ollama 容器中拉取轻量嵌入模型bashdocker exec -it ollama ollama pull nomic-embed-text三、配置 Dify 使用本地模型1. 访问 Dify Web 界面浏览器打开 http://你的NAS_IP:你设置的端口例如 http://192.168.5.219:8091。首次访问需注册管理员账号邮箱、用户名、密码自设。2. 添加 DeepSeek 模型LLM- 登录后点击右上角头像 → 设置 → 模型供应商。- 找到 Ollama点击“添加模型”。- 类型选择 LLM填写- 模型名称deepseek-r1:7b-q4_K_M必须与 ollama list 一致- 基础 URLhttp://你的NAS_IP:11434注意是 NAS 的 IP不要用 localhost- 保存状态应变为“已启用”。3. 添加 Embedding 模型用于知识库- 同样在 Ollama 供应商下点击“添加模型”类型选择 Text Embedding。- 模型名称nomic-embed-text- 基础 URL同上http://你的NAS_IP:11434- 保存。四、创建知识库并导入文档1. 创建知识库左侧菜单 → 知识库 → 创建知识库 → 输入名称如“公司资料”选择语言中文创建。2. 导入文档进入知识库点击“导入文档”。支持- 上传文件PDF、Word、Excel、PPT、TXT、Markdown 等可多选- 网页导入输入网址抓取内容- 文本导入直接粘贴文本3. 文档分段分区Dify 自动将文档切分成段落chunk。默认每段 500 字符重叠 50 字符适合大多数场景。也可手动调整- 点击“分段设置”- 修改“分段长度”如技术文档可设为 1000- 修改“重叠长度”避免关键信息切断4. 等待向量化上传后系统使用 Embedding 模型将文本转为向量。状态栏显示“处理中”→“已完成”后即可使用。五、创建应用并启用知识库1. 创建应用左侧菜单 → 工作室 → 创建应用 → 选择 聊天助手输入应用名称。2. 关联知识库在应用编排页面右侧找到 上下文 → 添加 → 选择你创建的知识库。3. 配置提示词可选在左侧“提示词”框可自定义 AI 行为例如你是一个专业的文档分析助手。请基于提供的知识库内容回答问题。如果无法回答请如实告知。4. 发布并测试点击右上角 发布即可在对话框提问。例如- “总结一下这份合同的核心条款”- “我们代理的防火墙有哪些型号”AI 会基于知识库内容回答。六、常见问题与解决| 问题 | 解决方案 || 拉取镜像超时| 配置镜像加速器极空间 Docker 设置 → 加速器配置或手动下载导入。 || docker 命令权限不足 | sudo usermod -aG docker $USER 并重新登录 SSH。 || 端口冲突导致 nginx 无法启动| 修改 .env 中的 EXPOSE_NGINX_PORT 为一个空闲端口并确保 docker-compose.yaml 中对应使用该变量。 || api/worker 不断重启 | 检查 .env 中数据库连接是否正确DB_HOST 应与 docker-compose.yaml 中的服务名一致。尝试 docker compose rm -f api docker compose up -d api。 || 上传文档后一直“处理中”| 检查 Embedding 模型是否已添加并启用查看 worker 日志 docker logs docker-worker-1。 || AI 回答找不到知识库内容| 确认应用编排中已正确关联知识库且文档已完成向量化。可调整检索策略混合检索、相似度阈值。 || 模型回答太慢| 监控 docker stats ollama 看内存是否吃紧可降低并发数在 Ollama 容器中设置 OLLAMA_NUM_PARALLEL1。 |七、后续优化建议1. 提升检索效果尝试使用更专业的 Embedding 模型如 bge-m3需在 Ollama 中拉取。2. 外网访问如需在外网使用建议配置 DDNS 端口转发极空间的节点小宝或使用 VPNTailscale/ZeroTier更安全。3. 多知识库隔离为不同部门或客户创建独立知识库实现数据隔离。4. 监控资源定期执行 docker stats 查看内存占用避免 OOM。 结语至此已在极空间 NAS 上成功部署了一套完全本地化、私密、免费的 AI 文档分析系统。所有数据保留在内网无需担心泄露且可无限次使用。如果本教程对你有帮助欢迎收藏或分享给需要的朋友。如有疑问欢迎在评论区留言交流。