1. 引言
随着大语言模型技术的快速发展,越来越多的开发者和企业希望在自己的环境中部署本地大模型,以满足数据隐私、定制化和成本控制等需求。Ollama 作为一款开源的大模型管理平台,凭借其简洁的命令行界面和强大的模型管理能力,成为本地部署的首选工具之一。
本文将以一台 Linux 虚拟机为例,从零开始演示 Ollama 的完整部署过程,包括环境准备、安装部署、模型下载与运行、环境变量配置以及常见问题排查,帮助读者在虚拟机环境中快速搭建属于自己的本地大模型服务。
2. 环境准备
2.1 虚拟机硬件要求
在开始部署之前,需要确认虚拟机的硬件配置是否满足运行大模型的基本要求。以下是推荐的配置参考:
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4 核 | 8 核及以上 |
| 内存 | 8 GB | 16 GB 及以上 |
| 磁盘 | 20 GB 可用空间 | 50 GB 及以上(SSD 更佳) |
| GPU(可选) | 无 | NVIDIA 显卡,显存 8 GB 及以上 |
需要注意的是,如果没有 GPU,Ollama 会以 CPU-only 模式运行,推理速度会相对较慢,但功能不受影响。
2.2 操作系统准备
本文以 CentOS Stream 9 虚拟机为例进行演示。在虚拟机中安装好操作系统后,建议先执行以下命令更新系统软件包:
bash
sudo dnf update -y
同时确认系统已安装 wget 和 tar 工具,这两个工具在后续部署过程中会用到:
bash
sudo dnf install -y wget tar
3. Ollama 部署方式一:官方脚本安装
官方脚本安装是最简单快捷的方式,适合大多数场景。脚本会自动完成 Ollama 的下载、安装、用户创建以及 systemd 服务配置。
3.1 下载安装脚本
在虚拟机终端中执行以下命令,下载 Ollama 官方提供的安装脚本:
bash
wget https://ollama.com/install.sh
3.2 执行安装脚本
下载完成后,使用 sh 命令执行安装脚本:
bash
sh install.sh
安装过程中会输出类似如下的日志信息:
bash
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
################################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
从日志中可以看到,Ollama 已成功安装到 /usr/local 目录,并自动创建了 systemd 服务。默认 API 监听地址为 127.0.0.1:11434。
3.3 验证安装结果
执行以下命令查看 Ollama 的版本信息,确认安装成功:
bash
ollama --version
同时可以通过 systemctl 命令查看 Ollama 服务的运行状态:
bash
systemctl status ollama
如果服务状态显示为 active (running),说明 Ollama 已正常运行。
4. Ollama 部署方式二:压缩包手动安装
对于无法访问外网或需要离线部署的场景,可以选择从 GitHub Releases 页面下载 Ollama 的压缩包进行手动安装。这种方式属于绿色安装,安装后需要手动配置 systemd 服务。
4.1 下载压缩包
访问 Ollama 的 GitHub Releases 页面,获取最新版本的下载链接。以 v0.5.11 版本为例,执行以下命令下载 Linux amd64 架构的压缩包:
bash
wget https://github.com/ollama/ollama/releases/download/v0.5.11/ollama-linux-amd64.tgz
4.2 解压并验证
创建目录并解压压缩包:
bash
mkdir ollama
tar zxf ollama-linux-amd64.tgz -C ollama/
cd ollama
解压后,执行 bin/ollama 命令验证程序是否可用:
bash
bin/ollama
如果输出包含 serve、create、run、pull、list 等子命令的帮助信息,说明程序已正常解压。
4.3 配置 systemd 服务
为了让 Ollama 能够以系统服务的方式后台运行,需要手动创建 systemd 服务文件。执行以下命令创建服务文件:
bash
vim /etc/systemd/system/ollama.service
在文件中写入以下内容:
bash
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/bin"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
[Install]
WantedBy=default.target
保存并退出后,重新加载 systemd 配置并启动服务:
bash
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
需要注意的是,压缩包方式安装后需要手动创建 ollama 用户和用户组,并确保 /usr/local/bin/ollama 路径下存在可执行的 Ollama 二进制文件。相比脚本安装方式,压缩包方式步骤更多,因此推荐优先使用官方脚本安装。
5. 下载并运行本地大模型
5.1 下载模型
Ollama 安装完成后,默认没有任何本地模型。可以通过 ollama pull 命令从模型仓库下载模型到本地。以通义千问 qwen:7b 模型为例,执行以下命令:
bash
ollama pull qwen:7b
模型名称的格式为「模型名:参数数量」,其中 b 表示十亿,7b 即 70 亿参数。下载完成后,可以通过 ollama list 命令查看本地已有的模型:
bash
ollama list
输出结果类似如下:
bash
NAME ID SIZE MODIFIED
qwen:7b 2091ee8c8d8f 4.5 GB 13 minutes ago
5.2 运行模型
模型下载完成后,使用 ollama run 命令启动模型并进行对话测试:
bash
ollama run qwen:7b
进入交互式对话界面后,可以直接输入问题与本地大模型进行对话:
bash
>>> Linux是什么?
Linux是一种自由和开放源代码的操作系统。最初由芬兰计算机科学家Linus
Torvalds于1991年在互联网上发布,自此Linux开始广泛流传和应用。
Linux操作系统的核心是由许多小型的、免费的软件组成的。这种基于社区的合作模式
使得Linux能够不断发展和完善,并适用于各种不同的硬件设备和应用场景。
对话结束后,输入 /bye 命令退出模型交互界面。
5.3 模型管理常用命令
Ollama 提供了丰富的模型管理命令,常用的包括:
- ollama serve:启动 Ollama 服务。
- ollama pull:从模型仓库下载模型。
- ollama run:运行指定模型。
- ollama list:列出本地已有的模型。
- ollama cp:复制模型。
- ollama rm:删除模型。
- ollama show:查看模型详细信息。
6. 配置 Ollama 环境变量
6.1 常用环境变量说明
Ollama 支持通过环境变量对服务进行灵活配置。以下是一些常用的环境变量:
| 变量名称 | 变量功能 | 使用实例 |
|---|---|---|
| OLLAMA_HOST | 服务监听地址和端口(默认 127.0.0.1:11434) | OLLAMA_HOST=0.0.0.0:11434 |
| OLLAMA_MODELS | 模型默认下载保存路径 | OLLAMA_MODELS=/data/ollama/models |
| OLLAMA_KEEP_ALIVE | 模型在内存中的保持时间(默认 5 分钟) | OLLAMA_KEEP_ALIVE=24h |
| OLLAMA_NUM_PARALLEL | 并发请求数量 | OLLAMA_NUM_PARALLEL=2 |
| OLLAMA_MAX_LOADED_MODELS | 同时加载的模型数量 | OLLAMA_MAX_LOADED_MODELS=2 |
6.2 修改环境变量
通过编辑 systemd 服务文件来设置环境变量。执行以下命令打开服务文件:
bash
vim /etc/systemd/system/ollama.service
在 Service 部分下添加 Environment 配置行,例如:
bash
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_KEEP_ALIVE=24h"
保存退出后,重新加载 systemd 配置并重启 Ollama 服务使配置生效:
bash
sudo systemctl daemon-reload
sudo systemctl restart ollama
6.3 允许外部访问
默认情况下,Ollama 只监听 127.0.0.1,即仅允许本机访问。如果需要让局域网内的其他主机访问 Ollama 服务,需要将 OLLAMA_HOST 设置为 0.0.0.0:11434。修改完成后,其他主机即可通过 http://虚拟机IP:11434 访问 Ollama 的 API 接口。
7. 验证服务与常见问题排查
7.1 验证 API 服务
Ollama 服务启动后,可以通过 curl 命令验证 API 是否正常响应:
bash
curl http://127.0.0.1:11434
如果服务正常,会返回 Ollama is running 的提示信息。
7.2 查看服务日志
当遇到问题时,可以通过 journalctl 命令查看 Ollama 的运行日志:
bash
journalctl -u ollama -f
7.3 常见问题与解决方法
- 模型下载速度慢:可以配置代理或使用国内镜像源加速下载。
- 内存不足导致模型加载失败:建议选择参数规模更小的模型,或增加虚拟机内存。
- 外部主机无法访问:检查 OLLAMA_HOST 是否设置为 0.0.0.0,并确认虚拟机防火墙已放行 11434 端口。
- CPU-only 模式推理速度慢:这是正常现象,建议为虚拟机配置 GPU 直通或使用更小参数的模型。
8. 利用 Ollama 和 MaxKB 构建企业内部知识库
前面章节完成了 Ollama 本地大模型的部署与运行。本章将在此基础上,结合开源知识库平台 MaxKB,把企业内部的文档、经验与常见问题沉淀为可检索的本地知识库,并通过 Ollama 提供的本地大模型实现智能问答,真正让 AI 成为企业内部的知识助手。下面将按照从环境准备到应用上线的完整流程,逐步演示每一步的具体操作。
8.1 整体架构与实现原理
整个系统由 Ollama 与 MaxKB 两部分组成:Ollama 负责提供本地大模型的推理能力,MaxKB 负责文档管理、文本向量化、知识检索与问答编排。两者可以部署在同一台 CentOS Stream 9 虚拟机,也可以分别部署,通过端口对外提供服务。本教程采用单机部署方案,所有组件均运行在同一台虚拟机中。
MaxKB 基于 RAG(检索增强生成)技术实现知识库问答,其核心流程如下:
- 知识库构建阶段:上传企业内部文档,系统自动进行文本拆分与向量化,并将向量数据存入本地向量库。
- 问答阶段:用户提出问题后,系统先将问题向量化,再从知识库中召回相似度较高的分段,最后将召回内容与问题一起提交给 Ollama 本地大模型生成回答。
在开始部署前,请先确认虚拟机满足以下条件:
- 操作系统:CentOS Stream 9(与前面章节一致)
- 内存:建议 16 GB 及以上(MaxKB 与 Ollama 同时运行需要较多内存)
- 磁盘:建议 50 GB 及以上可用空间
- 网络:能够访问外网以下载 Docker 镜像
8.2 部署 MaxKB
MaxKB 需要运行在 Docker 环境中,因此首先需要安装 Docker。以下命令均在 CentOS Stream 9 虚拟机的 root 用户或具有 sudo 权限的用户下执行。
8.2.1 安装 Docker
**第一步:配置 Docker 的 yum 软件源。**执行以下命令创建仓库文件:
bash
vim /etc/yum.repos.d/docker.repo
在文件中写入以下内容:
bash
[docker-ce]
name=docker
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable
gpgcheck=0
保存并退出(在 vim 中按 Esc 键,输入 :wq 后回车)。
**第二步:安装 Docker。**执行以下命令:
bash
dnf install docker -y
**第三步:启动 Docker 服务并设置为开机自启。**依次执行以下两条命令:
bash
systemctl start docker
systemctl enable docker
**第四步:验证 Docker 是否正常运行。**执行以下命令:
bash
docker info
如果输出中包含 Server Version 等 Docker 版本信息,说明 Docker 已成功安装并启动。
8.2.2 下载并运行 MaxKB 镜像
**第一步:拉取 MaxKB 镜像。**从官方镜像仓库拉取 MaxKB 镜像,执行以下命令:
bash
docker pull registry.fit2cloud.com/maxkb/maxkb
镜像下载需要一定时间,请耐心等待。下载完成后,可以通过 docker images 命令确认镜像已存在:
bash
docker images | grep maxkb
**第二步:创建数据持久化目录。**执行以下命令创建目录,避免容器重启后数据丢失:
bash
mkdir -p /MaxKB/postgresql/data /MaxKB/python-packages
**第三步:运行 MaxKB 容器。**执行以下命令启动容器,将宿主机 8080 端口映射到容器内部:
bash
docker run -d --name=maxkb --restart=always -p 8080:8080 \
-v /MaxKB/postgresql/data:/var/lib/postgresql/data \
-v /MaxKB/python-packages:/opt/maxkb/app/sandbox/python-packages \
registry.fit2cloud.com/maxkb/maxkb:latest
**第四步:验证容器是否正常运行。**执行以下命令查看容器状态:
bash
docker ps | grep maxkb
如果输出中 STATUS 列为 Up 状态,说明容器已成功启动。
**第五步:访问 MaxKB 后台。**在浏览器中访问 http://虚拟机IP:8080 进入 MaxKB 后台登录页面。默认登录信息如下:
- 用户名:admin
- 默认密码:MaxKB@123..
首次登录后,建议立即修改默认密码以保障系统安全。
8.3 在 MaxKB 中接入 Ollama 本地大模型
登录 MaxKB 后台后,需要先将 Ollama 部署的本地大模型添加到平台中,后续创建应用时才能调用该模型进行问答。具体操作步骤如下:
**第一步:进入模型管理页面。**在 MaxKB 后台左侧菜单中点击【模型管理】。
**第二步:添加模型。**点击【添加模型】按钮,在弹出的配置界面中,选择模型供应商为 Ollama,并填写以下关键信息:
- 模型名称:自定义名称,例如 qwen:7b。
- 模型类型:选择大语言模型。
- API 地址:填写 Ollama 服务的访问地址,例如 http://虚拟机IP:11434。
- 模型名称:填写 Ollama 中已下载的模型名称,例如 qwen:7b。
**第三步:校验连通性。**填写完成后点击【校验】按钮,系统会测试与 Ollama 服务的连通性。如果校验失败,请检查以下事项:
- 确认 Ollama 服务已启动:在虚拟机中执行 systemctl status ollama 查看服务状态。
- 确认 OLLAMA_HOST 已设置为 0.0.0.0:11434,允许外部访问。
- 确认虚拟机防火墙已放行 11434 端口,执行以下命令:
bash
firewall-cmd --permanent --add-port=11434/tcp
firewall-cmd --reload
**第四步:保存模型配置。**校验通过后点击【保存】按钮,即可在后续应用编排中使用该本地大模型。
8.4 创建企业知识库并上传文档
**第一步:创建知识库。**在 MaxKB 后台左侧菜单中点击【知识库】,进入知识库列表页面,点击【创建知识库】按钮。
**第二步:填写知识库信息。**在弹出的对话框中,输入知识库名称与描述,选择向量模型,并将知识库类型设置为通用型,然后点击【确定】完成创建。
**第三步:上传文档。**创建完成后,进入知识库详情页,通过拖拽或点击选择文件的方式上传企业内部文档。
MaxKB 支持多种文档格式,包括 Markdown、TXT、PDF、DOCX、HTML、XLS、XLSX、CSV 等。每次最多上传 50 个文件,单个文件不超过 100 MB。
**第四步:选择分段方式。**上传文档后,MaxKB 会自动对文档进行分段与向量化处理。分段方式支持智能分段与高级分段两种:
- 智能分段:系统根据文档标题结构自动逐级下钻分段,适合结构清晰的文档。
- 高级分段:用户可自定义分段标识符与分段长度,适合需要精细控制分段边界的场景。
建议在编写文档时,每个问题或知识点之间用空行隔开,这样便于 MaxKB 更准确地进行向量化与分段,提高后续问答的命中率。
8.5 创建应用并编排问答流程
**第一步:创建应用。**在 MaxKB 后台左侧菜单中点击【应用管理】,进入应用列表页面,点击【创建应用】按钮,选择高级编排类型,并填写应用名称与描述。
**第二步:进入编排画布。**新创建的应用会默认生成一个简易工作流,包含基本信息节点与开始节点。
**第三步:添加知识库检索节点。**在编排画布中,通过右上角的【添加组件】按钮,将【知识库检索】节点拖入工作流,并完成以下配置:
- 关联上一步创建的知识库。
- 设置检索模式(如向量检索或混合检索)。
- 设置相似度阈值(建议初始设置为 0.6,后续根据测试结果调整)。
- 设置引用分段数量(建议设置为 3-5 段)。
- 检索问题选择开始节点的用户问题。
**第四步:添加 AI 对话节点。**将【AI 对话】节点拖入工作流,并完成以下配置:
- 选择已接入的 Ollama 本地大模型(如 qwen:7b)。
- 设置角色与提示词,例如:你是一个企业知识助手,请根据以下知识库内容回答用户问题。
- 在提示词中引用知识库检索节点的输出结果。
**第五步:连线并发布。**将开始节点、知识库检索节点、AI 对话节点按顺序连线,确保数据流正确传递。编排完成后,点击右上角的【发布】按钮使应用生效。
**第六步:获取访问链接。**发布后即可获得该应用的公开访问链接,企业内部员工可以通过该链接与本地大模型进行知识问答。
8.6 命中测试与效果调优
应用发布后,建议先进行命中测试,验证知识库的检索效果。具体操作如下:
**第一步:进入命中测试页面。**在知识库详情页中,点击【命中测试】标签页。
**第二步:输入测试问题。**在输入框中输入一个典型的业务问题,例如:公司年假政策是什么?点击【测试】按钮,系统会展示命中的分段内容与相似度分数。
**第三步:分析测试结果。**根据测试结果,可以通过以下方式优化问答效果:
- 调整相似度阈值:如果回答不够准确,可以适当提高直接回答的阈值,例如设置为 0.9,确保只有高置信度的分段才会被直接引用。
- 优化分段内容:为每个分段补充更完整的问题描述与答案,提高检索命中率。
- 补充关联问题:在知识库中为常见问题提前配置关联问题,减少因表述差异导致的漏召回。
**第四步:反复迭代。**重复执行命中测试与调优操作,直到问答效果达到预期。通过以上调优,可以让本地大模型结合企业知识库给出更精准、更贴合业务场景的回答,显著降低通用大模型常见的幻觉问题。
8.7 应用场景与价值
利用 Ollama 与 MaxKB 构建的企业内部知识库,可以广泛应用于以下场景:
- 新人培训:将企业制度、产品文档与历史经验沉淀为知识库,新人可以随时向本地 AI 提问,快速熟悉业务。
- 技术支持:将常见故障与解决方案录入知识库,当员工遇到同类问题时,可以快速定位问题点并获得处理建议。
- 数据安全:所有数据均在本地流转与处理,无需上传云端,满足医疗、金融等对数据隐私有严格要求的行业规范。
通过日常积累,企业可以把所有人的智慧、经验与解决方案持续沉淀到本地知识库中,让 AI 真正成为员工的 24 小时指导老师,降低培训成本并提升整体工作效率。
8. 总结
本文详细介绍了在 Linux 虚拟机中部署 Ollama 的完整过程,包括环境准备、两种安装方式、模型下载与运行、环境变量配置以及常见问题排查。通过以上步骤,读者可以在自己的虚拟机中快速搭建一个可用的本地大模型服务。
Ollama 的部署只是本地大模型应用的第一步。后续可以结合 MaxKB 等开源知识库工具,将 Ollama 部署的模型与 RAG 技术结合,构建企业内部的智能问答系统,实现数据隐私保护与高效知识检索的完美结合。