Skip to content

Dify 0.15.3 +Ollama 0.6.2 构建私有知识库

muliao.com选择镜像conda3_24.4.0_3.8.19-ubuntu20.04_11.8

ollama 0.6.2 使用官方linux部署脚本进行部署

本文部署dify版本为0.15.3(由于dify1.0版本之后,相关插件需要从marketplace.dify.ai单独下载安装,但是大陆网络不能访问!!!)

dify 0.15.3 使用docker进行部署

安装过程中参考文章内容

https://docs.dify.ai/getting-started/install-self-hosted/docker-compose

https://github.com/ollama/ollama/blob/main/docs/linux.md

安装Docker

在Ubuntu 20.04上安装Docker可以通过以下步骤完成:

更新软件包索引

打开终端并执行命令以确保你的软件包索引是最新的。

bash
sudo apt-get update
sudo apt-get update

安装一些必要的软件包,以便apt能够通过HTTPS使用仓库:

bash
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加Docker的官方GPG密钥

这一步是为了确保你从Docker下载的软件是安全可靠的。

bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置稳定的仓库

添加Docker的APT仓库到你的系统中。

bash
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再次更新软件包索引

因为你刚添加了一个新的仓库,所以需要再次更新软件包索引。

bash
sudo apt-get update
sudo apt-get update

从新添加的仓库中安装Docker CE

现在你可以安装最新的Docker版本了。

bash
sudo apt-get -y install docker-ce
sudo apt-get -y install docker-ce

验证Docker是否安装成功

安装完成后,运行下面的命令来确认Docker已经正确安装并且可以正常工作。

bash
sudo docker --version
sudo docker --version

(可选)修改docker的数据目录

默认docker的镜像和容器存储都在/var/lib/docker目录下,如果系统盘空间较小,建议将docker数据目录调整到其他可用空间更大的目,避免系统盘空间不足。详细操作步骤请查看Docker数据目录

安装Ollama

在Ubuntu 20.04上安装Ollama可以通过以下步骤完成:

执行如下命令进行Ollama安装,打开终端并执行命令。

curl -fsSL https://ollama.com/install.sh | sh
curl -fsSL https://ollama.com/install.sh | sh

返回如下提示,显示安装完毕。

bash
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
WARNING: systemd is not running
>>> NVIDIA GPU installed.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################################## 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
WARNING: systemd is not running
>>> NVIDIA GPU installed.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.

修改配置文件/etc/systemd/system/ollama.service,在[service]部分增加如下环境变量,以便其他服务可以直接访问ollama的api:

bash
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_HOST=0.0.0.0:11434"

启动ollama服务,并设置开机启动:

bash
systemctl status ollama 
systemctl start ollama 
systemctl enable ollama
systemctl status ollama 
systemctl start ollama 
systemctl enable ollama

修改配置文件,可以通过重启ollama生效

bash
systemctl daemon-reload 
systemctl restart ollama
systemctl daemon-reload 
systemctl restart ollama

拉去一个小模型qwen2.5:1.5b,使用提示词,验证ollama服务。

bash
ollama pull qwen2.5:1.5b
ollama pull qwen2.5:14b
ollama pull bge-m3
ollama run qwen2.5:1.5b
ollama pull qwen2.5:1.5b
ollama pull qwen2.5:14b
ollama pull bge-m3
ollama run qwen2.5:1.5b

安装Dify

克隆 Dify 源代码至本地环境。

# 假设当前最新版本为 0.15.3 
git clone https://github.com/langgenius/dify.git --branch 0.15.3
# 假设当前最新版本为 0.15.3 
git clone https://github.com/langgenius/dify.git --branch 0.15.3

启动 Dify

进入 Dify 源代码的 Docker 目录

cd dify/docker
cd dify/docker

复制环境配置文件

cp .env.example .env
cp .env.example .env

修改nginx访问端口

bash
cd /dify/docker
vi .env
# 修改EXPOSE_NGINX_PORT为虚拟机内部端口
EXPOSE_NGINX_PORT=8891
cd /dify/docker
vi .env
# 修改EXPOSE_NGINX_PORT为虚拟机内部端口
EXPOSE_NGINX_PORT=8891

修改端口后重新加载配置文件并重启docker

systemctl daemon-reload
systemctl restart docker
systemctl daemon-reload
systemctl restart docker

启动 Docker 容器

根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 docker compose version 命令检查版本,详细说明请参考 Docker 官方文档。

如果版本是 Docker Compose V2,使用以下命令:

docker compose up -d
docker compose up -d

如果版本是 Docker Compose V1,使用以下命令:

docker-compose up -d
docker-compose up -d

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

[+] Running 75/75       
 ✔ ssrf_proxy Pulled                                                  87.6s
 ✔ redis Pulled                                                       68.0s
 ✔ sandbox Pulled                                                     47.3s
 ✔ worker Pulled                                                     101.2s
 ✔ weaviate Pulled                                                    73.1s
 ✔ api Pulled                                                        101.2s
 ✔ nginx Pulled                                                       79.4s
 ✔ web Pulled                                                         54.8s
 ✔ db Pulled                                                          69.9s

[+] Running 11/11                                                     
 ✔ Network docker_default             Created                          0.0s
 ✔ Network docker_ssrf_proxy_network  Created                          0.0s
 ✔ Container docker-sandbox-1         Started                          2.0s
 ✔ Container docker-web-1             Started                          2.0s
 ✔ Container docker-redis-1           Started                          2.0s
 ✔ Container docker-ssrf_proxy-1      Started                          2.1s
 ✔ Container docker-weaviate-1        Started                          2.0s
 ✔ Container docker-db-1              Started                          2.0s
 ✔ Container docker-worker-1          Started                          0.6s
 ✔ Container docker-api-1             Started                          0.6s
 ✔ Container docker-nginx-1           Started                          0.8s
