Dify 工作流编排和 Agent
Ollama 部署LLM和Embedding
DeepSeek 自然语言理解与生成
在同一台机器上同时启动 Ragflow 和 Dify。
首先是要修改冲突的端口号,例如这两个应用都默认的是80端口。改端口,Dify一般是修改docker-compose.yml,RagFlow修改docker-compose.yml和.env。
因为占用的80和443太常用,一般两个都改掉,修改Ragflow的docker-compose.yml改成另外一个端口。
ports:
- "580:80" # 容器80端口映射到主机580
- "5443:443" # 容器443端口映射到主机5443
修改dify/docker/.env(955行)
EXPOSE_NGINX_PORT=380
EXPOSE_NGINX_SSL_PORT=3443
当两个服务都启动后,其中一个服务的 Redis 容器会被删除,导致该服务无法正常访问。而且修改Redis端口号也不能解决这个问题。
是因为Docker Compose 未指定项目名称。Docker Compose 使用项目名称隔离不同的项目。默认情况,项目名称是 docker-compose.yml 文件所在目录的名称。由于 Ragflow 和 Dify 的 docker-compose.yml 文件都位于各自项目目录的 docker/ 目录下,导致两个服务的容器未能被有效隔离,从而引发冲突。最简单的就是Ragflow不改,启动Dify的时候用命令:dify启动时候要通过 -p 参数显式指定项目名称
启动dify
https://github.com/langgenius/dify.git
docker compose -p dify up -d
执行成功后会启动这几个容器
dify-nginx-1
dify-api-1
dify-worker-1
dify-plugin_daemon-1
dify-redis-1
dify-web-1
dify-sandbox-1
dify-db-1
dify-ssrf_proxy-1
dify-weaviate-1
https://github.com/infiniflow/ragflow.git
docker compose -f docker/docker-compose.yml up -d
执行成功后会启动这几个容器
ragflow-server
ragflow-minio
ragflow-mysql
ragflow-es-01
ragflow-redis
docker run -itd --name ollama --detach -p 21434:11434 --privileged ollama/ollama
登录ollama下载模型
docker exec -it --privileged=true -u root ollama /bin/bash
ollama run deepseek-r1
ollama pull bge-m3
ragflow创建知识库
登录http://localhost:580
先添加模型提供商
这里只添加嵌入模型就可以,上一步ollama安装的beg-m3
注意IP用宿主机的IP
再创建知识库,嵌入模型选上一步添加的beg-m3
注意切片方式,选中后右侧有说明。
到ragflow的API目录中创建一个密钥。
登录dify http://127.0.0.1:380
在知识库右上 点外部知识库API 添加一个外部知识库API 用ragflow中创建的密钥 http://192.168.1.201:9380/api/v1/dify
注意这里只是添加了API地址,没有指定具体的数据库
添加完成后点左左侧 连接外部知识库
在工作室中添加一个Chatflow,外部知识库ID填写ragflow的知识库ID(点开一个知识库到地址栏中找)