基于EAS&Milvus搭建RAG检索增强对话系统

您可以在部署大模型RAG服务时集成阿里云Milvus版向量检索引擎,来增强模型生成答案的准确性和信息丰富度。阿里云Milvus版在开源Milvus版本的基础上集成了Zilliz商业版内核,支持大多数涉及向量搜索的场景,同时还提供了图形化数据库管理工具,可以高效管理数据库、集合(Collection)以及索引(Index)等,有助于提升RAG对话系统的质量和用户体验。本文为您介绍如何使用EAS与阿里云Milvus版构建一个大模型RAG对话系统,以及如何使用RAG对话系统。

背景信息

EAS简介

EAS(Elastic Algorithm Service)是PAI的模型在线服务平台,支持将模型部署为在线推理服务和AI-Web应用。EAS提供了弹性扩缩容和蓝绿部署等功能,可以支撑您以较低的资源成本获取高并发且稳定的在线算法模型服务。此外,EAS具备资源组管理和版本控制等功能,并且有完整运维监控体系等能力。更详细的内容介绍,请参见EAS模型服务概述

RAG简介

随着AI技术的飞速发展,生成式人工智能在文本生成、图像⽣成等领域展现出了令人瞩目的成就。然而,在广泛应用大语⾔模型(LLM)的过程中,⼀些固有局限性逐渐显现:

  • 领域知识局限:大语言模型通常基于大规模通用数据集训练而成,难以针对专业垂直领域提供深入和针对性处理。

  • 信息更新滞后:由于模型训练所依赖的数据集具有静态特性,大模型无法实时获取和学习最新的信息与知识进展。

  • 模型误导性输出:受制于数据偏差、模型内在缺陷等因素,大语言模型可能会出现看似合理实则错误的输出,即所谓的“大模型幻觉”。

为克服这些挑战,并进一步强化大模型的功能性和准确性,检索增强生成技术RAG(Retrieval-Augmented Generation)应运而生。这一技术通过整合外部知识库,能够显著减少大模型虚构的问题,并提升其获取及应用最新知识的能力,从而实现更个性化和精准化的LLM定制。

Milvus简介

阿里云向量检索服务Milvus版,是一款全托管向量检索引擎,确保了与开源Milvus的完全兼容性,并支持无缝迁移。它在开源版本的基础上,集成Zilliz商业版内核增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。相比于开源Milvus,目前阿里云Milvus版的优势可以总结为五点,分别是易用性、可用性、安全性、低成本与生态优势。阿里云Milvus版可以支持大多数涉及到向量搜索的场景。例如检索增强生成RAG、搜索推荐以及多模态检索等。更详细的内容介绍,请参见向量检索服务Milvus

使用流程

EAS自建了RAG系统化解决方案,提供了灵活可调的参数配置,您可以通过WebUI或者API调用RAG服务,定制自己专属的对话系统。RAG技术架构的核心为检索和生成:

  • 在检索方面,EAS支持多种向量数据库,包括开源的Faiss和阿里云的产品Milvus、Elasticsearch、Hologres、OpenSearch以及AnalyticDB for PostgreSQL。

  • 在生成方面,EAS支持丰富的开源模型,如通义千问、Llama、Mistral、百川等,同时支持ChatGPT调用。

本方案以Milvus为例,为您介绍如何使用EAS与阿里云Milvus版构建一个大模型RAG对话系统。整体流程大约花费20分钟,具体流程如下:

  1. 准备向量检索库Milvus

    首先创建Milvus实例,并准备部署RAG服务关联Milvus实例时依赖的配置项。

  2. 部署RAG服务并关联Milvus

    EAS模型在线服务平台部署RAG服务,并关联Milvus实例。

  3. 使用RAG对话系统

    您可以在RAG对话系统中连接Milvus,上传企业知识库文件,并进行知识问答。

前提条件

已创建专有网络VPC、交换机和安全组。具体操作,请参见搭建IPv4专有网络创建安全组

