通过阿里云Milvus和Dify平台构建RAG系统

更新时间:
复制为 MD 格式

本文为您介绍如何通过向量检索服务Milvus版(简称Milvus)Dify平台构建RAG系统。

背景信息

RAG原理介绍

大语言模型常因知识局限而产生”幻觉“。检索增强生成(RAG)技术通过连接外部知识库,有效解决了这一痛点。要实现高效的RAG,一个强大的向量数据库至关重要。

本文将聚焦于Milvus,并借助低代码AI平台Dify,向您展示如何将二者无缝结合,快速搭建一个企业级的RAG应用,直观感受向量数据库在解决AI“最后一公里”问题上的核心价值。

关于Dify平台

Dify是开源人工智能应用开发平台,具有低代码的工作流和友好的用户界面的特点,其核心使命是通过将”后端即服务“(Backend-as-a-Service)与”大语言模型运维“(LLMOps)的理念深度融合,来彻底简化和加速AI应用的构建全过程。

作为一个全栈式的解决方案,Dify在后端层面,提供了稳定可靠的API服务、数据管理等基础设施,让开发者无需从零搭建;在LLM运维层面,提供了一个直观的可视化提示词编排界面,让复杂的提示工程变得简单高效。其内置的高质量检索增强生成(RAG)引擎,能够轻松连接企业文档、数据库等私有知识库,让大模型基于特定领域的知识进行回答,有效减少了信息幻觉,并确保答案的准确性和可追溯性。

前提条件

操作流程

步骤一:安装Dify

  1. 请通过Git命令将开源Dify项目从GitHub克隆至本地。

    git clone https://github.com/langgenius/dify.git
  2. 进入部署目录备份.env配置文件。

    cd dify/docker/
    cp .env.example .env
  3. 修改.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_URI

    Milvus实例的访问地址,格式为 http://<公网地址>:<端口>

    • <公网地址>:您可以在Milvus实例的实例详情页面查看。

    • <端口>:您可以在Milvus实例的实例详情页面查看。默认为19530。

    MILVUS_USER

    配置为创建Milvus实例时,您自定义的用户名。

    MILVUS_PASSWORD

    配置为创建Milvus实例时,您自定义用户的密码。

  4. 启动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镜像变慢,甚至下载失败。您可以配置阿里云镜像加速器拉取镜像,详情请参见官方镜像加速

  5. 在浏览器中访问http://127.0.0.1/地址,访问部署的Dify服务IP地址,设置管理员账号密码,并登录进管控台。

    说明

    如果是运行在远程服务器(例如,云服务器或虚拟机)上,则需要将127.0.0.1替换为服务器的公网IP地址或域名,并确保网络能够正常访问。

    依次填写邮箱用户名密码(密码必须包含字母和数字,且长度不小于 8 位),单击设置完成管理员账户初始化。

步骤二:设置模型

  1. 登录成功后,单击右上角头像,在下拉菜单中选择设置

  2. 在左侧选择模型供应商,右侧选择千问安装。

  3. 模型安装成功后,选择设置API-KEY,将提前准备好的百炼平台API-KEY 输入。

  4. 请根据实际情况配置系统模型设置

    系统模型设置面板中,分别配置系统推理模型Embedding 模型Rerank 模型语音转文本模型文本转语音模型,完成后单击保存

步骤三:创建知识库

  1. 单击上方的知识库,然后单击创建知识库

  2. 数据源选择导入已有文本,您可以先单击阿里云Milvus简介下载示例数据,随后上传该示例数据。

  3. 修改相应参数,单击保存并处理

    其他保持默认的关键参数:索引方式选择高质量,检索设置选择向量检索,开启Rerank模型gte-rerank,Top K设为3,Score阈值设为0.5

    本文示例修改以下参数:

    • 分段最大长度:设置为1024。

    • Embedding 模型选择text-embedding-v1。

    执行完成后,即可看到知识库创建成功。

    页面显示 知识库已创建,文件 什么是向量检索服务Milvus版.md 嵌入完成(绿色对勾)。配置摘要:分段模式为 自定义,文本预处理规则为替换掉连续的空格、换行符和制表符,索引方式为 高质量,检索设置为 向量检索。单击 前往文档 可查看知识库详情。

步骤四:验证向量检索是否成功

登录阿里云Milvus控制台,选择您配置的Milvus实例,单击右上角Attu Manager进入Attu页面,可以看到对应的Collection数据已导入。更多操作,请参见Attu工具管理

步骤五:验证RAG效果

  1. 单击上方工作室回到首页,选择从应用模板中创建

  2. 在搜索框中搜索并使用Knowledge Retreival + Chatbot模板。

  3. 在弹出的对话框中,单击创建

  4. 选择Knowledge Retrieval节点,知识库设置为上面步骤中创建的知识库。

    工作流画布中节点连接顺序为 START → KNOWLEDGE RETRIEVALLLM(使用 qwen-max 模型)→ ANSWER,查询变量为 sys.query

  5. 选择LLM节点,将模型设置为qwen-max。

  6. 单击右上角发布,选择单击发布更新

  7. 单击运行,进入测试页面,输入一个与知识库内容相关的问题,即可获得相应的答案。