本地搭建带知识库的 AI 助手:Ollama + Open WebUI 实践
一、为什么要在本地搭一个 AI 助手? 过去一年,大模型从'新奇玩意儿'迅速变成'日常生产力工具'。但如果你只用网页版 ChatGPT / 文心一言 / 通义千问,会碰到几个很现实的问题: **数据隐私**:公司内部文档、个人笔记、聊天记录,你敢全部塞到线上吗? **网络依赖**:在飞机上、高铁里,或者公司内网严格管控时,在线 AI 直接'失联'。 **额度与费用**:免费额度有限,稍微重度一点就…

一、为什么要在本地搭一个 AI 助手? 过去一年,大模型从'新奇玩意儿'迅速变成'日常生产力工具'。但如果你只用网页版 ChatGPT / 文心一言 / 通义千问,会碰到几个很现实的问题: **数据隐私**:公司内部文档、个人笔记、聊天记录,你敢全部塞到线上吗? **网络依赖**:在飞机上、高铁里,或者公司内网严格管控时,在线 AI 直接'失联'。 **额度与费用**:免费额度有限,稍微重度一点就…

过去一年,大模型从'新奇玩意儿'迅速变成'日常生产力工具'。但如果你只用网页版 ChatGPT / 文心一言 / 通义千问,会碰到几个很现实的问题:
本地部署一套'AI + 知识库'的好处就非常直观:
本系列文章的目标,就是带你从零开始,在本地搭一个类似 ChatGPT 的 Web 界面,并且支持上传文档构建知识库(RAG)的 AI 助手。
核心组件说明如下:
nomic-embed-text、bge-m3 等。核心流程:
浏览器 Web UI → Ollama 模型服务(本地大模型 Qwen2.5 + 嵌入模型)→ 向量知识库 → 问题向量化 → 构建上下文 → 检索结果 → 回答
对比直接用 transformers + PyTorch 自己搭一套推理服务,Ollama 的优势非常明显:
ollama pull qwen2.5:7b-instruct 就能拉取并运行模型,不需要自己处理 GGUF、量化、CUDA 等一堆细节。11434 端口提供 REST API,兼容 OpenAI 调用方式,方便后续写代码集成。实战经验:如果你只是想'先用起来',而不是做底层研究,Ollama 是目前性价比最高的选择之一。
Open WebUI 是目前社区最活跃的开源大模型 Web 界面之一,主要特点:
如果你主要写中文、需求偏通用对话和代码,推荐:
具体选多大规模,要看你的硬件配置(后面会详细讲)。
| 场景 | 推荐配置 | 说明 |
|---|---|---|
| 入门体验 | 16GB 内存 + RTX 3060/4060(8GB+ 显存) | 可以跑 7B~13B 的 INT4 量化模型 |
| 舒服使用 | 32GB 内存 + RTX 4070/4090(12GB+ 显存) | 可以跑 14B~32B 量化模型,并发更稳 |
| Mac 用户 | M1/M2/M3,16GB+ 统一内存 | Apple Silicon 对推理优化很好,体验接近中档 GPU |
一些经验值:7B 参数 INT4 模型大致需要 4~6GB 显存,13B 需要 8~10GB,32B 需要 16GB+ 显存。
为了让你有个整体预期,我们整个项目的路线大概是这样的:
以 Windows 为例(macOS / Linux 同理):
安装完成后,打开命令行,执行:
ollama -v
如果看到类似 ollama version is 0.5.4 的输出,就说明安装成功。
以 Qwen2.5 为例:
# 拉取模型
ollama pull qwen2.5:7b-instruct
# 运行模型(进入交互式对话)
ollama run qwen2.5:7b-instruct
第一次运行时,Ollama 会自动下载模型文件(约 4~5GB),等待下载完成即可。在交互界面里,你可以直接输入问题,测试模型是否正常工作。
如果你已经安装 Docker Desktop,可以跳过这一步。
验证安装:
docker -v
docker compose version
一个简单的启动命令示例(假设 Ollama 在本机 11434 端口):
docker run -d \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
参数说明:
-p 3000:8080:把容器内的 8080 端口映射到宿主机 3000。-e OLLAMA_BASE_URL:告诉 Open WebUI,Ollama 服务在哪里。-v open-webui:/app/backend/data:持久化聊天记录和配置。--restart always:容器异常退出时会自动重启。启动后,打开浏览器访问:http://localhost:3000,就能看到 Open WebUI 的登录界面。
qwen2.5:7b-instruct 的选项。接下来,就可以像用 ChatGPT 一样,和本地模型对话了。
简单来说,RAG(Retrieval-Augmented Generation)= 检索 + 增强 + 生成:
RAG 的好处是:
为了做向量检索,我们需要一个嵌入模型,比如:
# 拉取一个常用的嵌入模型
ollama pull nomic-embed-text
# 或
ollama pull bge-m3
Open WebUI 可以自动使用这些嵌入模型来构建知识库。
不同版本的界面略有差异,但大致流程类似:
如果你想把本地模型集成到自己的脚本或工具里,可以通过 Ollama 的 API 来调用。
import requests
OLLAMA_BASE = "http://localhost:11434"
def chat(prompt: str, model: str = "qwen2.5:7b-instruct"):
r = requests.post(
f"{OLLAMA_BASE}/api/chat",
json={
"model": model,
"messages": [{"role": "user", "content": prompt}],
"stream": False,
},
)
r.raise_for_status()
return r.json()["message"]["content"]
print(chat("用大白话解释一下什么是 RAG?"))
def embed(text: str, model: str = "nomic-embed-text"):
r = requests.post(
f"{OLLAMA_BASE}/api/embeddings",
json={"model": model, "prompt": text},
)
r.raise_for_status()
return r.json()["embedding"]
vec = embed("这是一段需要向量化的文本")
print(len(vec), vec[:5])
有了这些,你就可以自己写脚本做批量文档处理、自动总结、智能检索等。
当你把基础对话 + 知识库跑通之后,可以考虑这些进阶玩法:
这篇文章主要做了三件事:
接下来的文章,我会分别针对 Windows / macOS / Linux 不同系统的踩坑点、RAG 效果调优(分块策略、检索参数等)、Python 自动化脚本实战做更详细的拆解。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online