RAGFlow 本地知识库
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       


启动ragflow
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    

ollama直接用下载镜像启动
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(点开一个知识库到地址栏中找)