随着大语言模型(LLM)的浪潮席卷而来,许多开源工具与平台纷纷涌现,帮助开发者快速搭建自己的 AI 助手或应用。对于想要在本地或自托管环境中运行 LLM 的用户而言,Ollama 提供了一个无需 GPU、在 CPU 环境也可高效完成推理的轻量化"本地推理"方案。
在数字化信息爆炸的时代,如何有效地管理和利用海量的数据成为了企业和个人面临的重大挑战之一。幸运的是,随着大语言模型(LLM)的发展,一系列强大的开源工具应运而生,为解决这一问题提供了新的思路和方法。无论是想要构建一个高度定制化的个人知识管理系统,还是寻求一种解决方案来优化企业内部文档检索效率,市场上都有多种选择可供考虑。本文将深入探讨几款热门的开源项目------AnythingLLM、硅基流动API+Cherry Studio、Ragflow、Dify以及Open-WebUI,介绍它们各自的特点、适用场景以及如何与Ollama进行集成,帮助您找到最适合自己的知识库构建方案。通过本文的详细解析,希望能为您开启一段愉快且富有成效的知识管理之旅。
一. 搭建知识库的三种方式
-
本地部署DeepSeek+搭建知识库
- 优点:无需联网,数据隐私性强,完全免费;
- 缺点:对配置有一定的要求,基本上用不了DeepSeek-R1满血版;
- 适合对数据隐私需求比较高的企业;
-
API调用DeepSeek+搭建知识库
- 优点:方便,支持DeepSeek-R1满血版,可用大模型非常多;
- 缺点:需要消耗Tokens,长期使用会产生一定的费用;
-
直接使用DeepSeek+知识库一站式工具
- 优点:使用简单,支持DeepSeek-R1满血版,可以使用其他人共享的知识库;
- 缺点:PC端仅支持上传本地文件;
- 适合小白用户,不需要本地部署,就能快速拥有一个个人知识库,还完全免费。
二. 工具简介
1. Ollama 简介
Ollama 官网: Ollama
Ollama 的定位和特性:
- 本地推理:
- CPU 即可运行:适合 Mac 或 Linux 环境。
- 若无 GPU 的情况下,也能让开源模型(如 LLaMA、GPT-Neo、Mistral 等)跑起来。
- 轻量易用:
- 安装方式简洁,一键下载二进制文件或通过 Homebrew、pkg 安装。
- 只需一个命令行工具就能加载模型并进行对话、推理。
- 量化优化:
- 支持对常见大语言模型做 4-bit 或 8-bit 等量化,进一步降低资源占用。
- 发展活跃:
- 在 GitHub 上有不错的社区支持和更新节奏,适合初中级开发者快速上手。
2. AnythingLLM、Ragflow 、Dify、Open-WebUI 简介
2.1 AnythingLLM 简介
AnythingLLM 官网:anythingllm
- 定位:将本地文档或数据源整合进一个可检索、可对话的知识库,让 AI 助手"懂你"的资料。
- 主要功能:
- 文档管理:将 PDF、Markdown、Word 等多格式文件索引进系统。
- 智能检索:可基于向量数据库搜索相关文档片段,并在聊天时自动引用。
- 界面+API:既提供用户友好的前端管理界面,也能通过 API 与其他系统集成。
- 对接 Ollama 思路:
- 在配置文件或启动脚本中,将"语言模型推理"后端地址指定为 Ollama 的本地服务。
- 当用户发起提问时,AnythingLLM 会先做知识检索,再将检索到的上下文发送给 Ollama 做语言生成。
- 适用场景:
- 企业内部文档问答、个人知识管理、高度依赖文本内容的问答场景
2.2 Ragflow 简介
Ragflow 官网:ragflow.io
- 定位:Ragflow 是一个专注于提升基于检索增强生成(Retrieval-Augmented Generation, RAG)模型性能的平台,旨在通过高效的文档检索和上下文感知来增强语言模型的回答质量。
- 主要功能:
- 文档集成与处理:支持多种格式(如 PDF、DOCX、TXT等)的文件导入,并能进行预处理以优化检索效果。
- 高效检索引擎:内置向量数据库用于快速搜索相关文档片段,确保提供最相关的上下文信息给语言模型。
- 灵活的模型对接:用户可以选择不同的语言模型作为后端,包括开源模型(如 LLaMA、Mistral 等),并通过配置轻松切换
- 对接 Ollama 思路:
- 在 Ragflow 的设置中指定 Ollama 作为其后端语言模型之一,利用其本地服务地址(例如 localhost:port)进行通信。
- 当需要回答时,先通过 Ragflow 的检索系统找到相关内容,然后将这些内容连同用户的提问一起发送给 Ollama 进行最终答案生成。
- 适用场景:
- 高精度问答系统、知识库检索、企业级文档管理与查询等。
2.3 Dify 简介
Dify 官网:dify.ai
- 定位:多功能的 AI 应用构建平台,支持多种大语言模型,方便开发者快速搭建 ChatGPT-like 服> 务或插件化应用。
- 主要功能:
- 对话管理:可自定义对话流或应用场景,为不同场景配置不同模型或工作流。
- 插件扩展:支持将其他第三方服务或插件加入对话流程中,提高可用性。
- 多模型兼容:除 Ollama 外,也兼容 OpenAI API、ChatGLM 等其他模型。
- 对接 Ollama 思路:
- 在"模型管理"或"模型配置"界面/文件中,添加对 Ollama 的引用,可能需要指定本地运行地址(如 localhost:port)。
- 使用 Dify 的对话页面或 API 时,后台调用 Ollama 进行推理,再将结果返回前端。
- 适用场景:
- 多模型切换、多功能插件集成;需要可视化对话配置或工作流管理的团队与开发者。
2.4 Open-WebUI 简介
Open-WebUI 官网:openwebui
- 定位:社区驱动的网页版用户界面,针对多种本地模型提供可视化使用入口,类似一个"本地 ChatGPT 面板"。
- 主要功能:
- 浏览器聊天界面:在局域网或本机通过网页即可与模型交互。
- 支持多后端:LLaMA、GPT-NeoX 等,以及 CPU/GPU 等不同推理环境。
- 插件/扩展机制:在社区里可找到各式各样的扩展功能(如多语言 UI、模型切换、对话模板等)。
- 对接 Ollama 思路:
- 通常可在 Open-WebUI 的后台配置或启动脚本中,指定 Ollama 作为推理后端;
- 或使用适配 Ollama 协议的插件,让 Open-WebUI 调用 Ollama 进行对话。
- 适用场景:
- 需要"纯聊天 + 模型管理"界面的普通用户或开发者;想要单纯体验各种本地模型的人群。
3. 接入 Ollama 的异同
方面 | AnythingLLM | Ragflow | Dify | Open-WebUI |
---|---|---|---|---|
主要目标 | 本地知识库 + 向量检索 + AI 问答 | 智能检索增强 + 高效文档处理 + AI 回答 | 多场景对话管理 + 插件化扩展 | 纯聊天界面 + 多模型集成 |
对 Ollama 的集成方式 | 配置后端地址,将 Ollama 作为推理引擎 | 设置Ollama为后端语言模型,结合高效检索 | 配置"模型"选项,调用 Ollama 的本地 API | 使用后台插件或统一接口连接 Ollama |
使用门槛 | 中等,需要了解向量检索原理及一些配置 | 中等到高级,需要理解RAG流程及模型选择 | 较高,需要熟悉插件体系与多模型管理 | 较低,以网页 UI 为主进行模型选择和对话 |
文档/知识库支持 | 强:内置文档索引 + 检索 | 强:专为文档检索设计,优化了文档处理 | 通过插件或自定义场景支持(需要额外配置) | 默认弱,仅提供单纯对话,需要自行扩展 |
插件/扩展性 | 具备一定的检索扩展和 API 接口,插件生态相对较少 | 插件生态系统正在发展中,重点在于提高RAG效率 | 强:本身就是一个可插拔平台,可快速对接多服务 | 较为活跃,很多社区贡献的小功能或自定义脚本 |
可视化界面 | 提供基本管理与问答界面 | 提供直观的文档管理和检索界面 | 提供更丰富的对话流编排和配置界面 | 网页化聊天 UI,操作简便 |
应用场景 | 1. 企业文档问答 2. 个人知识管理 | 1. 高精度问答系统 2. 企业级文档管理 | 1. 多模型/多场景切换 2. 插件式客服/应用 | 1. 快速体验/切换本地模型 2. 个人聊天与测试 |
入门学习曲线 | 需要理解知识库+检索机制,但整体不算复杂 | 需要掌握RAG概念及其实现细节,适合有一定技术背景的用户 | 功能全面,但配置略复杂,适合有一定开发经验的团队 | 易上手,安装后打开网页即可使用 |
总结:
- AnythingLLM 更专注于文档知识库与问答场景,自带向量检索管理,可"多文档整合",接入 Ollama 后实现本地化问答。
- Ragflow 专注于智能检索增强(RAG),通过高效的文档检索和上下文感知提升语言模型的回答质量。它支持多种格式文件 的导入与预处理,并内置向量数据库以快速搜索相关文档片段。对于需要高精度问答系统和企业级文档管理的用户来说,Ragflow 提供了一个强大的平台。尽管其插件生态系统仍在发展中,但核心功能在于优化 RAG 效率,专注于提升检索准确性和回答质量
- Dify 功能多元,适合对话流管理、插件化扩展、团队协同等复杂需求。只要能在其后台正确配置 Ollama 地址,即可灵活调用。
- Open-WebUI 走纯粹聊天界面路线,你可以把它当做一个能"轻松切换模型、马上对话"的 Web 面板,如果只是想单纯体验 Ollama 的生成效果,Open-WebUI 也许是最方便的。
三. 本地部署 DeepSeek (Ollama)
1. 下载安装 Ollama
1.1 Ollama 官网
1.2 Ollama 安装
1.3 验证
安装完成之后,打开CMD,输入
ollama
2. 模型下载
2.1 询问 Deepseek 适合配置的模型
java
我的电脑有以下配置:
- CPU: AMD Ryzen 7 5800X
- GPU: None (仅 CPU 推理)
- 内存: 16GB RAM
- 存储: 500GB SSD
- 操作系统: Ubuntu 20.04
请问在这种情况下,我应该选择哪个 DeepSeek 模型进行本地部署?运行这些模型是否会对性能有较大影响?
我是直接将任务管理器中的配置复制进去
2.2 获取模型命令
再次打开 Ollama 网站,搜索
deepseek-r1
找到 Deepseek 推荐的模型
2.3 模型下载
在 cmd 中运行 刚刚复制的命令
ollama run deepseek-r1:1.5b
显示 success 则下载完成
2.4 验证模型
直接在 cmd 中对话即可
3. 配置环境变量
右键单击我的电脑 -> 高级系统设置 -> 环境变量 -> WIN 用户变量 -> 新建 :
输入变量名:
OLLAMA_HOST
变量值:
0.0.0.0:11434
注意 : 搭建知识库以及后续使用时,都需要让Ollama是运行的状态,不要退出 !!!
四. 知识库搭建:AnythingLLM + Ollama(本地部署)
1. AnythingLLM 下载安装
1.1 AnythingLLM 官网
1.2 AnythingLLM 安装
2. 创建知识库
2.1 更改 人工智能提供商-LLM首选项
2.2 更改 人工智能提供商-Embedder首选项
- 打开 cmd , 运行
ollama pull nomic-embed-text
命令 (安装向量模型)
- 更改向量模型
2.3 上传知识库内容
- 新建工作区
- 上传
它支持上传本地文件,也可以输入网页链接上传,所以不管是我们总结内化的文件,还是在网上刷到的有用的信息,都可以用来丰富知识库。
3. 使用知识库
3.1 更改工作区聊天设置
3.2 更改代理配置
3.3 询问知识库内容
4. 问题
4.1 Could not respond to message.An error occurred while streaming response. network error"
- 问题描述: AnythingLLM 上新建两个工作区,一个上传完自己的知识库后就会出现 "Could not respond to message.An error occurred while streaming response. network error"错误,另一个不上传自己的知识库就不会后错
- 问题图片:
- 问题原因:
- 解决办法:
- 提升电脑配置
- 或使用其他矢量数据库
- 问题总结:
- CPU不支持AVX2指令集,比如老的至强E5V2,不能使用默认的矢量数据库LanceDB,需要换别的矢量数据库 。
五. 知识库搭建:硅基流动API + Cherry Studio (API调用)
1. 获取 API 密钥
硅基流动官网:siliconflow
2. Cherry Studio 下载安装
Cherry Studio 官网:cherry-ai
3. 密钥设置
3.1 打开设置
3.2 输入密钥
输入完成后 点击检查
3.3 选择检测的模型
4. 模型嵌入
4.1 获取模型名称
硅基流动的官网,去配置一个嵌入模型。
嵌入模型可以将我们上传的文件转换成计算机容易理解的数字,然后储存到它的向量数据库中。我们在向它提问时,它就会通过RAG技术,在数据库中搜索相关的答案,最终输出给我们。
复制模型名称BAAI/bge-m3
4.2 Cherry Studio 添加嵌入模型
进入管理界面
5. 创建知识库
它支持文件形式非常多。
6. 搜索知识库
支持在知识库内搜索,并且会显示内容占比。方便我们随时查看知识库的内容。
7. 使用
在最下方的对话框选择DeepSeek-R1模型和刚才创建好的知识库,就可以开始使用了。
生成的回答会在最后显示引用内容以及具体引用的文档信息。
六. 知识库搭建:ima.copilot 一站式使用R1 + 知识库(直接使用)
1. 下载安装 ima.copilot
ima.copilot 官网: ima.copilot
2. 创建知识库
3. 使用知识库
4. 微信小程序互通
- 搜索小程序 ima 知识库
- 电脑端 与 小程序 使用同一微信登陆
七. 知识库搭建:Open-WebUI + Ollama(本地部署)
Open-WebUI 官网:openwebui
Open WebUI 需要 WebSocket 支持才能正常运行。确保您的网络配置允许 WebSocket 连接
1. 使用 python 下载安装 Open-WebUI (python && docker 选择其一)
1.1 python 下载安装
python 官网:python (自行安装)
Open-WebUI 官方文档:Python 3.11 是开发环境。Python 3.12 似乎可以工作,但尚未经过全面测试。Python 3.13 完全未经测试,使用风险自负。
bash
## 查看当前 Python 环境版本信息
## 运行 'python' 命令会启动 Python 解释器并显示其版本信息
python
## 退出 Python 解释器
## 在 Python 解释器中输入 'exit()' 可以退出解释器并返回到命令行
exit()
## 列出当前环境中已安装的所有 Python 包
## 使用 'pip list' 命令可以查看当前 Python 环境中已安装的所有包及其版本号
pip list
## 更新 pip 版本
python.exe -m pip install --upgrade pip
## 更换 pip 的镜像源为阿里云的镜像源以加速下载
## 使用 'pip config set global.index-url <URL>' 命令可以设置 pip 的全局镜像源
## 这里我们将 pip 的默认镜像源更改为阿里云提供的镜像源,以加快包的下载速度
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
1.2 安装 open-webui
bash
pip install open-webui
1.2.1 问题
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": visualstudio.microsoft.com/visual-cpp-...
-
问题描述:
运行
pip install open-webui
命令时候报错 Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": visualstudio.microsoft.com/visual-cpp-... -
问题图片:
-
问题原因:
在尝试安装 chroma-hnswlib 包时,由于缺少 Microsoft Visual C++ 14.0 或更高版本的构建工具而导致 wheel 构建失败。具体来说,该包的一部分需要编译一些C++代码,而你的系统中没有安装适当的Microsoft Visual C++ Build Tools来完成这项任务。
-
解决办法:
下载并安装 Microsoft C++ Build Tools:Microsoft C++ Build Tools
在安装过程中,确保选择"C++ build tools"工作负载(Workload)。
-
问题总结:
环境缺失
1.3 启动 Open WebUI
bash
open-webui serve
1.4 访问 Open WebUI
Open WebUI 本地网页:http://127.0.0.1:8080/auth
1.5 升级 Open WebUI
bash
pip install open-webui --upgrade
2. 使用 docker 下载安装 Open WebUI(python && docker 选择其一)
docker 官网: docker (自行安装)
2.1 Ollama 在同一台服务器上
bash
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
2.2 Ollama 在另一台服务器上
连接到另一台服务器上的Ollama时,请将OLLAMA_BASE_URL更改为服务器的URL
bash
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main
2.2 要运行支持 Nvidia GPU 的 Open WebUI
bash
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
2.3 与 Ollama 捆绑的 Open WebUI
此安装方法使用将 Open WebUI 与 Ollama 捆绑在一起的单个容器映像,从而允许通过单个命令简化设置。根据您的硬件设置选择合适的命令
- 支持 GPU
bash
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
- 仅适用于 CPU
bash
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
3. 配置 Open WebUI 的外部链接
4. 配置文档
配置 使用ollama 连接 配置文档embending 模型 ,
nomic-embed-text
模型也可以从ollama 下载
5. 创建知识库
6. 使用知识库模型
7. 使用知识库
八. 知识库搭建:Dify + Ollama(本地部署)
Dify 官网地址:difyai
Dify 官网文档:docs.dify.ai
Dify 项目 Github 地址:github.com/dify
1. 下载 Dify 项目
打开 Dify 项目 Github 地址:github.com/dify
bash
git clone https://github.com/langgenius/dify.git
2. 安装 Dify 环境
2.1 进入项目根目录找到 docker 文件夹
2.2 .env 文件重命名
2.3 打开命令窗口
2.4 运行 docker 环境
bash
docker compose up -d
回到docker桌面客户端可看到,所有dify所需要的环境都已经运行起来了
2.5 配置 Dify
浏览器访问:http://127.0.0.1/install
2.6 登录账号
3. 本地大模型与 Dify 关联
Dify 是运行在docker容器内部的,但是我们的ollama是运行在本地电脑的,但是他们是在同一台电脑上的,这就意味着,要想dify能够访问ollama提供的服务,需要获取到本地电脑的内网IP即可。
3.1 配置 docker文件下的 .env 文件
- 方式1 - 直接配置如下代码(方式1,2任选其一)
ini
# 启用自定义模型
CUSTOM_MODEL_ENABLED=true
# 指定 Ollama 的 API 地址(根据部署环境调整 IP)
OLLAMA_API_BASE_URL=http://host.docker.internal:11434
- 方式2:获取本机内网IP(方式1,2任选其一)
- 打开命令窗口,CMD
- 输入
ipconfig
找到 IPv4 网址
找到当前连接的网络适配器(如"无线局域网适配器 WLAN"或"以太网适配器")
- 修改 .env 文件
ini
# 启用自定义模型
CUSTOM_MODEL_ENABLED=true
# 指定 Ollama 的 API 地址(根据部署环境调整 IP)
OLLAMA_API_BASE_URL=http://192.168.0.10:11434
3.2 配置大模型
- 进入设置页面
- 安装大模型
- 添加 Ollama 模型
3.2.1 问题
点击保存接口超时(无响应)
- 问题描述:
点击保存接口超时,接口无响应,查看 docker compose log 文件发现报错
arduino
2025-02-19 01:55:32,831.831 ERROR [Dummy-35] [app.py:875] - Exception on /console/api/workspaces/current/plugin/tasks [GET]
api-1 | Traceback (most recent call last):
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 917, in full_dispatch_request
api-1 | rv = self.dispatch_request()
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
api-1 | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
api-1 | File "/app/api/.venv/lib/python3.12/site-packages/flask_restful/__init__.py", line 489, in wrapper
api-1 | resp = resource(*args, **kwargs)
api-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
-
问题图片:
-
问题原因:
github-issuesDify - v1.0 存在bug
-
解决办法:
在yaml文件里面把dify-api和dify-web版本改为0.5.13就可以,使用1.0.0.0-beta.1会出现上面的问题
改完后,docker 重新打包发布
- 问题总结:
1.0.bate 版本存在bug
3.3 设置系统模型
3.4 测试
3.4.1 创建空白应用
3.4.2 应用配置
3.4.3 配置当前应用的大模型
3.4.4 对话测试
4. 安装配置 Embedding 模型
4.1 安装 Embedding 模型
在部署 ollama 的服务器上 运行下面命令,安装 bge-m3 模型 (也可以选择其他模型)
可以根据自己的场景,在ollama上搜索"embedding"查询适合自己的嵌入模型。
bash
ollama pull bge-m3
4.2 配置 Embedding 模型
继续添加模型
5. 使用知识库
5.1 创建知识库
5.2 上传资料
5.3 保存并处理
5.4 测试知识库
九. 知识库搭建:RagFlow+ Ollama(本地部署)
1. 下载 RagFlow 项目
打开 RagFlow 项目 Github 地址:github.com/ragflow
bash
git clone https://github.com/infiniflow/ragflow.git
2. 安装 RagFlow 环境
2.1 进入项目根目录找到 docker 文件夹
2.2 修改 .env 文件内容
搜索
RAGFLOW_IMAGE
注释掉
RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0-slim
解开注释
RAGFLOW_IMAGE=infiniflow/ragflow:v0.17.0
2.3 打开命令窗口
2.4 运行 docker 环境
bash
docker compose -f docker-compose.yml up -d
耐心等待
成功
3. 注册登录
浏览器访问:http://127.0.0.1
4. 配置 Ollama 连接大模型
更改系统模型设置
5. 使用知识库
5.1 创建知识库
5.2 上传资料
解析资料