Dify与Milvus的组合,正在成为构建高效RAG知识库的热门选择。如果你正在探索如何让AI应用更聪明地“记住”并检索业务知识,这篇文章刚好可以帮你理清思路——从环境配置到部署验证,把集成过程拆开揉碎讲清楚。
概述
在Dify中集成Milvus向量库,本质上就是为了给RAG知识库提供高效的存储与检索能力。
Dify[1] 是一个开源平台,将Backend-as-a-Service与LLMOps融为一体,致力于简化人工智能应用的开发流程。它支持主流大语言模型,提供直观的提示词编排界面、高质量的RAG引擎以及灵活的Agent框架。借助低代码工作流和易用的API,无论是专业开发者还是非技术用户,都能将精力集中在创造真正的AI解决方案上,而非处理底层复杂性。简单来说,Dify类似于字节跳动推出的“扣子”平台,但功能更聚焦于企业级RAG场景。
Milvus则是一款专为大规模向量搜索而设计的开源向量数据库,由Zilliz开发维护。它能够高效处理亿级以上的向量数据存储与相似度检索,在图像检索、推荐系统、自然语言处理等场景中已是成熟方案。
集成
那么,Milvus究竟如何接入Dify平台以支撑RAG能力?Milvus天然设计为便于与各类中间件协同工作。以向量存储为例,在Dify的环境配置文件 .env.example 中,已经预置了多种向量库的支持,默认使用Wea viate。
而且Dify自带的 docker-compose 文件,早已将相应的中间件容器准备就绪。你只需指定配置,即可一键部署。
下载最新的Dify源码后,执行这几行命令即可:
cd docker
cp .env.example .env
docker compose --profile milvus up -d
如果Docker源没有问题,镜像会自动拉取并完成部署:
Milvus校验配置
在 .env 文件中,需要配置登录参数。因为默认的 MILVUS_AUTHORIZATION_ENABLED 设置为 true,即启用了权限校验。因此必须在 .env 中填入正确的账号信息,Dify启动后才能成功登录Milvus。
Milvus默认的账号密码为 root 和 Milvus,按如下方式配置即可:
Milvus UI安装
Attu[2] 是Milvus的一体化开源管理工具,提供图形化界面,通过点击即可查看集群状态、管理元数据、执行数据查询,操作非常直观。
使用Docker一键安装:
docker run -itd --restart=always -p 8787:3000 -e HOST_URL=http://localhost:8787 -e MILVUS_URL=10.195.230.253:19530 --name attu zilliz/attu:latest
- 其中
8787是我自行设定的本地端口,可替换为任意未被占用的端口。 MILVUS_URL需要改为你主机的实际IP地址(或服务器IP)。
这是第一种部署方式。我在自己的虚拟机中运行正常,但切换到公司内网机器时一直报 network error。后来换了一种思路:直接在Dify的 docker-compose.yaml 文件中添加Attu容器的配置,具体如下:
这样一来,Attu与Milvus的依赖关系就可以在同一个 docker-compose.yaml 中统一管理。
最后打开的界面及登录信息如下:
按照图中配置,地址填写自己的Milvus URL即可。
Dify知识库验证
在Dify的知识库模块中,新建一个知识库,配置信息如下:
大部分选项使用默认设置即可。分块长度可以设得小一些。我在NVIDIA A10上部署了bge的embedding模型和reranker模型。
最终,Dify显示的知识库信息如下:
而Milvus中的向量存储信息:
原理
整个过程的核心就是基于Docker将中间件编排起来,Dify通过 .env 配置文件读取权限信息,再借助程序内置的驱动连接到这些中间件(例如Milvus)。原理并不复杂,关键在于将环境变量和网络连通性调通。
