前言
本篇文章介绍如何将Dify本地私有化部署,并且接入Ollama部署本地模型,实现在本地环境中部署和管理LLM,再结合cpolar内网穿透实现公网远程访问Dify。
Dify 它是一个开源 LLM 应用开发平台。拥有直观的界面结合了 AI 工作流、RAG 管道、代理功能、模型管理、可观察性功能等,可以快速从原型开发到生产。
Ollama 是一个本地推理框架,允许开发人员轻松地在本地部署和运行 LLM,例如 Llama 3、Mistral 和 Gemma。Dify 是一个 AI 应用开发平台,提供了一套完整的工具和 API,用于构建、管理和部署 AI 应用。
接下来在本地部署DIfy。
1. 本地部署Dify应用开发平台
本篇文章安装环境:Linux Ubuntu22.04
使用Docker Compose部署:Docker 19.03 或更高版本、Docker Compose 1.25.1或更高版本
安装Dify之前,请确保你的机器已满足最低安装要求:CPU>2 Core RAM>=4GB
克隆 Dify 源代码至本地环境:
git clone https://github.com/langgenius/dify.git
启动Dify:
进入 Dify 源代码的 Docker 目录
cd dify/docker
复制环境配置文件
cp .env.example .env
启动 Docker 容器
sudo docker compose up -d
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
最后检查是否所有容器都正常运行:
docker compose ps
然后打开一个新的浏览器,输入localhost,或者本机IP地址,可以看到进入到了Dify中。
设置管理员账号:填写邮箱、用户名、密码后,再重新登录一下
可以看到进入到了Dify的主界面当中
接下来配置ollama模型
2. 使用Ollama部署本地模型
打开一个新的终端,输入下方命令安装ollama
curl -fsSL https://ollama.com/install.sh | sh
运行 Ollama 并与 Llava 聊天
ollama run llava
注意:也可以部署deepseek
ollama run deepseek-r1:8b
启动成功后,ollama 在本地 11434 端口启动了一个 API 服务,可通过 http://localhost:11434 访问。
接下来回到Dify中,接入Ollama大语言模型工具。
3. 在Dify中接入Ollama大语言模型
如果Ollama作为systemd服务运行,应该使用systemctl设置环境变量:
通过调用sudo vim /etc/systemd/system/ollama.service编辑systemd服务。这将打开一个编辑器。
对于每个环境变量,在[Service]部分下添加一行Environment:
[Service]Environment="OLLAMA_HOST=0.0.0.0"
保存并退出
重载systemd并重启Ollama:
systemctl daemon-reload systemctl restart ollama
在Dify主界面,点击右上角个人名字圆圈,点击设置——模型供应商——Ollama
点击填入:
模型名称:llava
基础 URL:http://<本机IP地址>:11434
此处需填写可访问到的 Ollama 服务地址。
若 Dify 为 docker 部署,建议填写局域网 IP 地址,如:http://192.168.1.100:11434 或 docker 宿主机 IP 地址,如:http://172.17.0.1:11434。
若为本地源码部署,可填写 http://localhost:11434。
模型类型:对话
模型上下文长度:4096
模型的最大上下文长度,若不清楚可填写默认值 4096。
最大 token 上限:4096
模型返回内容的最大 token 数量,若模型无特别说明,则可与模型上下文长度保持一致。
是否支持 Vision:是
当模型支持图片理解(多模态)勾选此项,如 llava。
点击 “保存” 校验无误后即可在应用中使用该模型。
然后再回到主页面当中,点击创建空白应用
选择聊天助手,起一个名字,点击创建
右上角选择llava模型
在文本框中编辑文字即可进行对话
接下来就到了该项目的另一个应用场景了,就是本地搭建AI知识库。
点击Dify最上方知识库
上传makdown的几个教程文章,作为知识库的数据源
配置大模型
三)设置系统模型
到此,dify就与前面部署的本地大模型关联起来了
六、创建一个应用
一)创建空白应用
二)应用配置
三)配置当前应用的大模型
四)测试
这表明,dify与本地部署的大模型deepseek-r1连通了,但是,我想让他的回答是基于我的私有知识库作为上下文来和我聊天怎么办?这就需要用到本地知识库了
七、创建本地知识库
一)添加Embedding模型
1、为什么要添加Embedding模型?
Embedding模型的作用是将高维数据(如文本、图像)转换为低维向量,这些向量能够捕捉原始数据中的语义信息。常见的应用包括文本分类、相似性搜索、推荐系统等。
我们上传的资料要通过Embedding模型转换为向量数据存入向量数据库,这样回答问题时,才能根据自然语言,准确获取到原始数据的含义并召回,因此我们需要提前将私有数据向量化入库。
2、下载 Embedding 模型
复制代码
ollama pull bge-m3
Embedding 模型那么多,为什么选择 bge-m3 ?
BGE (BAAI General Embedding) 专注于检索增强llm领域,经本人测试,对中文场景支持效果更好,当然也有很多其他embedding模型可供选择,可以根据自己的场景,在ollama上搜索“embedding”查询适合自己的嵌入模型。
3、配置 Embedding 模型
二)创建知识库
三)上传资料
四)保存并处理
五)知识库创建完成
八、添加知识库为对话上下文
一)应用内添加知识库
回到刚才的应用聊天页面,添加知识库
二)保存当前应用设置
如果只是当前应用内调试可以不必更新,但是如果想把当前应用发布为对外api服务或者持久化保存,就需要保存当前应用设置,记得实时保存当前设置。
二)测试
思考过程具有浓厚的deepseek风格,就好像真的有一个很认真的人在翻看文档一样,它把自己翻看文档的过程,清晰的展示了出来,最后给出自己的结论,非常严谨。如果是个特定的学术知识库,他一定还能帮你推演,思考,总结,非常方便。