news 2026/10/20 10:43:55

DeepSeek内网离线部署与RAG知识库实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek内网离线部署与RAG知识库实战指南

简介:这是一份面向政企单位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 list

ollama 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 ollama

which返回的路径就是二进制位置,把那个文件拷到内网即可,不需要额外依赖。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-chat

docker 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.gguf

split -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=3010

dir=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.target

Environment里的两个变量相当于 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 ollama

enable --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.plist

macOS 的 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 11434

netstat输出监听地址如果是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 8192

temperature 0.3让回答更保守,适合知识库问答场景;top_p 0.7控制候选词范围;num_ctx 8192把上下文窗口从默认值拉长,能容纳更多检索片段。保存为 Modelfile 后用ollama create创建新模型,在 Cherry Studio 或 Lobe Chat 里选择这个模型,问答质量和一致性会明显提升。

这套完整部署流程走完,从模型摆渡、环境部署到 RAG 投喂和 API 加固,每一步都能验证。从那以后,我每次在新环境装完 Ollama,都会强制先跑一遍 curl 探活,再放防火墙,再建知识库;这三步走完,内网 AI 知识库基本不会再翻车。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 10:39:53

K8s核心YAML实战:Pod、Deployment、Service配置详解与避坑指南

1. 为什么每个运维人都绕不开 YAML 这道坎刚接触容器编排那会儿&#xff0c;我最头疼的不是命令记不住&#xff0c;而是那一堆缩进严格的配置文件。少一个空格、多一个冒号&#xff0c;整个部署就卡在那里不动&#xff0c;报错信息还特别含糊。后来用多了才明白&#xff0c;YAM…

作者头像 李华
网站建设 2026/10/20 10:37:33

AutoDL 4090上Qwen2.5-7B微调实战:LLaMA-Factory与LoRA全流程解析

简介&#xff1a;面向有一定机器学习基础的研究人员与开发者&#xff0c;这是一份基于Qwen2.5-7B-Instruct的大模型微调实战指南&#xff0c;重点解决在AutoDL平台独立部署并微调大模型的完整流程问题&#xff0c;适合自然语言处理任务优化、模型性能提升等实际项目。内容涵盖环…

作者头像 李华
网站建设 2026/10/20 10:35:43

AI攻击实战演示与防御升级:从行为基线到零信任的攻防新范式

说实话&#xff0c;过去几年参加行业安全大会&#xff0c;谈AI安全大多还在讲“未来趋势”“理论风险”。但这一次完全不一样——在2026全球数贸会的一场安全论坛上&#xff0c;我连续看到三次AI发起真实攻击的现场演示&#xff0c;每一次都让台下安静好几秒。当AI学会了自己找…

作者头像 李华
网站建设 2026/10/20 10:35:37

2026年GEO优化指南:从AI搜索迁移到高适配服务商选择

这些年做市场负责人&#xff0c;每年年底最头疼的事就是排来年的预算和供应商名单。2026年1月的营销计划里&#xff0c;如果你还只盯着传统SEO和广告投放&#xff0c;大概率会在上半年吃闷亏。原因很简单&#xff1a;用户的搜索行为已经从"关键词链接列表"迁移到&quo…

作者头像 李华
网站建设 2026/10/20 10:35:28

基于语音识别的阿尔兹海默症早期认知障碍预测:特征提取与模型实战

简介&#xff1a;这份资源面向计算机、人工智能及相关专业的学生与研究者&#xff0c;提供一套基于语音识别与机器学习预测阿尔兹海默症早期认知障碍的完整项目方案&#xff0c;适用于毕业设计、课程设计或期末大作业等实践场景。压缩包共85个文件&#xff0c;约4.89MB&#xf…

作者头像 李华