通过阿里云Milvus和Dify平台构建RAG系统
本文为您介绍如何通过向量检索服务Milvus版(简称Milvus)和Dify平台构建RAG系统。
背景信息
RAG原理介绍
大语言模型常因知识局限而产生”幻觉“。检索增强生成(RAG)技术通过连接外部知识库,有效解决了这一痛点。要实现高效的RAG,一个强大的向量数据库至关重要。
本文将聚焦于Milvus,并借助低代码AI平台Dify,向您展示如何将二者无缝结合,快速搭建一个企业级的RAG应用,直观感受向量数据库在解决AI“最后一公里”问题上的核心价值。
关于Dify平台
Dify是开源人工智能应用开发平台,具有低代码的工作流和友好的用户界面的特点,其核心使命是通过将”后端即服务“(Backend-as-a-Service)与”大语言模型运维“(LLMOps)的理念深度融合,来彻底简化和加速AI应用的构建全过程。
作为一个全栈式的解决方案,Dify在后端层面,提供了稳定可靠的API服务、数据管理等基础设施,让开发者无需从零搭建;在LLM运维层面,提供了一个直观的可视化提示词编排界面,让复杂的提示工程变得简单高效。其内置的高质量检索增强生成(RAG)引擎,能够轻松连接企业文档、数据库等私有知识库,让大模型基于特定领域的知识进行回答,有效减少了信息幻觉,并确保答案的准确性和可追溯性。
前提条件
-
已创建Milvus实例。具体操作请参见快速创建Milvus实例。
-
已开通阿里云百炼服务并获得API-KEY。具体操作请参见获取APP ID 和 Workspace ID。
-
已安装Docker、Docker-Compose,具体操作请参见安装并使用Docker和Docker Compose。
操作流程
步骤一:安装Dify
-
请通过Git命令将开源Dify项目从GitHub克隆至本地。
git clone https://github.com/langgenius/dify.git -
进入部署目录备份.env配置文件。
cd dify/docker/ cp .env.example .env -
修改.env配置文件中以下配置信息。
# 向量存储引擎配置 VECTOR_STORE=milvus # 指定向量存储引擎为Milvus # Milvus连接信息 MILVUS_URI=http://YOUR_ALIYUN_MILVUS_ENDPOINT:19530 MILVUS_USER=YOUR_ALIYUN_MILVUS_USER MILVUS_PASSWORD=YOUR_ALIYUN_MILVUS_PASSWORD本文示例涉及以下参数,请您根据实际环境替换。
参数
说明
MILVUS_URIMilvus实例的访问地址,格式为
http://<公网地址>:<端口>。-
<公网地址>:您可以在Milvus实例的实例详情页面查看。 -
<端口>:您可以在Milvus实例的实例详情页面查看。默认为19530。
MILVUS_USER配置为创建Milvus实例时,您自定义的用户名。
MILVUS_PASSWORD配置为创建Milvus实例时,您自定义用户的密码。
-
-
启动Dify。
docker compose up -d --build[root@xxx /docker]# docker compose up -d --build [+] Running 15/15 ✔ Network docker_default Created ✔ Network docker_milvus Created ✔ Network docker_ssrf_proxy_network Created ✔ Container docker-db-1 Healthy ✔ Container docker-redis-1 Started ✔ Container docker-sandbox-1 Started ✔ Container milvus-etcd Started ✔ Container milvus-minio Started ✔ Container docker-ssrf_proxy-1 Started ✔ Container docker-web-1 Started ✔ Container docker-plugin_daemon-1 Started ✔ Container docker-worker-1 Started ✔ Container docker-api-1 Started ✔ Container milvus-standalone Started ✔ Container docker-nginx-1 Started重要由于网络原因,可能会导致您拉取Docker Hub镜像变慢,甚至下载失败。您可以配置阿里云镜像加速器拉取镜像,详情请参见官方镜像加速。
-
在浏览器中访问
http://127.0.0.1/地址,访问部署的Dify服务IP地址,设置管理员账号密码,并登录进管控台。说明如果是运行在远程服务器(例如,云服务器或虚拟机)上,则需要将
127.0.0.1替换为服务器的公网IP地址或域名,并确保网络能够正常访问。依次填写邮箱、用户名和密码(密码必须包含字母和数字,且长度不小于 8 位),单击设置完成管理员账户初始化。
步骤二:设置模型
-
登录成功后,单击右上角头像,在下拉菜单中选择设置。
-
在左侧选择模型供应商,右侧选择千问安装。
-
模型安装成功后,选择设置API-KEY,将提前准备好的百炼平台API-KEY 输入。
-
请根据实际情况配置系统模型设置。
在系统模型设置面板中,分别配置系统推理模型、Embedding 模型、Rerank 模型、语音转文本模型和文本转语音模型,完成后单击保存。
步骤三:创建知识库
-
单击上方的知识库,然后单击创建知识库。
-
数据源选择导入已有文本,您可以先单击阿里云Milvus简介下载示例数据,随后上传该示例数据。
-
修改相应参数,单击保存并处理。
其他保持默认的关键参数:索引方式选择高质量,检索设置选择向量检索,开启Rerank模型gte-rerank,Top K设为3,Score阈值设为0.5。
本文示例修改以下参数:
-
分段最大长度:设置为1024。
-
Embedding 模型:选择text-embedding-v1。
执行完成后,即可看到知识库创建成功。
页面显示 知识库已创建,文件 什么是向量检索服务Milvus版.md 嵌入完成(绿色对勾)。配置摘要:分段模式为 自定义,文本预处理规则为替换掉连续的空格、换行符和制表符,索引方式为 高质量,检索设置为 向量检索。单击 前往文档 可查看知识库详情。
-
步骤四:验证向量检索是否成功
登录阿里云Milvus控制台,选择您配置的Milvus实例,单击右上角Attu Manager进入Attu页面,可以看到对应的Collection数据已导入。更多操作,请参见Attu工具管理。
步骤五:验证RAG效果
-
单击上方工作室回到首页,选择从应用模板中创建。
-
在搜索框中搜索并使用Knowledge Retreival + Chatbot模板。
-
在弹出的对话框中,单击创建。
-
选择Knowledge Retrieval节点,知识库设置为上面步骤中创建的知识库。
工作流画布中节点连接顺序为 START → KNOWLEDGE RETRIEVAL → LLM(使用 qwen-max 模型)→ ANSWER,查询变量为
sys.query。 -
选择LLM节点,将模型设置为qwen-max。
-
单击右上角发布,选择单击发布更新。
-
单击运行,进入测试页面,输入一个与知识库内容相关的问题,即可获得相应的答案。