本文转自: https://blog.kelu.org/tech/2025/03/11/deploy-deepseek-qwq-open-webui-anythingllm-dify-on-macos.html
仅做个人收藏,版权归原作者所有
这篇文章记录我在 macOS 下使用 Ollama 安装 通义千问 QwQ-32B 推理模型/ DeepSeekR1-llama-70b 和下游三个软件 Open-webui/AnythingLLM/Dify 的过程,以备后续查阅。
我的 Mac studio 是 96G 的 M2 Max,macOS 15.2。日常使用我感觉 QwQ已经很不错了。
先给这篇文章的几个工具做简单的介绍:
-
ollama,一个简单易用的大语言模型的部署工具。
同类还有vLLM,吞吐量和扩展性更好,但生态较弱,部署相对复杂。
-
open-webui,一个web前端工具,用于对接ollama启动的大语言模型。
同类的还有 chatbox等客户端。
专业术语:
-
RAG
检索增强生成(RAG)
是一种将外部知识检索与大语言模型(LLM)相结合的技术
。传统的大语言模型虽然拥有丰富的知识,但知识更新可能不及时,或者在特定领域的知识储备不足。RAG 通过在生成回答之前,先从外部知识源(如文档数据库、网页等)中检索相关信息,然后将这些信息与用户的问题一起输入到大语言模型中,从而生成更准确、更具时效性的回答。
接下来是本地知识库搭建开源方案:
- AnythingLLM:开源企业级文档聊天机器人,支持本地部署和多用户权限管理,通过工作区隔离文档,确保数据隐私。适合注重隐私与定制化的企业级RAG应用。
- Dify:开源LLM应用开发平台,集成数百种模型,支持可视化工作流编排和高质量RAG引擎,覆盖对话与自动化场景。开发者友好,适合构建多样化AI应用。
- RAGFlow:端到端RAG引擎,以深度文档解析见长,支持表格、图片等复杂格式处理,提供可追溯的答案引用以降低幻觉。文档处理能力突出,适合高精度知识检索场景。
核心差异点:
维度 | AnythingLLM | Dify | RAGFlow |
---|---|---|---|
数据隐私 | 完全本地化,无数据外传 | 支持本地部署,但依赖部分云服务 | 本地部署为主,强调数据控制 |
开发门槛 | 低(开箱即用) | 中(需配置工作流与模型) | 高(需调整文档解析参数) |
文档处理能力 | 基础格式(PDF/TXT/DOCX) | 常规格式(PDF/PPT) | 复杂格式(影印件、表格、音频) |
定制化能力 | 有限(依赖预置模板) | 高(支持自定义工具与流程) | 中(需调整检索策略与切片规则) |
适用规模 | 中小型知识库 | 中大型企业应用 | 企业级复杂文档处理 |
也问了deepseek他们的区别,这是回答:
ollama
Ollama 是简单易用的LLM部署工具。正常安装即可:
ollama run deepseek-r1:70b
ollama run qwq
可以直接运行然后对话:
单请求qwq下占用显存大概20G,功率100W(平时待机8W)。
如果使用其他的UI客户端,则不需要run,只要把 ollama 应用打开就好了。
ollama可以简化我们使用大模型的安装问题。当然既然简化了,就说明它在生产环境上使用不如其他的工具强大。以下是一些其他替代工具,我有空也会研究下:
- LMDeploy,能够针对内存管理、并发处理和负载均衡等多个方面进行细致的优化。
- vLLM,vLLM通过 PagedAttention 高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。
open-webui
可以使用 open-webui 进行简单的问答。
参考官方文档运行pip安装的open-webui。由于我用miniconda管理python环境,所以需要先激活环境。如果你没有使用,则不需要关注第一行:
conda active pandas
open-webui serve
输入账号密码登录即可。左上角可以选择本机上的模型。
同类的我还使用 chatbox 和 浏览器的插件Page Assist
利用本地运行的AI模型,在浏览网页时进行交互.
Chatbox AI 是一款 AI 客户端应用和智能助手,支持众多先进的 AI 模型和 API,可在 Windows、MacOS、Android、iOS、Linux 和网页版上使用。
轻量级的桌面端工具,集成多种开源模型,支持离线问答,适合个人用户快速验证创意。
anythingllm
开源企业级文档聊天机器人,支持本地部署和多用户权限管理,通过工作区隔离文档,确保数据隐私。适合注重隐私与定制化的企业级RAG应用。
只是粗浅使用,我感觉效果不好,可能还要调整配置吧。先浅尝则止,到此为止了。官方文档。
上传文档:
几乎把我gpu和内存吃满了:
工作区中共享文档:
seve后pin一下:
就可以在当前工作区共享文档的内容了。
Dify
Dify 是一个开源的大语言模型(LLM)应用开发平台,融合了后端即服务(Backend as Service, BaaS)和 LLMOps 理念,旨在简化和加速生成式AI应用的创建和部署。它支持多种大型语言模型(如OpenAI的GPT系列、Claude3等),并提供强大的数据集管理功能、可视化的 Prompt 编排以及应用运营工具。
安装包括原生安装和容器安装两种方式。推荐使用容器安装,因为原生的组件太多辣:
- 数据库:PostgreSQL 或 MySQL。
- 缓存:Redis。
- 向量数据库:Weaviate。
- 代理服务:Nginx 或 Squid。
- Dify 源码运行:需配置 Python 环境、依赖库及前后端构建。
1. 安装
wget https://github.com/langgenius/dify/archive/refs/tags/1.0.0.zip
unzip 1.0.0.zip
cd dify-1.0.0/docker
cp .env.example .env # 修改端口等参数(可选)
国内拉不到docker.io,需要修改容器源的地址,拷贝内容到下图位置,重启docker:
"registry-mirrors":[
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1panel.live",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
执行启动命令:
docker-compose up -d
最终结果:
有一个比较奇怪的地方,我本机已经跑了nginx了。
brew services start nginx
也占用的80端口和443端口。但是挺奇怪,它和Dify的80/443竟然不冲突?!发现原来是因为docker监听的是ipv6地址,而我默认的nginx监听的是ipv4的地址:
lsof -i :80 -n -P
设置完成后就进入Dify了,右上角设置ollama内容:
配置Ollama信息:
2. 增加一个nomic-embed-text模型
nomic-embed-text,这是一个文本向量化的模型,做向量化检索时使用。
ollama pull nomic-embed-text
此时有两个模型了:
3. 创建知识库
-
选择数据源:
-
数据分段与清洗
-
处理
等待完成即可。
处理的时候占用的CPU/GPU/内存大概如下:
-
完成
4. 创建聊天助手
选择知识库,开始提问。明显感觉比anythingLLM靠谱。
5. 工作流
GitHub上有一些有趣的工作流,可以看看:Awesome-Dify-Workflow
RagFLow
1. 安装
wget https://github.com/infiniflow/ragflow/archive/refs/tags/v0.17.0.zip
unzip v0.17.0.zip
cd ragflow-0.17.0/docker
cp docker-compose-macos.yml docker-compose.yml
改一下docker-compose.yml 的 80和443端口,然后修改.env,将macOS的注释去了。
vi .env
增加一个环境变量:
export HF_ENDPOINT=https://hf-mirror.com
运行:
docker-compose up -d
参考文章:https://zhuanlan.zhihu.com/p/701768574
2. 修bug
看这个提示,似乎是不支持macOS?
没道理,我看这个bug他们已经修复了:https://github.com/infiniflow/ragflow/issues/5171
换了最新的版本v0.17.1,还有问题。又翻了下:有大佬给解决办法了,直接本地build这个基础镜像:
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
pip3 install huggingface_hub nltk
python3 download_deps.py
docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .
docker build -f Dockerfile -t infiniflow/ragflow:nightly .
docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .
ps:注意要git下载啊! nightly 的镜像还要拷贝 .git 目录,我服了。
下载有点狠,不知道要占用多少空间,本不富裕的Mac硬盘又要雪上加霜:
下载完了,开始build:
build好花时间啊。
3. 运行
4. 添加点文件
5. 添加模型
6. 待续
7. 待续
参考资料
- 深化知识管理:Ollama & AnythingLLM 打造专属全新的本地知识库管理系统
- DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
- RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
- Question: MAC OS (M3) ragflow The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested #4916