跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

本地搭建带知识库的 AI 助手(Ollama + Open WebUI)

本地部署 AI 助手可解决数据隐私、网络依赖及费用问题。方案采用 Ollama 作为模型运行时,Open WebUI 提供类 ChatGPT 界面,结合 Qwen2.5 等大模型与向量知识库实现 RAG。步骤涵盖环境准备、模型拉取、容器部署、知识库构建及 Python API 调用。支持断网使用,数据不出本地,适合企业或个人私有化部署场景。

雾岛听风发布于 2026/4/8更新于 2026/7/2042 浏览
本地搭建带知识库的 AI 助手(Ollama + Open WebUI)

一文讲清楚:要选哪些工具、需要什么环境、整体架构长什么样,以及一步步实现到能用的程度。

一、为什么要在本地搭一个 AI 助手?

过去一年,大模型从'新奇玩意儿'迅速变成'日常生产力工具'。但如果你只用网页版 ChatGPT / 文心一言 / 通义千问,会碰到几个很现实的问题:

  • 数据隐私:公司内部文档、个人笔记、聊天记录,你敢全部塞到线上吗?
  • 网络依赖:在飞机上、高铁里,或者公司内网严格管控时,在线 AI 直接'失联'。
  • 额度与费用:免费额度有限,稍微重度一点就要付费,而且你也不知道自己的数据会不会被拿去训练。

本地部署一套'AI + 知识库'的好处就非常直观:

  1. 数据完全不出本地,满足隐私合规要求。
  2. 断网也能用,随时随地调取你的'第二大脑'。
  3. 可定制:可以给团队搭一个'企业 FAQ 助手',给自己搭一个'读书笔记助手'。

本文目标是在本地搭建一个类似 ChatGPT 的 Web 界面,并且支持上传文档构建知识库(RAG)的 AI 助手。

二、整体架构:我们要搭的是一个什么样的系统?

用一个简单的架构图来概括一下我们要做的事情:

调用 -> 浏览器 Web UI -> Ollama 模型服务 -> 本地大模型 Qwen2.5 -> 嵌入模型 -> 向量知识库 上传文档 -> 提问 -> 检索结果 -> 回答 -> 问题向量化 -> 构建上下文

核心组件:

  • Ollama:本地模型运行时,负责加载和调度大模型、嵌入模型,提供统一的 API。
  • Qwen2.5 系列 / DeepSeek-R1 等:本地对话大模型,作为'大脑'。
  • 嵌入模型(Embedding):把文本转成向量,用于知识库检索,比如 nomic-embed-text、bge-m3 等。
  • 向量数据库 / 向量索引:存储文档向量,负责相似度检索(Open WebUI 自带,也可以外接 Chroma、Milvus 等)。
  • Open WebUI:类 ChatGPT 的 Web 界面,支持对话、上传文档、配置知识库。

三、工具选型:为什么推荐 Ollama + Open WebUI?

3.1 大模型运行时:Ollama

对比直接用 transformers + PyTorch 自己搭一套推理服务,Ollama 的优势非常明显:

  • 跨平台:Windows / macOS / Linux 都有官方安装包,安装就是下一步下一步。
  • 一键拉模型:ollama pull qwen2.5:7b-instruct 就能拉取并运行模型,不需要自己处理 GGUF、量化、CUDA 等一堆细节。
  • 统一 API:默认在本地 11434 端口提供 REST API,兼容 OpenAI 调用方式,方便后续写代码集成。
  • 资源友好:支持 CPU / Apple Silicon GPU / NVIDIA GPU,自动检测并使用可用硬件加速。

实战经验:如果你只是想'先用起来',而不是做底层研究,Ollama 是目前性价比最高的选择之一。

3.2 Web 界面:Open WebUI

