您可以在部署大模型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、AnalyticDB for PostgreSQL。
在生成方面,EAS支持丰富的开源模型,如通义千问、Llama、Mistral、百川等,同时支持ChatGPT调用。
本方案以Milvus为例,为您介绍如何使用EAS与阿里云Milvus版构建一个大模型RAG对话系统。整体流程大约花费20分钟,具体流程如下:
首先创建Milvus实例,并准备部署RAG服务关联Milvus实例时依赖的配置项。
在EAS模型在线服务平台部署RAG服务,并关联Milvus实例。
您可以在RAG对话系统中连接Milvus,上传业务数据文件,并进行知识问答。同时,Milvus还支持Attu工具,可以高效可视化管理数据库、集合和索引等。
前提条件
已创建专有网络VPC、交换机和安全组。具体操作,请参见搭建IPv4专有网络和创建安全组。
使用限制
向量检索库和EAS必须在相同地域下。
注意事项
本实践受制于LLM服务的最大Token数量限制,旨在帮助您体验RAG对话系统的基本检索功能:
该对话系统受制于LLM服务的服务器资源大小以及默认Token数量限制,能支持的对话长度有限。
如果无需进行多轮对话,建议您关闭RAG服务的with chat history功能,这样能有效减少达到限制的可能性。详情请参见如何关闭RAG服务的with chat history功能。
准备向量检索库Milvus
目前,向量检索Milvus版为免费公测产品,预计于2024年08月30日结束。免费试用结束后,您可以续费继续使用实例。详情请参见向量检索服务Milvus版免费公测说明。
步骤一:创建阿里云Milvus实例
进入阿里云Milvus页面。
登录阿里云Milvus控制台。
在左侧导航栏,单击Milvus实例。
在顶部菜单栏处,根据实际情况选择地域。
在Milvus实例页面,单击创建实例。
在向量检索服务Milvus版页面,配置以下关键参数,其他参数配置说明,请参见快速创建Milvus实例。
参数
描述
地域和可用区
实例所在的物理位置和可用区。请选择与EAS服务相同的地域。
专有网络
选择已有的专有网络,或者如需创建新的专有网络,可以单击前往控制台创建,详情请参见创建和管理专有网络。
交换机
选择已有的交换机,或者如需创建新的交换机,可以单击控制台创建,详情请参见创建和管理交换机。
用户密码
设置Milvus实例的root账号密码以登录数据库。
重要请牢记您设定的密码,目前无法更改。
参数配置完成后,单击立即购买,并按照控制台操作指引完成支付操作。
当实例状态为运行中时,表示实例创建成功。
步骤二:准备配置项
查询访问地址和代理端口。
在阿里云Milvus的实例列表页面中,单击已创建的实例名称。
在实例详情页签的访问地址区域,分别单击内网地址和Proxy Port后的复制按钮,将内网地址和端口号保存到本地。
准备Milvus实例的账号和密码。
Milvus实例的账号默认为root,密码是您在创建Milvus实例时设置的用户密码,目前不支持更新。
准备数据库和Collection。
创建Milvus实例时,系统会默认创建数据库default,您也可以手动创建新的数据库,具体操作,请参见管理Databases。
无需准备Collection,后续您在部署RAG服务时,使用新的Collection名称或已存在的Collection名称。对于已存在的Collection,Collection结构应符合PAI-RAG要求,例如可以填写之前通过EAS部署RAG服务时自动创建的Collection。
部署RAG服务并关联Milvus
进入模型在线服务(EAS)页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。
在工作空间页面的左侧导航栏选择 ,进入模型在线服务(EAS)页面。
在模型在线服务页面,单击部署服务,在场景化模型部署区域,单击大模型RAG对话系统部署。
在部署大模型RAG对话系统页面,配置以下关键参数,其他参数配置说明,请参见步骤二:部署RAG服务。
参数
描述
基本信息
模型来源
选择开源公共模型。
模型类别
选择模型类别,本方案以大模型Qwen1.5-1.8b为例(因使用小模型做演示效果可能会更好,但小模型更容易给出误导性答案)。
资源配置
实例数
配置为1。
资源配置选择
系统会根据已选择的模型类别,自动推荐适合的资源规格。
向量检索库设置
版本类型
选择Milvus。
访问地址
配置为步骤二中已获取的访问地址(即内网地址)。
代理端口
配置为步骤二中已获取的端口号。
账号
配置为root。
密码
配置为创建Milvus实例时设置的用户密码。
数据库名称
配置为已创建的数据库名称,本方案使用默认数据库default。
Collection名称
输入新的Collection名称或已存在的Collection名称。对于已存在的Collection,Collection结构应符合PAI-RAG要求,例如可以填写之前通过EAS部署RAG服务时自动创建的Collection。
专有网络配置
VPC
请确保所配置的专有网络与Milvus实例保持一致。
交换机
安全组名称
参数配置完成后,单击部署。
使用RAG对话系统
RAG对话系统基础功能支持
RAG对话系统的基本使用方法如下,更多详细介绍,请参见大模型RAG对话系统。
配置RAG对话系统
RAG服务部署成功后,单击服务方式列下的查看Web应用,启动WebUI页面。
配置机器学习模型。
Embedding Model Name:系统内置了四种Embedding模型供您选择,能够将本文内容转化为Embedding向量形式。您可以根据场景需要选择更适合业务的Embedding模型。
Embedding Dimension:选择Embedding Model Name后,系统将自动进行配置,无需您手动操作。
测试向量检索库Milvus连接是否正常。
系统已自动识别并应用了部署服务时配置的向量检索库设置,您可以单击Connect Milvus,来验证Milvus实例是否连接正常。如果连接失败,请参考步骤二:准备配置项,检查向量检索库配置是否正确,修改对应配置项为正确配置,然后单击Connect Milvus,重新连接Milvus实例。
上传指定的业务数据文件
参考以下操作步骤,在Upload页签中,上传指定的业务数据文件,类型为.txt、.pdf、Excel(.xlsx或.xls)、.csv、Word(.docx或.doc)、Markdown或.html。
设置语义切块参数。
示例
说明
说明该示例仅供参考,后续您可以根据需求,使用您自己实际业务的知识库,来定制化您专属的问答机器人。
通过配置以下参数来控制文档切块粒度的大小,并进行QA信息提取:
Chunk Size:指定每个分块的大小,单位为字节,默认为500。
Chunk Overlap:表示相邻分块之间的重叠量,默认为10。
Process with QA Extraction Model:通过选中Yes复选框启动QA信息提取功能,系统将在您上传业务数据文件后自动抽取出QA对,以获得更好的检索和回答效果。
在Files或Directory页签下上传业务数据文件(支持多文件上传)或对应目录。
单击Upload,系统会先对上传的文件进行数据清洗(文本提取、超链接替换等)和语义切块,然后进行上传。
通过RAG WebUI进行知识问答
在WebUI页面的Chat页签,进行知识问答,支持以下三种查询方式:
LLM
在不使用向量知识库的情况下,大语言模型的回答效果会出现明显的知识幻觉,回答结果可能存在不准确的情况。
Retrieval
该模式会从向量数据库中检索并返回Top K条相似结果。与LLM模式询问同样的问题,模型正确检索了该诗句所在的诗篇。
Retrieval+LLM
该模式会将从向量数据库中检索返回的结果与用户的问题,输入至已选择的Prompt模板中,送入大语言模型,并从中获取问答结果。从返回结果中可以看出,模型很好的结合了知识库的内容。
Milvus特色功能支持
查看知识库切块
Attu是一款专为Milvus向量数据库打造的开源数据库管理⼯具,提供了便捷的图形化界⾯,可以高效管理数据库、集合(Collection)以及索引(Index)等,极大地简化了对Milvus数据库的操作与管理流程,以下内容将为您介绍,如何使用Milvus的Attu工具,查看向量数据库的存储内容。
进入阿里云Milvus实例详情页面。
登录阿里云Milvus控制台。
在左侧导航栏,单击Milvus实例。
在顶部菜单栏处,根据实际情况选择地域。
在阿里云Milvus的实例列表页面中,单击已创建的实例名称,进入实例详情页面。
在安全配置页签,单击开启公网,为Milvus实例开启公网访问。具体操作,请参见网络访问与安全设置。
配置完成后,实例状态变为升级中,大约持续1分钟。
进入Attu管理页面。
单击页面右上角的Attu Manager。
在Attu页面,配置以下内容,然后单击连接。
配置项
描述
Milvus数据库
本方案使用默认数据库:Default。
用户名
配置为root。
密码
配置为创建Milvus实例时设置的用户密码。
登录成功后,在Attu页面,单击左侧的图标,查看部署RAG服务时自动创建的Collections。
在Collections页面,单击目标Collections名称,查看内容详情。
相关文档
针对AIGC和LLM的典型前沿场景,EAS提供了简化的部署方式。您可以很方便地一键拉起服务,包括ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、HuggingFace模型部署、Triton部署以及TFserving部署等。详情请参见EAS场景化部署说明。
RAG服务WebUI界面提供了丰富的推理参数配置选项,以满足多样化需求。此外,RAG服务也支持通过API接口进行调用。具体实现细节以及参数配置说明,请参见大模型RAG对话系统。