[+] Running 75/75       
 ✔ ssrf_proxy Pulled                                                  87.6s
 ✔ redis Pulled                                                       68.0s
 ✔ sandbox Pulled                                                     47.3s
 ✔ worker Pulled                                                     101.2s
 ✔ weaviate Pulled                                                    73.1s
 ✔ api Pulled                                                        101.2s
 ✔ nginx Pulled                                                       79.4s
 ✔ web Pulled                                                         54.8s
 ✔ db Pulled                                                          69.9s

[+] Running 11/11                                                     
 ✔ Network docker_default             Created                          0.0s
 ✔ Network docker_ssrf_proxy_network  Created                          0.0s
 ✔ Container docker-sandbox-1         Started                          2.0s
 ✔ Container docker-web-1             Started                          2.0s
 ✔ Container docker-redis-1           Started                          2.0s
 ✔ Container docker-ssrf_proxy-1      Started                          2.1s
 ✔ Container docker-weaviate-1        Started                          2.0s
 ✔ Container docker-db-1              Started                          2.0s
 ✔ Container docker-worker-1          Started                          0.6s
 ✔ Container docker-api-1             Started                          0.6s
 ✔ Container docker-nginx-1           Started                          0.8s

image-20250325142259295

最后检查是否所有容器都正常运行:

docker compose ps
docker compose ps

在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。

image-20250325150928461

通过这些步骤,你应该可以成功在本地安装 Dify。

更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

cd dify/docker 
docker compose down 
git pull origin main 
docker compose pull 
docker compose up -d
cd dify/docker 
docker compose down 
git pull origin main 
docker compose pull 
docker compose up -d

同步环境变量配置 (重要!)

如果 .env.example 文件有更新,请务必同步修改你本地的 .env 文件。

检查 .env 文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。

访问 Dify

进入管理员初始化页面设置管理员账户:

# Local environment
http://localhost/install

# Server environment
http://your_server_ip/install
# Local environment
http://localhost/install

# Server environment
http://your_server_ip/install

Dify网页界面地址:

# Local environment
http://localhost

# Server environment
http://your_server_ip
# Local environment
http://localhost

# Server environment
http://your_server_ip

因为前面将 .env 文件中EXPOSE_NGINX_PORT参数设置为8891 ,所以页面访问时用8891映射的外部端口22609。

image-20250325155505728

进入管理员初始化页面设置管理员账户,例:http://140.210.92.251:22609/install

image-20250325152932614

注册后页面自动跳转http://140.210.92.251:22609/signin

image-20250325155828355

定制Dify

直接编辑文件中的环境变量值.env。然后使用以下命令重新启动 Dify:

docker compose down
docker compose up -d
docker compose down
docker compose up -d

可以在 docker/.env.example 下找到完整的带注释的环境变量。

体验Dify

在Dify中接入Ollama创建AI问答助手

点右上角头像,在 设置 > 模型供应商 > Ollama ,设置ollama服务的相关信息,点击确定,如果无报错返回即添加成功:

image-20250325162524428

image-20250325162605174

image-20250325161403173

创建一个通用型AI问答助手

依次单击工作室>创建空白应用,并为AI问答助手输入名称描述,其他参数保持默认即可。

image-20250325165009634

验证AI问答助手

现在您可以在页面输入问题以查看目前AI问答助手配置的最新效果。由于下图示例中调用的是一个通用型聊天机器人,所以只能进行简单对话,暂时还无法回答Dify相关的专业问题。

image-20250325181415208

定制AI问答助手

通过前面的操作,您已经拥有了一个可以对话的AI问答助手。但是如果您想让AI问答助手像专业人士一样,更加精准且专业地回答相关的问题,您还需要为AI问答助手配置专属语料知识库。

创建知识库

依次单击知识库>创建知识库>创建一个空知识库>填入知识库名称(本文设置为贾维斯)>创建

image-20250325163806823

image-20250325164251918

将整理好的文件dify_doc.md上传至知识库,如图:

image-20250325180550078

单击下一步后,您可根据页面引导,进行文本分段与清洗

此处的配置参数保持默认即可。知识库将自动为上传的文档进行清洗、分段并建立索引,以便后续AI问答助手在回答时检索参考。

image-20250325180635334

image-20250325180704000

image-20250325180750795

编排并发布AI问答助手

为已创建的AI助手配置提示词并添加上下文知识库。

配置提示词:拷贝以下内容至提示词中。提示词用于对AI的回复做出指令和约束,可以提升AI问答助手的回答表现和结果准确性。

您将充当Dify的AI智能助手,专门解答客户关于Dify产品及其相关功能的问题。您的回答应基于已有的知识库内容,确保准确。如果客户的问题超出了您的知识范围,请坦诚告知他们您不知道答案,以保持信息的诚信。请以友好和亲切的语气与客户交流,可以适当地使用表情符号来提升互动体验。
您将充当Dify的AI智能助手,专门解答客户关于Dify产品及其相关功能的问题。您的回答应基于已有的知识库内容,确保准确。如果客户的问题超出了您的知识范围,请坦诚告知他们您不知道答案,以保持信息的诚信。请以友好和亲切的语气与客户交流,可以适当地使用表情符号来提升互动体验。

image-20250325175622850

添加上下文知识库:单击上下文区域的添加,根据页面提示为AI问答助手配置的专属知识库,使AI问答助手获得精准且专业回答问题的能力。

image-20250325175845426

在页面右上角单击发布>更新手动保存配置信息,使Dify服务的配置生效。

image-20250325180024121

检验效果

相较于上文的通用型聊天机器人,配置了专属知识库的AI助手通过集成相关领域的知识库,能够提供更加专业、准确的信息和建议。

image-20250325181200293