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
安装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
最后检查是否所有容器都正常运行:
docker compose ps
docker compose ps
在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox 。
通过这些步骤,你应该可以成功在本地安装 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。
进入管理员初始化页面设置管理员账户,例:http://140.210.92.251:22609/install
注册后页面自动跳转http://140.210.92.251:22609/signin
定制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服务的相关信息,点击确定,如果无报错返回即添加成功:
创建一个通用型AI问答助手
依次单击工作室>创建空白应用,并为AI问答助手输入名称和描述,其他参数保持默认即可。
验证AI问答助手
现在您可以在页面输入问题以查看目前AI问答助手配置的最新效果。由于下图示例中调用的是一个通用型聊天机器人,所以只能进行简单对话,暂时还无法回答Dify相关的专业问题。
定制AI问答助手
通过前面的操作,您已经拥有了一个可以对话的AI问答助手。但是如果您想让AI问答助手像专业人士一样,更加精准且专业地回答相关的问题,您还需要为AI问答助手配置专属语料知识库。
创建知识库
依次单击知识库>创建知识库>创建一个空知识库>填入知识库名称(本文设置为贾维斯)>创建。
将整理好的文件dify_doc.md上传至知识库,如图:
单击下一步后,您可根据页面引导,进行文本分段与清洗。
此处的配置参数保持默认即可。知识库将自动为上传的文档进行清洗、分段并建立索引,以便后续AI问答助手在回答时检索参考。
编排并发布AI问答助手
为已创建的AI助手配置提示词并添加上下文知识库。
配置提示词:拷贝以下内容至提示词中。提示词用于对AI的回复做出指令和约束,可以提升AI问答助手的回答表现和结果准确性。
您将充当Dify的AI智能助手,专门解答客户关于Dify产品及其相关功能的问题。您的回答应基于已有的知识库内容,确保准确。如果客户的问题超出了您的知识范围,请坦诚告知他们您不知道答案,以保持信息的诚信。请以友好和亲切的语气与客户交流,可以适当地使用表情符号来提升互动体验。
您将充当Dify的AI智能助手,专门解答客户关于Dify产品及其相关功能的问题。您的回答应基于已有的知识库内容,确保准确。如果客户的问题超出了您的知识范围,请坦诚告知他们您不知道答案,以保持信息的诚信。请以友好和亲切的语气与客户交流,可以适当地使用表情符号来提升互动体验。
添加上下文知识库:单击上下文区域的添加,根据页面提示为AI问答助手配置的专属知识库,使AI问答助手获得精准且专业回答问题的能力。
在页面右上角单击发布>更新手动保存配置信息,使Dify服务的配置生效。
检验效果
相较于上文的通用型聊天机器人,配置了专属知识库的AI助手通过集成相关领域的知识库,能够提供更加专业、准确的信息和建议。