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

本文将介绍如何在部署RAG服务时关联RDS PostgreSQL引擎实例,以及对RAG对话系统的基础功能和RDS PostgreSQL的特色功能进行说明。

背景信息

EAS简介

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

RAG简介

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

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

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

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

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

RDS PostgreSQL简介

阿里云关系型数据库RDS(Relational Database Service)支持PostgreSQL引擎。PostgreSQL的优点主要集中在对SQL规范的完整实现以及丰富多样的数据类型支持,包括JSON数据、IP数据和几何数据等。除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,RDS PostgreSQL还集成了高可用和备份恢复等重要功能,减轻您的运维压力。更多关于RDS PostgreSQL的高级功能介绍,请参见RDS PostgreSQL

使用流程

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

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

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

本方案以RDS PostgreSQL为例,为您介绍如何使用EASRDS PostgreSQL构建一个大模型RAG对话系统。具体流程如下:

  1. 准备向量检索库RDS PostgreSQL

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

  2. 部署RAG服务并关联RDS PostgreSQL实例

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

  3. 使用RAG对话系统

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

前提条件

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

注意事项

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

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

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

准备向量检索库RDS PostgreSQL

步骤一:创建RDS PostgreSQL实例和数据库

  1. 创建RDS PostgreSQL实例。

    1. 点此打开RDS实例新版创建页面

    2. 在购买页面,配置以下关键参数,其他参数配置说明,请参见创建RDS PostgreSQL实例

      • 引擎:选择PostgreSQL

      • VPC:选择已创建的专有网络。

      • 高权限账号:在更多配置区域,配置高权限账号。选择立即设置,并配置数据库账号和密码。

    3. 按照控制台操作指引完成支付和开通操作。

  2. 创建数据库。

    1. 单击已创建的实例名称,在左侧导航栏单击数据库管理,并单击创建数据库

    2. 创建数据库配置面板中,配置数据库(DB)名称授权账号选择已创建的高权限账号,其他参数配置说明,请参见创建账号和数据库

    3. 参数配置完成后,单击创建

步骤二:准备配置项

  1. 查询数据库连接地址。

    RDS PostgreSQL实例详情页面的左侧导航栏,选择数据库连接,并查看数据库内网地址、外网地址,以及相应的端口号。image

    • 使用内网地址:RAG服务需要和数据库在同一个VPC下。

    • 使用外网地址:当EAS通过外网地址访问RDS PostgreSQL时,EAS需要具备访问公网的能力。同时,为确保PostgreSQL实例能够接收来自EAS实例的公网请求,您需要为PostgreSQL开通外网地址,并将相关EIP地址或0.0.0.0/0加入白名单。具体操作步骤如下:

      1. RDS PostgreSQL开通外网地址。具体操作,请参见开通或关闭外网地址

      2. EAS开通公网访问能力,您需要为后续部署RAG服务时添加的VPC绑定NAT网关和弹性公网IP(EIP)。具体操作,请参见使用公网NAT网关SNAT功能访问互联网

        说明

        RAG服务可以使用与RDS PostgreSQL相同的VPC,也可以使用其他VPC。

      3. 0.0.0.0/0或上述弹性公网IP(EIP)地址添加为RDS PostgreSQL实例外网地址白名单。具体操作,请参见设置白名单

  2. 查询高权限账号和密码。

    RDS PostgreSQL实例详情页面的左侧导航栏,选择账号管理。在该页面查看已创建的高权限账号,相应密码在创建实例时设定,如果忘记可单击重置密码进行修改。

部署RAG服务并关联RDS PostgreSQL实例

  1. 登录PAI控制台,选择工作空间,并单击进入EAS

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

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

    参数

    描述

    基本信息

    模型来源

    选择开源公共模型

    模型类别

    选择Qwen1.5-1.8b

    资源配置

    资源配置选择

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

    向量检索库设置

    版本类型

    选择RDS PostgreSQL。

    主机地址

    配置为RDS PostgreSQL实例的内网地址或外网地址。

    端口

    配置为RDS PostgreSQL实例的端口号,例如5432。

    数据库

    请输入已创建的数据库名称。

    表名称

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

    账号

    请输入已创建的高权限账号。

    密码

    请输入高权限账号对应的密码。

    专有网络配置

    VPC

    • 当主机地址使用内网地址时,RAG服务需要配置与RDS PostgreSQL实例一致的专有网络。

    • 当主机地址使用外网地址时,RAG服务需要配置专有网络,您需要确保该专有网络具有公网访问能力,详情请参见使用公网NAT网关SNAT功能访问互联网。同时您需要将绑定的弹性公网IP0.0.0.0/0添加为RDS PostgreSQL实例的公网访问白名单,详情请参见设置白名单

    交换机

    安全组名称

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

使用RAG对话系统

1、连接向量检索库

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

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

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

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

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、进行知识问答

将检索返回的结果与用户的问题输入至已选择的Prompt模板中,送入EAS-LLM服务,从中获取问答结果。

image

RDS PostgreSQL特色功能支持

  1. 访问RDS实例列表,切换到实例所在地域,然后单击实例名称,进入实例详情页面。

  2. 在左侧导航栏选择数据库管理,然后单击目标数据库操作列下的SQL查询

  3. 输入数据库账号数据库密码,即您在创建RDS PostgreSQL时设置的高权限账号和密码,然后单击登录

  4. 登录成功后,在已登录数据库实例中查询导入的知识库列表。image

相关文档