注意事项

本实践受制于LLM服务的最大Token数量限制,旨在帮助您体验RAG对话系统的基本检索功能:

  • 该对话系统受制于LLM服务的服务器资源大小以及默认Token数量限制,能支持的对话长度有限。

  • 如果无需进行多轮对话,建议您在RAG服务的WebUI页面关闭with chat history功能,这样能有效减少达到限制的可能性。详情请参见如何关闭RAG服务的with chat history功能

准备向量检索库Milvus

向量检索Milvus已开启免费公测,预计于20240930日结束。您可以在向量检索服务Milvus版控制台,进入Milvus页面创建入门版的实例。

更多详细介绍,请参见向量检索服务Milvus版免费公测说明

步骤一:创建阿里云Milvus实例

登录阿里云Milvus控制台,进入阿里云Milvus实例列表页面中创建Milvus实例,其中关键参数配置说明如下,其他配置详情,请参见快速创建Milvus实例

参数

描述

地域和可用区

实例所在的物理位置和可用区。请选择与EAS服务相同的地域。

用户密码

设置Milvus实例的root账号密码以登录数据库。

重要

请牢记您设定的密码,目前无法更改。

步骤二:准备配置项

  1. 查询访问地址和代理端口。

    1. 登录阿里云Milvus控制台,在阿里云Milvus实例列表页面中,单击已创建的实例名称。

    2. 实例详情页签的访问地址区域,分别单击内网地址Proxy Port后的复制按钮,将内网地址和端口号保存到本地。

  2. 准备Milvus实例的账号和密码。

    Milvus实例的账号默认为root,密码是您在创建Milvus实例时设置的用户密码,目前不支持更新。

  3. 准备数据库和Collection。

    • 创建Milvus实例时,系统会默认创建数据库default。您也可以手动创建新的数据库,具体操作,请参见管理Databases

    • 无需准备Collection,后续您在部署RAG服务时,使用新的Collection名称或已存在的Collection名称。对于已存在的Collection,Collection结构应符合PAI-RAG要求,例如可以填写之前通过EAS部署RAG服务时自动创建的Collection。

部署RAG服务并关联Milvus

  1. 进入模型在线服务(EAS)页面。

    1. 登录PAI控制台

    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。

    3. 在工作空间页面的左侧导航栏选择模型部署 > 模型在线服务(EAS),进入模型在线服务(EAS)页面。

  2. 模型在线服务(EAS)页面,单击部署服务,然后在场景化模型部署区域,单击大模型RAG对话系统部署6eea7736f88e6ec8b3b900e4d028bb48

  3. 部署大模型RAG对话系统页面,配置以下关键参数,其他参数配置说明,请参见步骤一:部署RAG服务

    参数

    描述

    基本信息

    模型来源

    选择开源公共模型

    模型类别

    选择模型类别,本方案以大模型Qwen1.5-1.8b为例。

    资源配置

    资源配置选择

    系统会根据已选择的模型类别,自动推荐适合的资源规格。更换至其他资源规格,可能会导致模型服务启动失败。

    向量检索库设置

    版本类型

    选择Milvus

    访问地址

    配置为步骤二中已获取的Milvus实例的内网地址。

    代理端口

    配置为步骤二中已获取的Milvus实例的端口号。

    账号

    配置为root

    密码

    配置为创建Milvus实例时设置的用户密码。

    数据库名称

    配置为已创建的数据库名称,本方案使用默认数据库default

    Collection名称

    输入新的Collection名称或已存在的Collection名称。对于已存在的Collection,Collection结构应符合PAI-RAG要求,例如您可以填写之前通过EAS部署RAG服务时自动创建的Collection。

    专有网络配置

    VPC

    请确保所配置的专有网络与Milvus实例保持一致。

    交换机

    安全组名称

  4. 参数配置完成后,单击部署

使用RAG对话系统

