通过阿里云的PAI基于开源LLM搭建RAG检索增强对话系统

2024-05-16 13:36

本文主要是介绍通过阿里云的PAI基于开源LLM搭建RAG检索增强对话系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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等,欢迎前来探索体验。

(完)

这篇关于通过阿里云的PAI基于开源LLM搭建RAG检索增强对话系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995057

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma