5月9日参加阿里云AI云峰会活动,学习了下如何借助阿里云的PAI服务进行搭建RAG检索增加对话系统。
前提:
为了方便省钱,建议先通过免费的优惠圈,这样就可以先不花钱学习一下啦。开始实验之前,请务必打开 阿里云免费试用 - 阿里云,先后搜索“EAS”和“oss”,领取试用活动,如下图:
1. EAS简介
EAS(Elastic Algorithm Service)是PAI的模型在线服务平台,⽀持将模型部署为在线推理服务和 AI-Web应⽤。EAS提供了弹性扩缩容和蓝绿部署等功能,可以⽀撑您以较低的资源成本获取⾼并 发且稳定的在线算法模型服务。此外,EAS具备资源组管理和版本控制等功能,并且有完整运维监 控体系等能⼒。 针对AIGC和LLM的典型前沿场景,EAS提供了真正简化的部署⽅式,⽤户可以很⽅便地⼀键拉起 服务,包括RAG部署、ComfyUI部署、Stable Diffusion WebUI部署、ModelScope模型部署、 HuggingFace模型部署、Triton部署、TFserving部署等。
2. RAG简介
随着AI技术的⻜速发展,⽣成式⼈⼯智能在⽂本⽣成、图像⽣成等领域展现出了令⼈瞩⽬的成就。 然⽽,在⼴泛应⽤⼤语⾔模型(LLM)的过程中,⼀些固有局限性逐渐显现: 领域知识局限:
1)⼤语⾔模型通常基于⼤规模通⽤数据集训练⽽成,这意味着它们在处理专业垂 直领域的具体应⽤时可能缺乏针对性和深度。
2)信息更新滞后:由于模型训练所依赖的数据集具有静态特性,⼤模型⽆法实时获取和学习最新 的信息与知识进展。
3)模型误导性输出:受制于数据偏差、模型内在缺陷等因素,⼤语⾔模型有时会出现看似合理实 则错误的输出,即所谓的“⼤模型幻觉”。 为克服这些挑战,并进⼀步强化⼤模型的功能性和准确性,检索增强⽣成技术RAG(RetrievalAugmented Generation)应运⽽⽣。这⼀技术通过整合外部知识库,能够显著减少⼤模型虚构的 问题,并提升其获取及应⽤最新知识的能⼒,从⽽实现更个性化和精准化的LLM定制。
PAI-EAS⾃建了RAG系统化解决⽅案,提供了灵活可调的参数配置,⽤户可以通过WebUI 或者 API 调⽤RAG服务,定制⾃⼰专属的对话系统。RAG技术架构的核⼼为检索和⽣成。在检索⽅ ⾯,PAI-EAS⽀持多种向量数据库,包括开源的Faiss和阿⾥云的产品Milvus、ElasticSearch、Hologres、AnalyticDB for PostgreSQL。在⽣成⽅⾯,PAI-EAS⽀持丰富的开源模型,如通义千问、 Llama、mistral、百川等,同时⽀持ChatGPT调⽤。
3. 实践内容
通过本实验,您可以掌握使⽤PAI-EAS构建⼀个⼤模型RAG对话系统。整体流程⼤约花费20分 钟。您将学会:
1. 创建Milvus向量检索库实例
2. 使⽤EAS选择合适的模型和向量检索库,⼀键部署RAG服务
3. 使⽤RAG WebUI上传知识库⽂档,与⼤语⾔模型进⾏对话
4. 具体操作步骤
内容⼀:准备向量检索库
Milvus是⼀款云原⽣开源向量检索引擎,基于Faiss、Annoy、HNSW等知名库构建,并进⾏了优 化,实现了⾼可⽤、⾼性能、易扩展的特性,适于处理海量向量数据的实时召回。下⾯将以Milvus 为例,介绍向量检索库的准备。
1)进⼊EMR控制台,在左侧菜单栏选择 EMR Serverless - Milvus,点击【创建 实例】。
2)在创建页进行如下配置:2.1)选择合适的可用区、VPC、交换机。2.2)创建服务关联角色。
‒ 选择OSS存储,该存储需要设置标 签。
配置好之后,点击【⽴即购买】。进⼊到 确认⻚,点击【去⽀付】。在⽀付⻚,点 击【订购】。
内容二:部署RAG服务
1)进⼊PAI控制台,左侧菜单栏选择模型在 线服务(EAS),点击【部署服务】。
2)在卡⽚列表中,选择【⼤模型RAG对话 系统】。
3)在创建页面进行以下配置
服务名称可以⾃定义填写。 ‒ 选择模型类别,本实验以Qwen1.5- 1.8b为例。服务名称可以⾃定义填写。 ‒ 选择模型类别,本实验以Qwen1.5- 1.8b为例。实例数选择1。 ‒ 选择资源配置,推荐选⽤ T4/V100/A10/GU30。 ‒ 推理加速保持默认即可。如下图:
进⾏向量检索库设置。数据库⽂件夹 名称可以⾃定义填写;访问地址和代 理端⼝可以在Milvus实例详情中查看 并填写(如图);账号是root,密码 是在创建Milvus实例时填写的密码; collection选择不删除。
‒ 注意选择与Milvus实例相同的VPC、交换 机。安全组选择默认即可。
点击部署即可。
注:模型在线服务 (EAS)服务是收费服务,按小时收费,请注意成本控制
内容三:通过RAG WebUI上传知识库
1)RAG服务部署成功后,单击服务⽅式列下的【查 看Web应⽤】,启动WebUI⻚⾯
2)第⼀个tab是RAG配置。⾸先要配置Embedding 模型。 ○ 连接成功,显示“Connect Milvus success” 6 / 10 Emebdding Dimension:根据模型,系统 会⾃动设置维度。
接下来,需要连接向量数据库。系统已⾃动带⼊ 了部署服务的配置设置,点击“Connect Milvus”。
3)第⼆个tab⽤于上传知识库。 ⾸先,设置以下两个参数来控制⽂档切块粒度的 ⼤⼩: ○ ○ 接下来,点击【Upload】直接上传示例数据, 或者拖拽上传⽂件后再点击【Upload】。
内容四:通过RAG WebUI对话
1)来到WebUI的第三个tab。 ⾸先选择【LLM】模式,询问模型“「XXX」的全⽂是什 么?”,其中XXX是你upload上传的内容关键字,让我们观察⼀下,在不使⽤向量 知识库的情况下,模型会如何回答。
2)接着我们选择【Retrieval】模式,该模 式会从向量数据库中检索并返回Top K 条相似结果。同样询问⼀样的问题,让 我们来看模型是否能正确检索出我们上 传的知识库内容。
3)最后,我们选择【RAG(Retrieval + LLM)】模式,继续询问。该模式会将 检索返回的结果与⽤户的问题输⼊⾄已 选择的Prompt模板中,送给⼤模型, 从中获取问答结果。
内容五:查看知识库切块
Attu是⼀款专为Milvus向量数据库打造的开源数据库管理⼯具,提供了便捷的图形化界⾯,极⼤地 简化了对Milvus数据库的操作与管理流程。下⾯,我们将使⽤Milvus的Attu⼯具,查看向量数据库 的存储内容。
1)进⼊到Milvus详情⻚,点击【开启公⽹】
2)点击公⽹访问⽩名单后⾯的【编辑】。 打开https://myip.ipip.net/,查看⾃⼰的ip 地址,然后将ip加到⽩名单中,以半⻆逗 号(,)隔开。
3)点击【Attu Manager】,进⼊Attu管理⻚⾯ Milvus Database填写“default”,Milvus Username填写“root”,Milvus Password 填写我们在创建RAG服务时设置的密码 登录成功。
4)登录成功后,可以看到RAG服务⾃动创建 的collections,点击查看详情。
列表展现了我们上传的知识库数据, 能够帮助我们理解知识库是如何被切 ⽚和向量化的。从⽽可以调整切⽚⽅ 式。
5. 总结
本次体验了在PAI EAS上部署RAG服务,上传知识库,以及与模型进⾏对话。本⽂使⽤了简单的PAI介 绍⽂档,后续您可以根据需求,使⽤⾃⼰实际业务的知识库,来定制化您专属的问答机器⼈。 RAG WebUI提供了丰富灵活的配置,本实验采⽤了默认配置,您可以调节不同的参数,来优化问答 效果。RAG项⽬已经开源(GitHub),如果您有更多定制化需求,欢迎在此项⽬基础上进⾏⼆次开 发,在EAS上部署您修改后的RAG应⽤。 另外,EAS提供了丰富好玩的AI应⽤,如ComfyUI、Stable Diffusion WebUI等,欢迎前来探索体验。
(完)