简介:这是一份面向政企单位IT运维人员及技术爱好者的DeepSeek内网离线部署指南,聚焦无互联网环境下的AI知识库搭建,突出国产化适配与安全加固。文档从离线资源准备、环境部署、数据导入到权限管理形成完整链路,适配Windows Server、Linux及macOS多平台,并兼顾主流CPU架构与硬件兼容性。其中包含模型与Ollama安装包的离线获取及导入方法,也介绍了通过Cherry Studio简化数据馈送的新手友好型RAG实现,并针对Ollama API、宝塔面板等给出访问控制与安全加固建议。包体为单个PDF文件,大小5.28MB,便于离线分发与查阅。资源已有1372人学习,适合作为内网部署入门教学手册,也能为有经验者提供权限管控与安全细节的参考。
1. 内网部署 DeepSeek 离线知识库,先解决资源闭环再谈数据投喂
在政企内网里部署 DeepSeek 离线知识库,最大的门槛往往不是模型效果,而是资源闭环。外网教程默认你能pip install、能git clone、能随时从 Hugging Face 拉文件,可内网环境连基础依赖都进不来,模型动辄几十 GB,摆渡介质、安装顺序、权限放行动不动就卡壳,整个部署过程就像在黑匣子里摸索。这套离线部署方案把模型包、Ollama 安装包、Lobe Chat 镜像、RAG 依赖全部拆成可搬运的离线资源,再落到 Windows Server、Linux 和国产化系统的具体操作上,同时覆盖数据投喂和 API 未授权访问的安全加固。适合政企 IT 运维、想在内网搭私有知识库的工程师,也适合第一次接触离线大模型部署的新手照着做。
2. 离线资源准备:模型包、Ollama 安装包与 Docker 镜像一次备齐
离线部署最忌讳的是边装边找资源。我一般会先在联网机器上把资源按“模型层、引擎层、客户端层、RAG 依赖层”四类列一个清单,逐项下载、校验、打包,再统一摆渡进内网。中间任何一项缺失,后面部署时都得重新走一遍摆渡流程,费时费力还容易出错。
2.1 模型离线包:GGUF 格式选择与 sha256 校验
DeepSeek 模型在内网里最常见的落地形态是 GGUF 格式,它能直接用 Ollama 加载。获取来源主要有两个:Hugging Face 上搜索deepseek找 GGUF 版本,或者 ModelScope 搜索GGUF deepseek,ModelScope 的下载速度在境内通常更稳。如果机器能临时联网,更省事的做法是在联网机器上先装好 Ollama,直接用ollama run把模型拉下来,再整体拷贝进内网:
# 联网机器上拉取指定尺寸模型,7b 是参数规模,可根据服务器内存选择 ollama run deepseek-r1:7b这条命令会先拉取模型再进入交互对话,看到Send a message提示后直接按Ctrl+D退出即可,模型文件已经落到本地。模型默认存放在~/.ollama/models目录下,Windows 是C:\Users\<用户名>\.ollama\models,Linux 是/home/<用户名>/.ollama/models。不同尺寸模型对内存要求差别很大,7b 量化版最低 8GB 内存能跑,14b 建议 16GB 以上,32b 至少 32GB 内存,选型时先看服务器实际配置,别上来就拉 70b。
拿到模型文件后,完整性校验这一关不能省。模型文件在摆渡过程中容易损坏,损坏后 Ollama 加载会报各种莫名错误,而且这种错误很难排查。Linux 和 macOS 用sha256sum,Windows 用Get-FileHash:
# Linux/macOS 校验 sha256sum ~/.ollama/models/blobs/sha256-*# Windows 校验 Get-FileHash -Algorithm SHA256 "C:\Users\Administrator\.ollama\models\blobs\*"计算出的哈希值要和模型发布页面提供的官方值比对,不一致就重新下载。如果你拿到的是单独的.gguf文件而不是 Ollama 的 blob 目录,可以用 Modelfile 把它注册进 Ollama。新建一个 Modelfile 文本文件,内容一行即可:
FROM ./deepseek-r1-7b.gguf把deepseek-r1-7b.gguf和 Modelfile 放在同级目录,然后执行导入:
# 进入模型文件所在目录 cd /path/to/model-folder # 创建本地模型,mymodel 可自定义 ollama create mymodel -f Modelfile # 查看导入结果 ollama listollama create的作用是把原始 GGUF 文件编译成 Ollama 认识的模型记录,-f指定 Modelfile 路径。这里容易翻车的是路径问题,Modelfile 里的FROM ./xxx.gguf是相对路径,必须在模型文件所在目录执行命令,否则会报文件找不到。
2.2 Ollama 离线安装包与客户端镜像保存/加载
Ollama 本身是单个二进制文件,离线部署比 Docker 简单。Windows 环境直接到 Ollama 官网下载安装包,拷进内网双击安装。Linux 环境可以在联网机器上执行官方安装脚本,然后把生成的二进制文件抠出来:
# 联网机器上执行安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 找到 ollama 二进制,通常在 /usr/local/bin 或 /usr/bin which ollamawhich返回的路径就是二进制位置,把那个文件拷到内网即可,不需要额外依赖。macOS 同理,用brew install ollama装完后再找二进制文件。
客户端这块,Lobe Chat 是 Web 界面,推荐用 Docker 镜像离线交付。先在联网机器上拉镜像、存镜像:
# 拉取 Lobe Chat 镜像 docker pull lobehub/lobe-chat # 把镜像导出为 tar 文件 docker save -o lobe-chat.tar lobehub/lobe-chat把lobe-chat.tar拷贝到内网服务器后,用docker load导入:
# 内网服务器导入镜像 docker load -i lobe-chat.tar # 确认镜像已加载 docker images | grep lobe-chatdocker save默认不压缩,50 多 MB 的镜像还好,几百 MB 的镜像在共享文件夹传输时可能受单文件大小限制,建议加上--compress参数或配合后文的分卷方式处理。
如果要用 RAG 能力,联网机器上还需要准备两样东西:一是文本向量模型,比如nomic-embed-text,用ollama run nomic-embed-text拉取后和 DeepSeek 模型一起摆渡;二是 Python 依赖包,项目里用到了python-docx、pdfminer.six、jieba、sentence-transformers、chromadb这些库,纯离线环境下没法pip install,需要在联网机器上用pip download把 wheel 包全部拉下来:
# 只下载不安装,-d 指定保存目录 pip download python-docx pdfminer.six jieba sentence-transformers chromadb \ -d /path/to/wheels \ --only-binary=:all:进入内网后,用--no-index强制离线安装:
pip install --no-index --find-links=/path/to/wheels python-docx pdfminer.six jieba samtools sentence-transformers chromadb注意--only-binary=:all:只下载预编译的二进制包,能避免内网环境因缺编译器导致源码安装失败,但也意味着 target 机器的 Python 版本和系统架构要与下载时一致。同一套 wheel 目录跨 Python 版本使用,很大概率装到一半报版本不匹配。
2.3 文件摆渡与分卷合并:split、cat 与 7-Zip
模型文件过大时,U 盘和共享文件夹都可能有单文件大小限制。Linux 下用split分卷,到达目标机器后用cat合并:
# 按 4GB 分卷,生成 model_part_aa、model_part_ab ... split -b 4G deepseek-r1-70b.gguf model_part_ # 目标机器上合并且校验 cat model_part_* > deepseek-r1-70b.gguf sha256sum deepseek-r1-70b.ggufsplit -b 4G的单位支持 K、M、G,4G 分卷基本能绕过 U 盘 FAT32 格式的 4GB 单文件上限。Windows 下没有split,用 7-Zip 的分卷压缩功能,右键文件 → 分卷大小填 4096M,解压时把所有分卷放同一目录再解压第一个文件即可。
摆渡方式按安全要求选:普通内网用 U 盘或移动硬盘最快;安全性要求高的环境走安全网闸;内网有共享存储的话直接传共享文件夹最方便。物理介质摆渡还要注意插拔顺序,先杀毒再接内网机器,这个环节出问题往往不是技术问题,而是流程问题。
3. 多平台部署:Windows Server 与 Linux 的环境变量、systemd 和防火墙配置
离线资源备齐后,部署工作就变成了“装引擎、配变量、放端口”三件事。Ollama 默认只监听127.0.0.1:11434,要让内网其他机器访问,必须把监听地址改成0.0.0.0,同时把OLLAMA_HOST和OLLAMA_MODELS两个环境变量设对,最后再放行防火墙端口。两个变量分别控制服务监听地址和模型存放位置,模型文件放在哪个分区,变量就指向哪个目录,避免模型把系统盘塞满。
3.1 Windows Server 部署:环境变量与服务重启
Windows Server 上安装 Ollama 直接双击安装包,建议装完后到服务管理器确认 Ollama 服务已经注册。环境变量配置可以在“此电脑 → 属性 → 高级系统设置 → 环境变量”里操作,也可以直接用 PowerShell 以管理员身份写入系统变量:
# 设置监听地址为 0.0.0.0:11434,允许内网访问 [System.Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0:11434", "Machine") # 指定模型存放目录,建议放到数据盘 [System.Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "D:\ollama-models", "Machine")设置完系统变量后,关键一步是重启 Ollama 服务。Windows 不像 Linux 改配置会自动热加载,不重启服务的话,环境变量改了等于没改,这是最常见的翻车点:
# 查看服务状态 Get-Service Ollama # 重启服务使环境变量生效 Restart-Service Ollama如果Restart-Service提示找不到服务,先检查 Ollama 是否真的以服务方式安装,也可以通过Get-Process -Name ollama确认进程存在。防火墙放行端口用netsh advfirewall命令:
# 放行 11434(Ollama API)和 3010(Lobe Chat Web),作用域设为内网 netsh advfirewall firewall add rule name="Ollama 11434" dir=in action=allow protocol=TCP localport=11434 netsh advfirewall firewall add rule name="LobeChat 3010" dir=in action=allow protocol=TCP localport=3010dir=in表示入站规则,localport指定放行端口。如果内网有 DHCP 网段变化,建议按网段限制remoteip,避免任何来源都能访问模型服务。Windows Server 2019 和 2022 上这套流程验证过没问题,再旧的版本要注意 Docker 和系统依赖库兼容性。
3.2 Linux Server 部署:systemd 服务单元与防火墙
Linux 部署先把联网机器拷来的二进制文件放到位:
sudo cp ollama /usr/local/bin/ sudo chmod +x /usr/local/bin/ollama推荐用 systemd 管理 Ollama 服务,这样开机自启、异常退出自动重启都能覆盖。创建服务单元文件/etc/systemd/system/ollama.service:
[Unit] Description=Ollama Service After=network.target [Service] User=ollama WorkingDirectory=/opt/ollama ExecStart=/usr/local/bin/ollama serve Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_MODELS=/opt/ollama/models" Restart=always RestartSec=3 [Install] WantedBy=multi-user.targetEnvironment里的两个变量相当于 Windows 的环境变量配置,Restart=always配合RestartSec=3让服务崩溃后自动拉起,User=ollama指定的系统用户需要有模型目录的读写权限。启动服务前建议手动创建模型目录并赋权:
sudo mkdir -p /opt/ollama/models sudo chown -R ollama:ollama /opt/ollama sudo systemctl daemon-reload sudo systemctl enable --now ollamaenable --now同时完成开机自启和立即启动。后续排查用systemctl status ollama看服务状态,journalctl -u ollama -f看实时日志。模型加载报错时日志里会有明确提示,比 Windows 的黑匣子好排查得多。
防火墙规则按发行版区分。CentOS / RHEL 用firewall-cmd,Ubuntu / Debian 用ufw:
# CentOS / RHEL sudo firewall-cmd --permanent --add-port=11434/tcp sudo firewall-cmd --reload # Ubuntu / Debian sudo ufw allow 11434/tcp这里有个高频误解:很多人只加了主机防火墙,忘了云平台安全组或内网虚拟网络 ACL 也要放行。主机防火墙和安全组属于不同层级,都得配,缺一个就无法跨机器访问。
国产化系统这块,目前主流国产系统大多基于 Linux 内核,部署路径与 Ubuntu / CentOS 基本一致,Ollama 二进制能跑就有很大概率能跑通。重点是 CPU 架构,x86_64 和 ARM64 的二进制不通用,下载时看清平台标识。若官方没有对应架构的发布版本,找社区编译版时要特别留意来源可信度,并校验哈希值。
3.3 macOS 部署:环境变量与 LaunchAgents 可选配置
macOS 部署主要面向开发机或小型内网服务器,安装方式两种:
# 方式一:官方安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 方式二:Homebrew brew install ollama环境变量写在~/.zshrc或~/.bash_profile中:
export OLLAMA_HOST="0.0.0.0:11434" export OLLAMA_MODELS="/opt/ollama/models"改完执行source ~/.zshrc使其生效。macOS 如果想把 Ollama 做成开机自启的后台服务,可以用 LaunchAgents。创建~/Library/LaunchAgents/com.ollama.serve.plist:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.ollama.serve</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/ollama</string> <string>serve</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>加载服务:
launchctl load ~/Library/LaunchAgents/com.ollama.serve.plistmacOS 的 Gatekeeper 和 SIP 默认开启,安装 Ollama 或 Lobe Chat 时如遇权限提示,按系统引导授权即可,非必要不关闭 SIP。性能监控直接用活动监视器,关注 CPU 和内存占用,再根据模型负载调整线程数。
4. 离线数据投喂:文本分块、向量化与 Cherry Studio 实现 RAG 的两种路径
模型装好后,知识库能不能用,取决于数据投喂这一环。RAG 的核心流程是:把文档解析成纯文本,按固定长度切成小块,用嵌入模型把每一块转成向量,存进向量数据库;用户提问时,系统先把问题向量化,检索最相关的文本块,再连同问题一起交给大模型生成回答。这个流程可以用代码实现,也可以用 Cherry Studio 图形化完成。
4.1 文档解析与文本分块
投喂数据前先处理文档格式。txt 和 Markdown 直接读取即可,PDF 和 DOCX 需要用工具提取文本。项目里使用的 Python 库需要在离线环境下预先准备好 wheel 包:
# 提取 DOCX 文本 from docx import Document document = Document("your_document.docx") text = "\n".join([paragraph.text for paragraph in document.paragraphs])Document.paragraphs返回文档正文段落,paragraph.text直接拿段落文本,表格和页眉页脚不包含在内。如果文档里有大量表格,需要另行遍历document.tables获取。PDF 提取用pdfminer.six提供的命令行工具:
# 提取 PDF 文本到 txt 文件 pdf2txt.py your_document.pdf -o output.txt这个命令会保留阅读顺序,但扫描版 PDF 需要 OCR,pdfminer无能为力,这点提前确认,别等到投喂时才后悔。
提取出文本后做分块。分块长度直接影响检索质量,块太长,语义噪音多,块太短,上下文不完整。我一般按 500 到 800 字符切分,相邻块之间留 100 到 200 字重叠,保证跨块语义不丢:
def split_text(text, chunk_size=500, overlap=100): chunks = [] for i in range(0, len(text), chunk_size - overlap): chunks.append(text[i:i + chunk_size]) return chunks chunks = split_text(text)step是chunk_size - overlap,这样前后两个块之间有重叠部分,适合处理段落边界信息容易被切碎的情况。中文还能用jieba做关键词提取,辅助后续检索,但分块本身不依赖分词。
4.2 向量化与 ChromaDB 写入
文本块准备好后,用嵌入模型把每个块转成向量。离线环境必须把嵌入模型也放在本地,例如bge-large-zh-v1.5这类中文友好的模型,目录拷进内网后加载:
from sentence_transformers import SentenceTransformer # 加载本地嵌入模型,路径指向内网模型目录 model = SentenceTransformer("/path/to/embedding/model") # 批量向量化 embeddings = model.encode(chunks, show_progress_bar=True)sentence-transformers库会读取模型目录下的配置文件,保持模型目录完整拷贝,不要只拷权重文件,否则加载时找不到config.json或tokenizer.json直接报错。如果已经用 Ollama 拉取过nomic-embed-text,也可以让 Ollama 负责向量化,这样少装一套 Python 依赖。
向量库推荐 ChromaDB,纯本地存储,零服务化配置,适合内网场景:
import chromadb # 持久化存储到指定目录 client = chromadb.PersistentClient(path="/data/chromadb") # 创建集合,hnsw:space=cosine 指定余弦相似度 collection = client.create_collection( "corp_kb", metadata={"hnsw:space": "cosine"} ) # 写入向量和文档 collection.add( embeddings=embeddings.tolist(), documents=chunks, metadatas=[{"source": "doc1"}] * len(chunks), ids=[str(i) for i in range(len(chunks))] )PersistentClient指定路径后,向量库会落盘保存,服务重启数据不丢。create_collection的metadata里hnsw:space可选cosine、l2、ip,中文文档检索场景下cosine通常更合适。embeddings参数传入的是向量列表,别忘了把 numpy 数组转成 Python 列表,否则序列化会报错。
4.3 Cherry Studio 图形化 RAG(新手推荐)
自己写代码搭 RAG 全链路灵活,但工程成本高,新手很容易在依赖安装、向量库连接、编码问题上反复折腾。Cherry Studio 把数据投喂做成了可视化操作,适合第一次搭知识库的人,前提是 Ollama 里已经把对话模型和向量模型都准备好了。
操作路径如下:先在 Cherry Studio 设置中添加 Ollama 服务地址,填入内网 Ollama 的 IP 和端口,例如http://192.168.1.10:11434,再选择 DeepSeek 模型作为对话模型。接着添加嵌入模型,这里要选nomic-embed-text,这是 RAG 检索时负责向量化的模型。然后在知识库页面新建知识库,把 txt、pdf、docx、md 文件拖进去,Cherry Studio 会自动完成分块和向量化。最后在助手设置里关联这个知识库,提问时就会自动走检索增强流程。
这套方式的优点是零代码、可交互,索引状态和检索结果都能直接看到。缺点是调度策略被软件固定,无法像代码方案那样自由调整分块大小和检索阈值。等你跑通整套流程后,再回头看代码方案会容易很多,本质上都是“切块、向量化、检索、拼接”四件事。
5. 安全加固与避坑:Ollama API 未授权访问、端口暴露和权限控制的教训
很多教程只教你把OLLAMA_HOST改成0.0.0.0,却不提醒这意味着什么。Ollama 的 API 默认没有鉴权机制,一旦监听地址暴露到内网,任何能访问该 IP 的设备都能调用/api/generate生成内容,更严重的是能通过/api/pull往服务器灌模型、通过/api/delete删模型。数据泄露的风险比想象中大得多,安全加固是离线部署的必选项。
5.1 先把 11434 端口挡住:Ollama API 未授权访问
最直接的加固手段是别让 Ollama 裸奔。如果业务上不需要外部直连 Ollama,就把OLLAMA_HOST保持为127.0.0.1:11434,让 Lobe Chat 或 Cherry Studio 通过服务端本地访问。如果确实需要对外开放,至少做到网段隔离:只允许业务网段访问 11434,其他网段一律拒绝。
使用宝塔面板做安全设置时,进入面板的“安全”页面,添加端口规则放行 11434,然后在来源 IP 一栏填写允许访问的内网网段,例如192.168.1.0/24,不要填0.0.0.0/0。宝塔本质上是 iptables / firewalld 的可视化封装,规则会落实到主机防火墙,但云平台安全组那一层还需要单独检查。
更稳的做法是把 Ollama 藏在反向代理后面,用 HTTP Basic Auth 加一层密码保护。宝塔面板通常自带 nginx,添加一个站点或反向代理配置:
# 站点的 location 配置,代理到本机 Ollama location / { proxy_pass http://127.0.0.1:11434; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 加用户名密码认证 auth_basic "Ollama API Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }auth_basic_user_file指向用htpasswd工具生成的文件,客户端访问时先弹认证框,通过后才进入代理。这个方案比单纯限制 IP 更灵活,运维同事临时要用,给账号密码就行,不用改防火墙规则。客户端连这个代理端口,而不是直连 11434。
5.2 Lobe Chat 访问控制与容器网络
Lobe Chat 自身带访问码机制,部署时设置ACCESS_CODE环境变量,用户打开页面输对访问码才能看到内容。同时把OPENAI_API_KEY这类外部服务密钥换成内网 Ollama 地址,让所有模型请求都走内网:
docker run -d -p 3210:3210 \ -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \ -e OLLAMA_API_MODEL=deepseek-r1:7b \ -e ACCESS_CODE=your-access-code \ --name lobe-chat \ lobehub/lobe-chat这里有个容器网络的坑:127.0.0.1指的是容器内部,不是宿主机。如果 Ollama 在宿主机上监听 127.0.0.1,Lobe Chat 容器里访问http://127.0.0.1:11434是连不通的。解决办法是让 Ollama 监听0.0.0.0:11434并配合防火墙限制来源,或者用 Docker 的host网络模式运行 Lobe Chat。生产环境我一般建议把 Ollama 和 Lobe Chat 都部署在同一台 Linux 服务器,Lobe Chat 用--network host启动,这能少绕很多弯路。
5.3 五条高频踩坑记录
以下是从实际部署中反复出现的问题,按现象、原因、解决三个维度记录。
坑一:环境变量改了,内网其他机器还是访问不了 Ollama
现象:Windows 服务器上设了OLLAMA_HOST=0.0.0.0:11434,本机能通,其他机器连不上。
原因:设置系统环境变量后没有重启 Ollama 服务,服务仍按旧配置运行。
解决:修改环境变量后必须重启 Ollama 服务。Windows 用Restart-Service Ollama或服务管理器手动重启;Linux 用systemctl restart ollama。重启后用netstat -an | grep 11434确认监听地址从127.0.0.1变成了0.0.0.0。
坑二:主机防火墙放行了,还是连不上
现象:Linux 上firewall-cmd --add-port=11434/tcp执行完,远程 curl 依然超时。
原因:主机防火墙之外,云平台安全组、虚拟网络 ACL 或物理防火墙限制了端口入站。
解决:按层级排查。本机先curl 127.0.0.1:11434,再用内网 IPcurl 内网IP:11434,仍失败就去安全组确认入站规则。主机防火墙只是其中一层,网络链路每层都要放行。
坑三:Lobe Chat 容器访问不到宿主机的 Ollama
现象:Lobe Chat 页面能打开,但发消息时报连接失败。
原因:容器里127.0.0.1指向容器自身,不是宿主机;host.docker.internal在 Linux 上默认也不解析。
解决:Linux 上 Docker 启动加--network host,直接用宿主机 IP 或 127.0.0.1 作为OLLAMA_BASE_URL;Windows / macOS 在 Docker Desktop 下可以用host.docker.internal。
坑四:手动拷贝模型目录后,ollama list看不到模型
现象:把联网机器上整个.ollama/models目录拷到内网对应位置,重启 Ollama 后模型列表为空。
原因:Ollama 的 blob 目录里有硬链接和哈希文件名,直接拷贝容易丢关联信息。
解决:不要手动拷贝 blob 目录。要么完整打包整个.ollama/models目录并保证路径一致,要么用独立的.gguf文件加 Modelfile 执行ollama create重新导入,后者更可控。
坑五:模型文件把系统盘写满了
现象:内网服务器启动 Ollama 加载模型后系统提示磁盘空间不足。
原因:Ollama 默认把模型存在用户目录,一般在系统盘;大模型动辄几十 GB,系统盘很容易被打满。
解决:部署前先设OLLAMA_MODELS指向数据分区,并把需要的数据提前创建、赋予权限。这个变量在 Windows、Linux、macOS 上都生效,属于部署第一步就该做的事。
6. 验证三步法:先探 PID、再探 API、最后验问答,附一条 Modelfile 进阶技巧
部署完成后别急着投喂数据,先花两分钟把链路验证走一遍,能省下后面大量排查时间。我在内网环境里固定按三步走:先确认进程,再探 API,最后做一次真实问答。
第一步,确认服务进程和监听端口:
# Linux 查看进程和端口 ps -ef | grep ollama netstat -tlnp | grep 11434netstat输出监听地址如果是0.0.0.0:11434,说明服务已对全网卡开放。看到127.0.0.1:11434而配置却期望内网访问,说明环境变量没生效。
第二步,用curl直接测 API 和模型加载状态:
# 查看已加载的模型列表 curl http://127.0.0.1:11434/api/tags # 发起一个真实生成请求 curl http://127.0.0.1:11434/api/generate \ -d '{"model": "deepseek-r1:7b", "prompt": "你好,请用一句话介绍你自己", "stream": false}'/api/tags返回的是该 Ollama 实例上所有模型,确认目标模型在列表中。/api/generate的stream: false表示关闭流式输出,一次返回完整结果,方便直接看返回内容。如果返回model not found,说明模型没有正确导入,回到 Modelfile 导入那步检查。
第三步,验证 Lobe Chat 和 Cherry Studio。浏览器打开 Lobe Chat 页面,输入ACCESS_CODE进入,选好对话模型后发一条消息。然后再进 Cherry Studio 的知识库,随便问一个只存在于文档里的问题,能引用到对应文档片段,说明 RAG 链路闭环正常。
验证通过后,这里再给一条进阶技巧:用 Modelfile 把系统提示词和推理参数固化进模型。这样生成“企业专属版”模型时,客户端侧无需重复配置提示词和参数:
# Modelfile 进阶示例 FROM deepseek-r1:7b SYSTEM 你是一个企业知识库助手,只依据资料库中的内容回答,不要编造事实。 PARAMETER temperature 0.3 PARAMETER top_p 0.7 PARAMETER num_ctx 8192temperature 0.3让回答更保守,适合知识库问答场景;top_p 0.7控制候选词范围;num_ctx 8192把上下文窗口从默认值拉长,能容纳更多检索片段。保存为 Modelfile 后用ollama create创建新模型,在 Cherry Studio 或 Lobe Chat 里选择这个模型,问答质量和一致性会明显提升。
这套完整部署流程走完,从模型摆渡、环境部署到 RAG 投喂和 API 加固,每一步都能验证。从那以后,我每次在新环境装完 Ollama,都会强制先跑一遍 curl 探活,再放防火墙,再建知识库;这三步走完,内网 AI 知识库基本不会再翻车。希望帮到你。
本文还有配套的精品资源,点击获取