Open WebUI 是目前社区最活跃的开源大模型 Web 界面之一,主要特点:

  • 界面体验接近 ChatGPT:多轮对话、Markdown 渲染、代码高亮、历史记录管理。
  • 自带 RAG 知识库功能:不用写一行代码,就能在界面上上传文档、构建知识库。
  • 支持多用户:可以给团队部署,每个人有独立账号和空间。
  • 可扩展:支持接入多种模型后端(Ollama、OpenAI 兼容 API 等)。
  • 3.3 模型选择:Qwen2.5 / DeepSeek-R1 等

    如果你主要写中文、需求偏通用对话和代码,推荐:

    • Qwen2.5 系列:中文能力强,指令跟随稳定,社区使用非常广泛。
    • DeepSeek-R1 系列:推理和代码能力突出,适合'程序员向'场景。

    具体选多大规模,要看你的硬件配置(后面会详细讲)。

    四、硬件与系统环境:你的电脑够不够格?

    4.1 硬件建议(以消费级 PC 为例)
    场景推荐配置说明
    入门体验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+ 显存。

    4.2 系统与软件环境
    • 操作系统:Windows 10/11、macOS、主流 Linux 发行版都可以。
    • Docker(推荐):
      • Windows/macOS 安装 Docker Desktop。
      • Linux 安装 Docker Engine + Docker Compose。
    • Ollama:从官网下载安装即可。
    • (可选)NVIDIA 驱动 + CUDA:如果你有 N 卡,想用 GPU 加速,需要安装对应驱动和 CUDA 工具包(Ollama 会自动检测)。

    五、部署路线图:我们会分几步走?

    为了让你有个整体预期,我们整个项目的路线大概是这样的:

    1. 环境准备:安装 Ollama、Docker,验证基础环境。
    2. 本地模型跑通:通过 Ollama 拉取并运行一个对话模型(如 Qwen2.5:7b-instruct)。
    3. WebUI 部署:用 Docker 一键启动 Open WebUI,连接 Ollama。
    4. 基础对话体验:在浏览器里像用 ChatGPT 一样和本地模型聊天。
    5. 知识库搭建(RAG):上传文档,构建私有知识库,让模型'记住'你的资料。
    6. (可选)Python 调用 & 自动化:用代码调用本地模型,接入自己的工具链。

    六、第一步:安装 Ollama 并跑通本地模型

    6.1 安装 Ollama

    以 Windows 为例(macOS / Linux 同理):

    1. 打开官网:https://ollama.com/download。
    2. 下载 Windows 安装包,双击安装,一路'下一步'即可。

    安装完成后,打开命令行,执行:

    ollama -v 
    

    如果看到类似 ollama version is 0.5.4 的输出,就说明安装成功。

    6.2 拉取并运行一个对话模型

    以 Qwen2.5 为例:

    # 拉取模型
    ollama pull qwen2.5:7b-instruct
    # 运行模型(进入交互式对话)
    ollama run qwen2.5:7b-instruct
    

    第一次运行时,Ollama 会自动下载模型文件(约 4~5GB),等待下载完成即可。在交互界面里,你可以直接输入问题,测试模型是否正常工作。

    七、第二步:用 Docker 部署 Open WebUI

    7.1 安装 Docker

    如果你已经安装 Docker Desktop,可以跳过这一步。

    • Windows / macOS:到 Docker 官网下载 Docker Desktop 并安装。
    • Linux:按官方文档安装 Docker Engine 和 Docker Compose。

    验证安装:

    docker -v
    docker compose version
    
    7.2 启动 Open WebUI 容器

    一个简单的启动命令示例(假设 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 的登录界面。

    八、第三步:在 WebUI 里连接本地模型

    1. 注册 / 登录 Open WebUI(账号只存在本地,不会上传到云端)。
    2. 在界面中选择模型,你应该能看到类似 qwen2.5:7b-instruct 的选项。
    3. 如果看不到模型,可以在 Open WebUI 的设置里,检查 Ollama 连接地址是否正确,并点击'验证连接'。

    接下来,就可以像用 ChatGPT 一样,和本地模型对话了。

    九、第四步:搭建本地知识库(RAG)

    9.1 RAG 是什么,为什么需要它?

    简单来说,RAG(Retrieval-Augmented Generation)= 检索 + 增强 + 生成:

    1. 检索:根据用户问题,从知识库中找出最相关的文档片段。
    2. 增强:把检索到的内容塞进提示词,一起丢给模型。
    3. 生成:模型基于这些上下文生成回答。

    RAG 的好处是:

    • 不需要重新训练模型,就能让模型'知道'你的私有资料。
    • 可以随时更新知识库,比微调灵活得多。
    9.2 准备嵌入模型

    为了做向量检索,我们需要一个嵌入模型,比如:

    # 拉取一个常用的嵌入模型
    ollama pull nomic-embed-text
    # 或
    ollama pull bge-m3
    

    Open WebUI 可以自动使用这些嵌入模型来构建知识库。

    9.3 在 Open WebUI 里创建知识库

    不同版本的界面略有差异,但大致流程类似:

    1. 进入'知识库 / Documents'管理页面。
    2. 新建一个知识库,比如叫'我的技术笔记'。
    3. 上传本地文档:PDF、Word、Markdown、TXT 等。
    4. 系统会自动调用嵌入模型,对文档进行分片和向量化。
    5. 在对话时,把这个知识库挂载到当前会话,模型就会优先从这些文档里找答案。

    十、第五步:用 Python 调用本地模型(可选)

    如果你想把本地模型集成到自己的脚本或工具里,可以通过 Ollama 的 API 来调用。

    10.1 简单示例:对话
    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?"))
    
    10.2 简单示例:文本嵌入
    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])
    

    有了这些,你就可以自己写脚本做批量文档处理、自动总结、智能检索等。

    十一、进阶方向:这个项目还能怎么玩?

    当你把基础对话 + 知识库跑通之后,可以考虑这些进阶玩法:

    • 多模型管理:同时跑一个'通用对话模型' + 一个'代码专用模型'(如 Qwen2.5-Coder),在 WebUI 里按需切换。
    • 更专业的 RAG 工具:尝试 RagFlow、Dify 等更复杂的 RAG 平台,支持更精细的文档解析和多路召回。
    • 接入 IDE / 浏览器插件:把本地模型做成一个'智能助手',在编辑器里自动补全、在浏览器里总结网页。
    • 团队共享部署:把整套部署在公司内网服务器上,给团队统一用,实现'企业 FAQ 助手'。

    十二、小结

    这篇文章主要做了三件事:

    1. 讲清楚了为什么要在本地搭一个 AI 助手,以及它能解决哪些痛点。
    2. 给出了技术选型与整体架构,重点推荐了 Ollama + Open WebUI 这套组合。
    3. 梳理了从环境准备、模型部署、WebUI 搭建到知识库构建的完整路线图。

    目录

    1. 一、为什么要在本地搭一个 AI 助手?
    2. 二、整体架构:我们要搭的是一个什么样的系统?
    3. 三、工具选型:为什么推荐 Ollama + Open WebUI?
    4. 3.1 大模型运行时:Ollama
    5. 3.2 Web 界面:Open WebUI
    6. 3.3 模型选择:Qwen2.5 / DeepSeek-R1 等
    7. 四、硬件与系统环境:你的电脑够不够格?
    8. 4.1 硬件建议(以消费级 PC 为例)
    9. 4.2 系统与软件环境
    10. 五、部署路线图:我们会分几步走?
    11. 六、第一步:安装 Ollama 并跑通本地模型
    12. 6.1 安装 Ollama
    13. 6.2 拉取并运行一个对话模型
    14. 拉取模型
    15. 运行模型(进入交互式对话)
    16. 七、第二步:用 Docker 部署 Open WebUI
    17. 7.1 安装 Docker
    18. 7.2 启动 Open WebUI 容器
    19. 八、第三步:在 WebUI 里连接本地模型
    20. 九、第四步:搭建本地知识库(RAG)
    21. 9.1 RAG 是什么,为什么需要它?
    22. 9.2 准备嵌入模型
    23. 拉取一个常用的嵌入模型
    24. 或
    25. 9.3 在 Open WebUI 里创建知识库
    26. 十、第五步:用 Python 调用本地模型(可选)
    27. 10.1 简单示例:对话
    28. 10.2 简单示例:文本嵌入
    29. 十一、进阶方向:这个项目还能怎么玩?
    30. 十二、小结
    • 免费图片AI生成工具免费生成了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
    • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
    • 100+免费在线小游戏爽一把
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • MCP Server 案例:Excel 表格一键生成可视化图表 HTML 报告
    • 网络安全护网行动与红蓝对抗机制详解
    • Ubuntu 服务器安装 KingbaseES V009R002C012 数据库指南
    • Java 大数据赋能智能家居:设备联动与节能实践
    • 无人机 Remote ID Beacon 帧字段详解
    • AI 时代技术民主化:文科生为何成为最大受益者?
    • Git 2.53.0 Windows 版安装及 SSH 配置详解
    • GoView 低代码数据可视化平台实战:构建数据大屏
    • HarmonyOS6 RcIcon 组件最佳实践与性能优化
    • AI 对话页流式处理架构:Web Streams 与 Fetch API 实践
    • Python 网络爬虫技术基础与实战指南
    • 金融领域大模型应用现状、挑战与新质生产力发展
    • C# 字符串分割转换为整数数组或列表
    • Linux 基础开发工具
    • 基于 GLM-4.6V-Flash-WEB 的森林病虫害传播路径图像推断
    • 人工智能发展历程与现状分析
    • Java 浮点数精度陷阱与 BigDecimal 最佳实践
    • 网文作家 AI 写作技巧与效率提升
    • Python 实现 MCP 客户端调用高德地图天气查询示例
    • Python 实现 MCP 客户端调用高德地图天气查询示例

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online