PAI-RAG提供了自动化数据分析功能,支持database(连接的MySQL数据库)和datafile(上传的表格文件)两种数据类型。结合大语言模型(LLM),您可以提问问题并优化查询效果。本文将详细介绍如何使用PAI-RAG的自动化数据分析功能。
前提条件
已部署RAG服务,镜像选择官方镜像 > pai-rag:0.3.1。详情请参见自定义部署RAG服务。
步骤一:配置大语言模型(LLM)
在模型在线服务(EAS)页面,单击目标RAG服务名称,然后在页面右上角单击查看Web应用,按操作指引进入WebUI页面。
在系统设置页面右侧,配置LLM服务,然后单击保存模型配置。
支持配置以下两种类型的LLM服务,您可以任意选择一种:
服务类型
参数
描述
PAI EAS部署的开源大语言模型
URL
分别配置为LLM服务的访问地址(EAS_SERVICE_URL)和Token(EAS_TOKEN)。
重要RAG服务通过内网地址连接LLM服务:RAG服务和LLM服务需使用相同的专有网络。
RAG通过公网地址连接LLM服务:需为RAG服务配置具备公网访问能力的VPC,详情请参见配置公网连接。
请参考以下操作步骤进行获取:
在模型在线服务(EAS)页面,单击已部署的LLM服务名称,然后在基本信息区域,单击查看调用信息,在弹出的对话框中进行获取。
密钥
模型名称
填写部署LLM服务时选择的模型类别。例如Qwen2.5-7B-Instruct。
百炼模型服务
URL
配置为
https://dashscope.aliyuncs.com/compatible-mode/v1
。密钥
请前往API_KEY管理页面获取密钥。
模型名称
支持qwen-max、qwen-turbo等。推荐使用qwen-max。
步骤二:进行数据分析
在RAG服务的WebUI页面切换到数据分析页签,进行自动化数据分析。
RAG支持分析两种数据类型:database(连接的MySQL数据库)和datafile(上传的表格文件)。以下内容将分别介绍如何自动化分析这两种类型的数据。
数据库分析配置
1.连接数据库
目前仅支持MySQL类型数据库,本方案以RDS MySQL数据库为例,您也可以使用其他的MySQL数据库。
准备好数据库后,在RAG服务WebUI页面的数据分析页签,选择待分析的数据类型database,配置以下参数后单击加载数据库信息,完成连接。若需更新描述信息,请修改后重新加载。
数据库基础配置
参数
描述
数据库类型
固定为mysql。
数据库端口号
默认为3306。
数据库主机地址
填写数据库内网或外网连接地址。以RDS MySQL数据库为例,查询方法请参见查看和管理实例连接地址和端口。
说明使用内网地址时:RAG服务和RDS实例需使用相同的专有网络。
使用外网地址时:需为RAG服务配置具备公网访问能力的VPC,详情请参见配置公网连接。
用户名
账号名称。
密码
账号对应的密码。
数据库名称
目标数据库名称。
数据表名称
需要分析的数据表名称,多个数据表间使用半角逗号(,)分隔,格式为
table_A,table_B
。默认为空,表示使用目标数据库中所有数据表。重要MySQL数据库中必须至少包含一张表,否则无法加载数据库信息。
表的描述性信息
可选,用于补充字段描述,默认为空。支持添加对表格的整体描述或对数据表中字段的详细说明,格式为:
{"table_A":"字段a表示xxx,字段b数据的格式为xxx","table_B":"这张表主要用于xxx"}
,且必须使用英文标点符号,例如半角双引号("")、半角冒号(:)、半角逗号(,)等。该功能主要用于临时调试和观察数据分析效果。如果描述信息较多,建议:
将相关描述在数据库中作为相应数据表或列字段的comment,持久化添加。
将相关描述信息整理成CSV文档上传,详情请参见表格文件分析配置。
大型数据库的增强方案
参数
描述
通过向量嵌入技术优化数据库检索
适用场景:当目标数据库中表的列数量较多(如所有表的字段总和大于50列)时,建议开启该功能。
功能描述:基于用户问题对数据库结构信息和值信息进行向量检索,快速筛选出可能有用的表字段,避免输入LLM的提示词过长,导致超过最大允许长度或生成SQL效果下降。其中,基于值的检索会获取数据库中文本字段的非重复值,设置了最大列数和每列最大唯一值数量的上限。上限越大查询的值范围越广,生成SQL更准确,但延迟会更高。
操作方法:选中Yes复选框,并配置以下参数:
最大列数:参与检索的表字段的最大数量。
最大唯一值数量:针对每个字段(列),允许参与检索的非重复值的最大数量。数值越大,可能耗费的时间越长。
通过LLM选表选列
适用场景:适用数据库多表多列场景。
功能描述:利用大语言模型根据用户查询语句筛选可能有用的表列。
操作方法:选中Yes复选框即可。
使用数据库查询历史/示例
适用场景:适用于希望利用历史查询或相似查询来提高生成SQL效果的场景。
功能描述:通过提供数据库中的历史查询或相似查询,利用向量检索找到与当前查询问题相似度较高的query和SQL作为参考,类似FAQ,有助于提高生成SQL的效果。
操作方法:选中Yes复选框,可在上传Q-SQL JSON文件区域上传JSON格式的query-SQL文件。JSON文件内容格式示例如下:
[ { "query": "找出体重大于10的宠物的数量。", "SQL": "SELECT count(*) FROM pets WHERE weight > 10" }, { "query": "找出每种宠物的最大重量。列出最大重量和宠物类型。", "SQL": "SELECT max(weight) , petType FROM pets GROUP BY petType" }, { "query": "找出20岁以上学生拥有的宠物数量。", "SQL": "SELECT count(*) FROM student AS T1 JOIN has_pet AS T2 ON T1.stuid = T2.stuid WHERE T1.age > 20" } ]
上传数据表描述信息
功能描述:通过提供数据库中每张表的所有列描述,帮助大模型更好地理解字段含义,从而提高SQL生成效果。
操作方法:选中Yes复选框,并在上传数据库描述文件区域上传CSV格式的描述文件。CSV文件需与目标数据库表名保持一致,可上传多张表的描述文件,格式请参考CSV文件中的数据格式。
2.配置提示词
支持在数据分析页面的左下方,自定义用于生成SQL和合成最终回复的提示词。
如有自定义需求,可在下图提示词模板的虚线之间进行修改。虚线以外的{}(半角花括号)中的内容为输入参数,需保留。
如需恢复默认模板,请在提示词模板重置页签下,单击需要恢复的提示词模板按钮。
3.查询结果
在右侧Chatbot聊天框中,输入问题进行提问。系统将显示生成的SQL语句及其语法有效性(注意:语法有效不代表业务逻辑正确)。这些参考资料可以作为优化查询效果的调试工具。
目前,系统默认支持对话记忆功能,简单的问答效果如下图所示:
4.优化查询效果
若查询结果不符合预期,您可以尝试以下优化方法:
问题 | 优化方法 |
如果目标数据库中表的数量较多,或通过参考资料发现查询的数据表有误。 |
|
如果数据库中表列名称比较抽象,如以简单字母命名或者以特定专业领域术语命名。 | 增加字段描述,辅助大语言模型理解具体领域知识:
|
通过参考资料观察到已生成的SQL语句不满足某些业务逻辑或部分业务逻辑本身较复杂。 |
|
如果目标数据库表列数量较多,如字段总数超过50个。 |
|
如参考资料中观察到生成的SQL语句包含了非SQL的其他内容。如开头多了"sql"等(部分小模型指令遵循问题) | 配置提示词:在Nl2sql提示词模板中增加简单限制。 |
如果SQL生成正确,但需要更个性化的回答(如以什么语言风格,加上具体单位等要求) | 配置提示词:在合成器提示词模板中调整提示词。 |
表格文件分析配置
在RAG服务WebUI页面的数据分析页签,选择待分析的数据类型datafile。然后在上传 csv/xlsx 文件以进行数据分析区域,按照控制台操作指引上传一份表格文件(格式为Excel或CSV)。上传成功后,在页面左下方会出现文件的前几行预览,如下图所示。
后续您可以在右侧的Chatbot中直接进行提问,如需更换表格,重新上传所需表格即可。
常见问题
数据库连接失败
网络和连接配置问题
检查提供的主机名、端口号、用户名和密码是否正确:确保所有信息准确无误。
防火墙和安全组设置:确认防火墙规则和安全组允许通过指定端口进行访问。
VPC和私网设置:如果RAG服务和数据库在同一VPC(专有网络)内,直接使用私网地址;若需公网访问,确保RAG服务的VPC具有公网访问能力。
权限和认证问题
用户权限:确认用户具有足够的权限访问目标数据库,必要时使用GRANT命令赋予权限。
白名单设置:确保客户端IP地址在数据库的访问白名单中。
数据库服务状态
MySQL服务是否正在运行:检查MySQL服务的状态,确保其正常运行。
监听端口是否正确:确认MySQL服务正在监听正确的端口。