Docling + minio + Dify(企业级最佳实践)


#核心架构
--用户上传文件到knowledgeFile文件夹
--程序将文件转换为md格式
  --md文件存储到markdown文件夹
  --并将源文件移动到complete文件夹
  --中途会利用temp文件夹临时存储图片
--最后上传dify知识库后,markdown文件移动到difyKnowledgeFile文件夹
--RAG 检索


#基于Docker部署Docling服务
--文件格式转换服务
--创建docling文件夹》路径:\dify\docker\docling
--创建创建 docker-compose.yml 配置文件》在以上文件夹创建
  --修改以上配置文件如下
version: '3'
services:
  docling-serve:
    # 镜像选择,请参考下方的“镜像选择说明”
    image: quay.io/docling-project/docling-serve:latest
    container_name: docling-serve
    restart: unless-stopped
    ports:
      # 将宿主机的 5300 端口映射到容器的 5001 端口
      - "5300:5001"
    environment:
      - DOCLING_SERVE_ENABLE_UI=1   # 启用 Web UI
      - GRADIO_MCP_SERVER=True      # 启用 MCP 服务器,便于与AI Agent集成
--启动容器》docker compose up -d》此时可以看到服务器在下载依赖
--验证容器状态》docker compose ps》docling-serve 容器的状态为 Up则成功
--访问docling
  --docling主页》http://localhost:5300/ui/
  --docling接口清单》http://localhost:5300/docs,可在此确认服务调用地址
------------------------------------------------
#测试docling服务
--进入对应保持word文件的文件夹》cmd
--将文件转md格式》docling --to md xx.docx》发现里面的图片转成了base64字符串,这不符合要求
--将文件转md格式,同时将图片分离存储》docling xx.docx --to md --image-export-mode referenced》此时图片会单独保持在相同目录下的image文件夹内


#搭建基于docker的本地MinIO存储图片(推荐,私有化部署,无外网依赖)
--文件存储服务
--启动minlO》docker run -d \
-p 9000:9000 \
-p 9001:9001 \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
--restart=always \            #随机启动
-v D:/docker-minio-data:/data \            #将图片存储路径修改为D:/minio-data    
minio/minio server /data --console-address ":9001"
--minio api》http://localhost:9000
--minio后台》http://localhost:9001
--创建 Bucket》如dify-knowledge-images》设置为公开读(Public)》上传图片
--图片路径》http://localhost:9001/dify-knowledge-images/image_000001_xxx.png
------------------------------------------------
#打开minio的dify-knowledge-images的访问权限为download,这样外部可以引用
--运行并进入 mc 客户端容器》docker run -it --entrypoint=/bin/sh minio/mc
--在容器内配置连接你的 MinIO 服务器》mc alias set myminio http://host.docker.internal:9000 YOUR_ACCESS_KEY YOUR_SECRET_KEY
--使用 mc 命令修改存储桶的访问权限》mc anonymous set download myminio/your-bucket-name
--验证修改结果》mc ls myminio/your-bucket-name


#编写导入python脚本
------------------------------------------------
请编写一个python脚本,minio_upload.py,用于调用minio上传文件
#基本信息
--minio地址:http://10.158.100.19:9001
--登录账号密码:minioadmin/minioadmin
--存储桶名称:dify-knowledge-images
--文件路径:G:/商业公司工作资料/AAA/AI资料/python应用开发/知识库文档转MD格式/企业微信截图_17737382714831.png
#基本要求
--输出详细日志
--代码需有详细注释
------------------------------------------------
请编写一个python脚本,convert_to_md.py,调用基于docker部署的docling格式的转换,并替换图片为图片链接
#具体要求
1、脚本有一个输入参数,即文件路径,路径有默认值,可不输入
2、将文件转成markdown格式文件
3、将文件内的转成base64编码的图片用minio单独存储
3.1、存储图片到minio可调用minio_upload.py脚本,参数只有一个及文件路径,成功时将返回成功信息和上传文件的路径
3.2、将markdown文件内的图片替换成minio的图片路径
4、将markdown文件存储在markdownFile文件夹
5、将完成转换的原文件移动到complete目录
6、记录完整操作日志,日志存储在logs文件夹
7、代码需有完整注释
8、需要初始化的参数,统一列在一起
#基本参数
--docling文档解析地址:http://10.158.100.19:5300/v1/convert/file
--默认文件路径:./宝能第一空间店铺导购信息-海尔.docx
------------------------------------------------
请编写一个python脚本,files_to_md.py,遍历knowledgeFile文件夹内文件,将其一个个转换成markdown格式
#具体要求
--遍历knowledgeFile文件夹内文件
--调用convert_to_md.py进行文件格式转换
#基本信息
--convert_to_md.py,是将单个文件转成md格式并存储在markdownFile文件夹,并将原文件移动到complete文件夹,只有一个入参file_path
#基本要求
--输出详细日志
--代码需有详细注释


 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