RAG对话系统的基本使用方法如下,更多详细介绍,请参见大模型RAG对话系统

1、连接向量检索库

  1. RAG服务部署成功后,单击服务方式列下的查看Web应用,启动WebUI页面。

  2. 测试向量检索库Milvus连接是否正常。

    系统已自动识别并应用了部署服务时配置的向量检索库设置,您可以单击Connect Milvus,来验证Milvus实例是否连接正常。如果连接失败,请参考步骤二:准备配置项,检查向量检索库配置是否正确,修改对应配置项为正确配置,然后单击Connect Milvus,重新连接Milvus实例。

2、上传企业知识库文件

您可以按照以下流程上传您的企业知识库文件,系统会自动按照PAI-RAG格式将知识库存储到向量检索库中,以方便您进行后续的知识检索。您也可以利用向量检索库中已有的知识库,但必须符合PAI-RAG格式要求,否则可能会导致检索报错。

image

  1. Upload页签,设置语义分块参数。

    通过配置以下参数来控制文档分块粒度的大小和进行QA信息提取:

    参数

    描述

    Chunk Size

    指定每个文本分块的大小,单位为字节,默认为500。

    Chunk Overlap

    表示相邻分块之间的重叠量,默认为10。

    Process with QA Extraction Model

    通过选中Yes复选框启动QA信息提取功能,系统将在您上传企业知识库文件后自动抽取出QA对,以获得更好的检索和回答效果。

  2. FilesDirectory页签下上传企业知识库文件(支持多文件上传)或对应目录。支持的文件类型为.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html,例如rag_chatbot_test_doc.txt

  3. 单击Upload,系统会先对上传的文件进行数据清洗(包括文本提取、超链接替换等)和语义切块,然后进行上传。image

3、进行知识问答

WebUI页面的Chat页签,进行知识问答,支持以下三种查询方式:

LLM

在不使用向量知识库的情况下,大语言模型的回答效果会出现明显的知识幻觉,回答结果可能存在不准确的情况。image

Retrieval

该模式会从向量数据库中检索并返回Top K条相似结果。与LLM模式询问同样的问题,模型正确检索了该诗句所在的诗篇。6be9a282e32024eacfa057edef55ee9e

Retrieval+LLM

RAG系统将检索返回的结果与用户问题填充到已选择的Prompt模板中,一并提交至EAS-LLM服务,从中获取问答结果。从返回结果中可以看出,模型很好地结合了知识库的内容。

image

Milvus特色功能支持

Attu是一款专为Milvus向量数据库打造的开源数据库管理工具,提供了便捷的图形化界面,可以高效管理数据库、集合(Collection)以及索引(Index)等,极大地简化了对Milvus数据库的操作与管理流程,以下内容将为您介绍,如何使用MilvusAttu工具,查看向量数据库的存储内容。

  1. 登录阿里云Milvus控制台,在阿里云Milvus实例列表页面中,单击已创建的实例名称。

  2. 安全配置页签,单击开启公网,为Milvus实例开启公网访问。具体操作,请参见网络访问与安全设置

    配置完成后,实例状态变为升级中,大约持续1分钟。

  3. 进入Attu管理页面。

    1. 在浏览器中输入访问地址。支持以下两种访问方式:

      • 内网访问地址:{{clusterId}}-internal.milvus.aliyuncs.com:3000

      • 公网访问地址:{{clusterId}}.milvus.aliyuncs.com:3000

        说明

        如果您使用公网访问地址,则可以直接在实例详情页面单击Attu manager

    2. 在弹出的对话框中输入所要访问的数据库、用户名和密码,单击连接,即可打开Attu管理页面。

      在实例创建完成后,系统会自动创建一个名为default的默认数据库,并为您创建一个名为root的用户,该用户的密码由您在创建实例时自行设置。

  4. 登录成功后,您可以在Attu页面管理Collection。具体操作,请参见管理Collection

相关文档