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
dify的API还在不断完善中,所以有可能需要直接操作数据库,可以把pg和weaviate和端口影射出来
db下添加
  ports:
    - "35432:5432"
pg的帐号密码
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify


weaviate下添加
  ports:
    - "8080:8080"
    - "50051:50051"

weaviate密钥
WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih



docker compose -p dify up -d
如果有问题可以删除重新创建docker compose -p dify down(只删除容器,不删除数据,新创建容器后数据还在)



执行成功后会启动这几个容器
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


diy 用户头像 》设置》模型供应商中 安装ollama,安装完成后添加模型


再创建知识库,嵌入模型选上一步添加的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(点开一个知识库到地址栏中找)



dify添加模型供应商
在安装ollama时如果提示Reached maximum retries (3) for URL https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/ollama:0.0.7@

通过是因为docker dns问题引起,在/etc/docker/daemon.json中添加配置"dns":["8.8.8.8","114,114,114,114"]重启docker

如果重启后网络正常,过段时间又不正常了,
执行sysctl net.ipv4.ip_forward确认输出是否为1。
若为0,需通过sysctl -w net.ipv4.ip_forward=1临时启用,
并在/etc/sysctl.conf添加net.ipv4.ip_forward=1永久生效
重启网络服务后该配置可能被重置,需检查系统服务是否覆盖此设置。


如果还提示init environment for plugin langgenius/ollama:0.0.7 failed too many times, you should consider the package is corrupted or your network is unstable
可能是因为重试次数太多了,在哪个日志里记录了,找不到记录的话,删除dify目录重新下载

要调用dify的API需要获取密钥
如果要访问知识库的接口,先创建一个知识库打开后在左下角有服务API,打开后有API 密钥
如果要访问应用先创建一个应用打开后在左上角有API访问,点开后右上有API密钥