场景
你刷到了很多「本地跑大模型」的文章,想自己动手:把模型下载到电脑上,像用 ChatGPT 一样在浏览器里和它聊天,甚至微调一个自己的模型。但真正动手时发现全是坑:模型下不下来(连官方源超时)、不知道先装什么、装完不知道在哪打开、显卡/内存够不够也不清楚。
本组合包把这条路走通:ollama 负责模型下载与运行(一行命令跑模型,提供 OpenAI 兼容 API),open-webui 给你一个浏览器里的聊天界面,LLaMA-Factory 做本地微调。装完之后你得到的是:一个可以断网使用的本地聊天环境、一条把任意 HuggingFace/ModelScope 模型变成 ollama 模型的通路,外加一个本地知识库(RAG):把文档喂给 open-webui,让它基于你的资料回答(2026-08-30 实测全链路)。
组合成员 (4)
ollama(模型下载与运行底座)
下载:官方 https://ollama.com/download(install.sh / Windows 安装器 / macOS dmg);Linux 二进制 = GitHub Release 资产 `ollama-linux-amd64.tar.zst`(国内走 gh-proxy 前缀)
版本要求:>= 0.33.2(2026-08-29 最新 v0.33.2;旧版本 < 0.30 的 API/模型兼容性差,建议直接最新)
# Linux(官方脚本;国内 GitHub 直连慢时改用下方手动路径)
curl -fsSL https://gh-proxy.com/https://github.com/ollama/ollama/releases/latest/download/install.sh | sh
# 或手动:下载 tar.zst 解压(需 tar --zstd 或 zstd 工具)
curl -sL -o /tmp/ollama.tar.zst https://gh-proxy.com/https://github.com/ollama/ollama/releases/latest/download/ollama-linux-amd64.tar.zst
mkdir -p /tmp/ollama-bin && tar --zstd -xf /tmp/ollama.tar.zst -C /tmp/ollama-bin
/tmp/ollama-bin/bin/ollama --version # 预期输出: ollama version 0.33.2
open-webui(网页界面)
下载:官方 Docker 镜像 `ghcr.io/open-webui/open-webui`(GitHub latest v0.11.3,2026-08-31 发布,无 release 资产 = Docker/pip 形态);国内 ghcr 拉不动走 ghcr 镜像(ghcr.nju.edu.cn,2026-08-30 拉取实测 + 2026-09-01 插件域复测)
版本要求:>= 0.11.1(Docker tag 建议 `:main` 跟随最新;pip 形态硬性要求 Python 3.11~3.12,实测 3.14 装不上)
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data --name open-webui --restart always \
-e ENABLE_SIGNUP=true \
-e RAG_EMBEDDING_ENGINE=ollama \
-e RAG_EMBEDDING_MODEL=nomic-embed-text \
ghcr.nju.edu.cn/open-webui/open-webui:main
# 国内镜像:直接写 ghcr.nju.edu.cn(2026-08-30 实测拉取成功,镜像 7.16GB);官方 ghcr.io 慢时同前缀替换
LLaMA-Factory(本地微调工具)
下载:官方 PyPI(PyPI 包名 llamafactory;源码 GitHub hiyouga/LlamaFactory,最新 tag v0.9.5,2026-08-29);国内用清华镜像
版本要求:>= 0.9.5(Python >= 3.10;需 PyTorch 2.x,CUDA 版需先装对应 torch 轮子)
pip install llamafactory --index-url https://pypi.tuna.tsinghua.edu.cn/simple
llamafactory-cli version # 预期输出: LLaMA Factory 版本号(2026-08-30 实测 0.9.5)
nomic-embed-text(知识库 embedding)
下载:`ollama pull nomic-embed-text`(ollama 官方 registry,274MB,2026-08-30 实测约 45s/6.3MB/s);registry 拉不动时从 ModelScope 找 GGUF 导入(路径同 ollama 模型)
版本要求:latest(2026-08-30 实测 v0.32.x 配套正常)
ollama pull nomic-embed-text # 274MB,官方 registry(实测约 45s)
curl -s localhost:11434/api/embed -d '{"model":"nomic-embed-text","input":["测试"]}' # 预期输出: 768 维向量
方案总览
三个工具各管一段,互不抢活:
| 工具 | 管什么 | 为什么是它 |
|---|---|---|
| ollama | 模型下载、运行、API(底座) | 一行命令跑模型,自带 OpenAI 兼容 API,生态最大;模型文件标准化(GGUF) |
| open-webui | 浏览器聊天界面(配套) | 官方推荐的网页界面,Docker 一键起,多模型管理、知识库附件 |
| LLaMA-Factory | 本地微调/训练(可选重件) | 图形化/命令行双形态微调,国内教程多,支持 LoRA/全参 |
| nomic-embed-text | 知识库向量化(RAG 轻件,约 274MB) | 官方 registry 可拉,768 维向量;open-webui 知识库默认 embedding(实测) |
备选方案:只想本地聊天、不想要网页界面 → 只装 ollama(甚至可以用 llama.cpp 直接跑 GGUF);只想推理不想训练 → 跳过 LLaMA-Factory。安装顺序按依赖排:先底座(ollama),再界面(open-webui 连 ollama),最后训练工具(可选重件,避免 torch 大依赖拖慢前两步)。
快速开始
一键脚本由本文档自动生成(渲染后位于 pages/combos/combo-local-llm-finetune.sh),按官方下载源 + 国内镜像适配,逐条执行:
bash pages/combos/combo-local-llm-finetune.sh
- 装完你会得到:ollama 服务(端口 11434)+ 浏览器聊天界面(http://localhost:3000)+ 可选的微调命令行。
- 预计耗时:10-20 分钟。最大卡点 = open-webui 首次拉 Docker 镜像(约 3-4GB);ollama 二进制本体很小(约 1.4GB tar.zst 下载走 gh-proxy)。
- 前置条件:内存 ≥ 8GB(建议 16GB);磁盘 ≥ 20GB 空闲;open-webui 需要 Docker(可选:不装 Docker 可跳第 2 步,用 pip 形态)。
想弄明白每一步在干什么、装错了怎么恢复 → 看「逐步教学」。一键脚本出问题 → 按逐步教学手动执行定位。
逐步教学
第 1 步:装 ollama(模型底座,一切依赖它)
ollama 是整套环境的底座:模型文件由它管理(默认 ~/.ollama/models),模型由它运行,open-webui 也通过它的 API(11434 端口)聊天。所以第一步先装它。安装过程会下载官方脚本/二进制,并把 ollama 注册为后台服务——装完后 ollama 命令全局可用,服务自动常驻。
# Linux(官方脚本;国内 GitHub 直连慢时改用下方手动路径)
curl -fsSL https://gh-proxy.com/https://github.com/ollama/ollama/releases/latest/download/install.sh | sh
# 或手动:下载 tar.zst 解压(需 tar --zstd 或 zstd 工具)
curl -sL -o /tmp/ollama.tar.zst https://gh-proxy.com/https://github.com/ollama/ollama/releases/latest/download/ollama-linux-amd64.tar.zst
mkdir -p /tmp/ollama-bin && tar --zstd -xf /tmp/ollama.tar.zst -C /tmp/ollama-bin
/tmp/ollama-bin/bin/ollama --version # 预期输出: ollama version 0.33.2
预期输出: ollama version 0.33.2(或更高)
装好确认:
ollama --version能输出版本号;curl http://localhost:11434/api/version返回{"version":"0.33.2"}(服务已起)。
卡住怎么办:
- 下载超时/失败(国内 GitHub 直连慢)→ 换手动 tar.zst 路径(上面第二段),下载走 gh-proxy 前缀,通常能通。
tar --zstd报错(zstd 未装)→sudo apt install -y zstd后重试。- 服务没起来 →
ollama serve前台启动看日志;端口被占 →OLLAMA_HOST=127.0.0.1:11435 ollama serve换端口。
note: 模型下载默认走 ollama 官方 registry(国内可能超时);备选 = ModelScope 下载 GGUF 后用ollama create导入(2026-08-29 实测:qwen2.5-0.5b 491MB 下载 58.5s + create 导入 success + CPU 冒烟通过,实测复现日志(2026-08-29))。
note: Windows 用官方安装器(https://ollama.com/download/windows),WSL2 内与 Linux 同路径;macOS 用 Ollama-darwin.zip。
第 2 步:装 open-webui(浏览器聊天界面)
命令行 ollama run 能聊天,但界面简陋、没法管理多模型。open-webui 是 ollama 官方推荐的网页界面,Docker 形态最省心:镜像自带全部依赖,数据存在独立 volume(open-webui),删除容器不会丢聊天记录。这一步会拉一个约 7GB 的镜像(实测 7.16GB)——国内网络最大卡点在这一步,拉不动就换 ghcr 国内镜像前缀。命令里的三个环境变量是知识库(RAG)必需:ENABLE_SIGNUP=true(首次注册管理员)、RAG_EMBEDDING_ENGINE=ollama + RAG_EMBEDDING_MODEL=nomic-embed-text(embedding 走本地 ollama,不依赖境外模型下载)。
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data --name open-webui --restart always \
-e ENABLE_SIGNUP=true \
-e RAG_EMBEDDING_ENGINE=ollama \
-e RAG_EMBEDDING_MODEL=nomic-embed-text \
ghcr.nju.edu.cn/open-webui/open-webui:main
# 国内镜像:直接写 ghcr.nju.edu.cn(2026-08-30 实测拉取成功,镜像 7.16GB);官方 ghcr.io 慢时同前缀替换
预期输出: docker run 打印容器 ID;docker ps 里能看到 open-webui 状态为 Up。
装好确认:
docker ps | grep open-webui状态 Up;- 浏览器打开 http://localhost:3000 出现注册/登录页。
卡住怎么办:
- Docker 没装 → 先装 Docker(
curl -fsSL https://get.docker.com | sh或发行版包管理器),再回来跑这条命令。 - 镜像拉不动(ghcr.io 超时)→ 把镜像地址的
ghcr.io换成ghcr.nju.edu.cn(2026-08-30 实测可用);或等网络窗口(如代理开启时)重试。 - 端口 3000 被占 → 改宿主映射:
-p 3001:8080,浏览器开 http://localhost:3001。 - 界面连不上 ollama → 确认 ollama 服务在跑(第 1 步的 curl 检查);容器与宿主网络通过
host.docker.internal已打通,若改了 ollama 端口需在界面设置里改连接地址。
note: 容器内端口 8080,宿主映射示例 3000;首次启动拉镜像实测 7.16GB(2026-08-30,ghcr.nju.edu.cn 通道)。
note: 也可pip install open-webui(官方支持,未实测;依赖重,建议 Docker 形态)。
第 3 步:装 LLaMA-Factory(可选重件,只在要微调时装)
前面两步已经能本地聊天了。LLaMA-Factory 是「微调」专用:把公开模型在你自己的数据上再训练一版。这是可选重件——它拖入 PyTorch(几百 MB 到 4GB+ 的 CUDA 轮子,实测 torch 2.13.0 全家桶含 nvidia-* 依赖约 4GB),纯推理用户完全不需要。确认要微调再装,且要有 NVIDIA GPU + CUDA 环境(无 GPU 只能做推理级试用,训练不现实)。
pip install llamafactory --index-url https://pypi.tuna.tsinghua.edu.cn/simple
llamafactory-cli version # 预期输出: LLaMA Factory 版本号(2026-08-30 实测 0.9.5)
预期输出: LLaMA Factory 版本号(如 4.0.0 形态,未实测)
装好确认:
llamafactory-cli version输出版本号;python3 -c "import torch; print(torch.cuda.is_available)"输出True(有 GPU 时)。
卡住怎么办:
- torch 装不上/太慢 → 先装 CUDA 版 torch:
pip install torch --index-url https://download.pytorch.org/whl/cu12x(国内可用阿里云/清华 torch 镜像,推断未实测),再装 LLaMA-Factory。 - 无 GPU → 训练不现实,只用
llamafactory-cli chat跑推理级试用,或直接跳过本步。 - pip 超时 → 已带清华镜像;仍失败可加
-i https://mirrors.aliyun.com/pypi/simple换源。 - No space left on device(/tmp 为 tmpfs 时) → 实测 /tmp 内存盘仅 7.9G,torch CUDA 依赖 ~4GB 装不下;venv 建到磁盘分区(如
python3 -m venv ~/llamafactory-venv),并给 pip 指磁盘缓存/临时目录。
note: 微调训练需要 NVIDIA GPU + CUDA 环境;先装 CUDA 版 PyTorch 再装 LLaMA-Factory。
第 4 步:配知识库(RAG,可选但推荐)
你已经能本地聊天了。知识库是「让 AI 基于你自己的资料回答」:把文档/笔记喂给 open-webui,它会把文档切成小块、用本地 embedding 模型转成向量存起来,之后你提问时系统检索最相关的片段一起给模型(2026-08-30 实测:切分 → ollama embedding → 向量入库 → 检索命中全通)。
先装 embedding 模型(第 1 步的 ollama 里执行):
ollama pull nomic-embed-text # 274MB,官方 registry(实测约 45s)
curl -s localhost:11434/api/embed -d '{"model":"nomic-embed-text","input":["测试"]}' # 预期输出: 768 维向量
预期输出: {"embeddings":[[0.0x,... 共 768 个]]}(向量的前几个浮点数即可,说明模型可用)
然后在浏览器操作(http://localhost:3000,管理员登录):
- 左下角用户名 → 管理员面板 → 设置 → 检索:确认 Embedding 引擎 =
Ollama、模型 =nomic-embed-text(首次安装按第 2 步 env 已配好;旧数据卷升级场景需手动确认,见 FAQ)。 - 回到主界面 → 左侧「知识库」→ 新建知识库 → 上传你的文档(支持 md/txt/pdf 等;实测 md 正常)。
- 新开对话 → 输入框左侧「#」选择刚建的知识库 → 提问。回答会带引用标注。
note: 自动检索依赖模型的工具调用能力:0.5B 级小模型实测不触发检索(会给出幻觉答案),建议 ≥7B 且支持函数调用的模型;小模型场景可把关键内容直接写进提问。
note: 实测确认 embedding 模型名不要带ollama/前缀(open-webui 会原样传给 ollama 导致 404)。
装完验收(一步到位)
作用:装完跑下面一条命令块,全绿 = 本组合包就绪;某条失败 → 回「逐步教学」对应步骤定位。
ollama --version
curl -s http://localhost:11434/api/version
docker ps | grep open-webui
llamafactory-cli version
curl -s localhost:11434/api/embed -d '{"model":"nomic-embed-text","input":["验收"]}' | head -c 120
预期输出: ollama 0.33.2;api/version 返回版本;open-webui Up;llamafactory-cli 输出版本号;embed 返回 768 维向量(成员级 2026-08-29/30 实测;LLaMA-Factory 完整微调链路未实测)
注:open-webui 连不上 ollama 时确认 ollama 服务在跑(第 1 步 curl 检查);改过端口需在界面设置同步。
日常使用
启动与入口
- ollama:后台服务自动常驻(systemd 或
ollama serve);命令行入口ollama run <模型名>。 - open-webui:Docker 容器
--restart always自动拉起;浏览器入口 http://localhost:3000。 - LLaMA-Factory:命令行
llamafactory-cli;图形界面CUDA_VISIBLE_DEVICES=0 python -m llamafactory.webui。
常用操作
- 拉模型:
ollama pull qwen2.5:7b(走官方 registry;下不动 → ModelScope 下载 GGUF +ollama create导入,见 FAQ)。 - 跑模型:
ollama run qwen2.5:7b进入对话;或浏览器在 open-webui 里选模型直接聊。 - 看状态:
ollama list(已装模型)、ollama ps(正在运行的模型)、docker ps(界面容器)。 - 换模型/清理:
ollama rm <模型名>删除模型文件释放磁盘。 - 微调入口:
llamafactory-cli train --model_name_or_path <模型> --dataset <数据集>(详细参数见官方 README)。 - 知识库:open-webui 左侧「知识库」上传文档 → 对话时点「#」选知识库 → 基于文档问答(第 4 步)。
数据与目录
- ollama 模型:
~/.ollama/models(可用OLLAMA_MODELS环境变量改目录,方便放到大盘)。 - open-webui:Docker volume
open-webui(docker volume inspect open-webui看位置;备份 = 导出该 volume)。 - LLaMA-Factory:训练输出在你指定的输出目录(默认
output/),数据集在data/。
卸载与清理
按安装相反顺序卸载,最后清数据:
# 1. LLaMA-Factory(可选)
pip uninstall -y llamafactory
# 2. open-webui(容器 + 镜像 + 数据卷)
docker rm -f open-webui
docker rmi ghcr.io/open-webui/open-webui:main
docker volume rm open-webui
# 3. ollama(服务 + 二进制 + 模型)
sudo systemctl stop ollama && sudo systemctl disable ollama 2>/dev/null
sudo rm -rf /usr/local/lib/ollama /usr/local/bin/ollama /usr/lib/systemd/system/ollama.service
rm -rf ~/.ollama # 模型全在这里,删了不可恢复
提示:~/.ollama和open-webuivolume 是数据区,卸载前确认不需要聊天记录/模型文件——删了不可恢复。
安装顺序
- 先 ollama(底座)——模型下载/运行/API 都靠它;装完
ollama --version冒烟,ollama pull <模型>验证模型源(国内网络在此步最容易卡)。 - 再 open-webui(界面)——Docker 形态独立于 ollama 进程,通过 11434 端口连 ollama;先起 ollama 再起界面,界面才能自动发现模型。
- 最后 LLaMA-Factory(微调)——可选重件;只在确定要微调时装,避免 torch 大依赖拖慢前两步。
每步的"为什么 + 命令 + 装好确认 + 卡住怎么办"见「逐步教学」。
依赖警告
- 版本:ollama >= 0.33.2(旧版 < 0.30 API/模型兼容性差);open-webui >= 0.11.1(镜像
:main跟随最新);LLaMA-Factory >= 0.9.5(Python >= 3.10,PyTorch 2.x);nomic-embed-text latest(274MB)。 - 环境:
- 显卡驱动:NVIDIA 驱动要新(ollama 自带 CUDA 运行时,但驱动版本决定可用性);无 NVIDIA 卡 = CPU-only 推理(慢但能用);AMD 卡走 ROCm 资产(
ollama-linux-amd64-rocm.tar.zst,推断);Apple Silicon 走 MPS(macOS 原生支持)。 - 内存:建议 >= 16GB;Q4 量化模型约占用参数量一半内存(7B 模型 ≈ 4-5GB + KV cache);embedding 模型极小(0.3GB 内,可忽略)。
- 磁盘:模型文件 4-70GB(7B Q4 ≈ 4.5GB,70B Q4 ≈ 40GB+);装前
df -h确认,模型目录可用OLLAMA_MODELS改到大盘。 - 端口:ollama 默认 11434(
OLLAMA_HOST可改);open-webui 宿主映射 3000(容器内 8080);冲突时改映射。 - 系统差异:Linux(install.sh/tar.zst)、Windows(官方安装器,建议 WSL2)、macOS(dmg)。
- 冲突:三件套为泛计算机组合(非插件域收录条目),相互间无写面重叠(ollama 写
~/.ollama/、open-webui 写 Docker volume、LLaMA-Factory 写项目目录/venv,推断 compatible,未实测);与插件域条目无矩阵对子(超出收录面),但都占用 GPU 时需错峰(推断)。 - 国内网络:①ollama 二进制下载走 gh-proxy(直连慢);②模型拉取走 ollama registry(实测超时)——备选 ModelScope 下载 GGUF +
ollama create导入(实测通过);③open-webui 镜像走 ghcr.nju.edu.cn(实测 7.16GB);④embedding 模型 274MB 可走官方 registry(实测)或 ModelScope GGUF;⑤pip 一律清华镜像。最容易卡的三步 = 模型拉取、ghcr 镜像拉取、torch 大依赖。
FAQ
- 模型下不下来(ollama pull 一直超时)怎么办? → 别硬试。去 ModelScope 搜同名 GGUF 文件下载(国内快),写一个 Modelfile(
FROM /path/to/model.gguf),ollama create <名称> -f Modelfile导入。2026-08-29 实测:qwen2.5-0.5b 491MB 下载 58.5s + 导入成功 + CPU 冒烟通过。 - 没显卡能玩吗? → 能。CPU-only 推理可用(速度慢,7B Q4 大约每秒几个 token);但微调训练不现实(LLaMA-Factory 需要 NVIDIA GPU + CUDA)。
- Docker 装不了/不想装,open-webui 怎么办? → 用 pip 形态:
pip install open-webui && open-webui serve(官方支持,未实测;依赖重,建议优先解决 Docker)。 - open-webui 界面打不开? →
docker ps看容器是否 Up;看日志docker logs open-webui;端口被占用就换宿主映射端口重启。 - 知识库上传了文档但回答没引用/在瞎编? → ①检查 管理员面板 → 设置 → 检索:Embedding 引擎必须 = Ollama、模型 = nomic-embed-text(模型名不带
ollama/前缀);②确认 embedding 模型已装:ollama list有 nomic-embed-text;③小模型(0.5B 级)工具调用不可靠会不触发检索,换 ≥7B 模型或把关键内容写进提问。 - 模型占太多磁盘怎么办? →
ollama list看哪些模型在,ollama rm <不用的模型>释放;把OLLAMA_MODELS指到大盘再ollama pull新模型。
验证证据
每份组合包在隔离环境实测(冒烟 + 写面检查),未实测项在文中如实标注;实测日期见下方验证证据。
验证于 2026-08-30 · TTL 到期 2027-02-26(180 天)
- 实测(2026-08-29,WSL Ubuntu x86_64,Docker 29.1.3):ollama v0.33.2 二进制经 gh-proxy 下载(tar.zst 1422262024 bytes)→ apt 装 zstd 1.5.7 → tar --zstd 解压 → 冒烟全过:
ollama --version→ client version is 0.33.2;ollama serve启动正常(OLLAMA_MODELS 生效、端口 11434、blobs: 0);ollama listexit 0(空表);curl /api/version→ {"version":"0.33.2"}。实测复现日志(2026-08-29)。 - 实测(2026-08-29):ModelScope 下载 qwen2.5-0.5b GGUF(491MB,58.5s)→
ollama create导入 success → CPU 冒烟通过。实测复现日志(2026-08-29)。 - 未实测(如实标注):模型拉取(体积 4GB+,本环境大下载受限);open-webui 镜像运行(镜像 3-4GB);LLaMA-Factory 安装与微调(需 GPU/CUDA,本环境无 NVIDIA 卡);ghcr 国内镜像(推断路径,未验证)。
- 2026-08-30 全链路实测(升 verified):ollama(snap 0.32.14,ModelScope GGUF 导入 qwen2.5-0.5b + CLI 推理冒烟)+ open-webui(Docker,UI HTTP 200 + 发现 ollama 模型 qwen2.5-0.5b)+ LLaMA-Factory(pip 0.9.5,CUDA 可用 RTX 5070 Ti)。证据 实测复现日志(2026-08-30)。
- 实测(2026-08-30,RAG 全链路,实测复现日志(2026-08-30)):ollama 官方 registry 拉 nomic-embed-text(274MB/45s)→
/api/embed768 维归一化向量 → open-webui 切 ollama embedding(模型名须裸名,带ollama/前缀实测 404)→ 知识库建库/上传/切分/embedding 入库(1/1 items)→query/collection检索命中正确片段(metadata 回显 ollama+nomic-embed-text)。 - 实测限制(同上证据):open-webui 新版 RAG 走模型工具调用,qwen2.5-0.5b 不触发自动检索(输出幻觉);检索层本身验证通过,建议 ≥7B 模型或界面手动选知识库。
- 环境修复(同上证据):WSL 残留旧 dockerd(29.1.3)劫持 3000 端口问题已定位并清理(旧 daemon 已停用),不影响本组合包安装路径。
- 已知限制:snap 版 ollama 推理走 CPU(GPU 未暴露);LLaMA-Factory 未做完整微调(大流量另行安排);open-webui 镜像 ~7.16GB。