本地搭建带知识库的 AI 助手:Ollama + Open WebUI 部署指南
介绍如何在本地环境搭建支持知识库的 AI 助手。通过 Ollama 运行本地大模型(如 Qwen2.5),结合 Open WebUI 提供类 ChatGPT 的交互界面,并集成 RAG 技术实现文档检索增强。内容涵盖架构设计、硬件要求、Docker 部署步骤及 Python API 调用示例。方案确保数据隐私与离线可用,适合个人笔记或企业 FAQ 场景。

介绍如何在本地环境搭建支持知识库的 AI 助手。通过 Ollama 运行本地大模型(如 Qwen2.5),结合 Open WebUI 提供类 ChatGPT 的交互界面,并集成 RAG 技术实现文档检索增强。内容涵盖架构设计、硬件要求、Docker 部署步骤及 Python API 调用示例。方案确保数据隐私与离线可用,适合个人笔记或企业 FAQ 场景。

大模型已成为日常生产力工具,但使用网页版 ChatGPT / 文心一言等存在以下问题:
本地部署'AI + 知识库'的优势:
本文目标:从零开始,在本地搭建支持上传文档构建知识库(RAG)的 AI 助手。
系统核心组件如下:
nomic-embed-text、bge-m3。相比直接使用 transformers + PyTorch,Ollama 优势明显:
ollama pull qwen2.5:7b-instruct 即可运行,无需处理 GGUF、量化等细节。11434 端口提供 REST API,兼容 OpenAI 调用方式。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 对推理优化很好 |
经验值:7B 参数 INT4 模型约需 4~6GB 显存,13B 需 8~10GB,32B 需 16GB+ 显存。
以 Windows 为例:
安装完成后,执行:
ollama -v
若输出类似 ollama version is 0.5.4,则安装成功。
以 Qwen2.5 为例:
ollama pull qwen2.5:7b-instruct
ollama run qwen2.5:7b-instruct
首次运行会自动下载模型文件(约 4~5GB),等待完成后可输入问题测试。
验证安装:
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:指定 Ollama 服务地址。-v open-webui:/app/backend/data:持久化聊天记录和配置。--restart always:异常退出时自动重启。启动后访问:http://localhost:3000。
qwen2.5:7b-instruct 选项。RAG(Retrieval-Augmented Generation)= 检索 + 增强 + 生成:
好处:无需重新训练模型即可让模型'知道'私有资料,更新灵活。
需要嵌入模型进行向量检索,例如:
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])
利用这些接口可进行批量文档处理、自动总结、智能检索等。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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