1、数据库的使用方法,AI学习库的适用场景,配置方法和优化方法。
一、 数据库
1、 关系数据库
前置要了解的一些基础知识
关系数据库。可以想象为Excel的表sheet,每个表是行列组成的二维表格。一个数据库可以包含任意多个数据表(如"学生表"、“课程表”、“成绩表”),表与表之间通过相同的字段(如"学号")建立联系。
为啥叫“关系”数据库,因为数据之间蕴含着逻辑关系,比如包含、属于等。
元组(记录):表中的一行即为一个元组,或称为一条记录。
属性(字段)。数据表中的每一列称为一个字段,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型。
属性值。行和列的交叉位置表示某个属性值,如“数据库原理”就是课程名称的 属性值
主码。主码(也称主键或主关键字),是表中用于唯一确定一个元组的数据。关键字用来确保表中记录的唯一性,可以是一个字段或多个字段,常用作一个表的索引字段。每条记录的关键字都是不同的,因而可以唯一地标识一个记录 。
主流的关系数据库有oracle、db2、sqlserver、sybase、mysql等
2 、 SQL语言
(结构化查询语言,Structured Query Language):是和数据库对话的语言,语法接近自然语言,核心功能依赖少量关键动词,学习和使用相对容易,其包括了增删改查四大核心操作。
示例
实际执行效果
假设学生表数据:
执行 上面的 SQL 后,结果:
3、 连接到数据库
企业的数据库分布在各个信息系统中,我们要想在应用程序(如EPAI)进行数据库操作,需要与数据库进行“点对点连接”。
从技术角度,数据库连接是一套双向的、带状态的通信会话“通路”。
在EPAI中,数据库→添加,就可以打开连接页面,填入数据库类型、数据库名称、数据库实例端点(Endpoint)、端口号、用户名和密码,就可以点击【确认】进行连接了,连接成功后会显示在“数据库管理”页面,连接失败会返回错误提示,如是用户名密码错误还是网络问题。在“数据库管理”页面,我们实际进行的是 “数据库连接”的管理。
二、多用户权限
用户使用数据库应该遵循授权权限最小化的原则,即只授予用户完成工作所需的最小权限。
● 库/表级权限:只授予该用户访问特定数据库或特定表的权 限,而不是 ALL DAT ABASES。
● 库权限:点击 “ 分享” 可 进行尽自己、部分用户、全员的授权。
● 表权限:每个表的权限先默认继承所在“ 库 ”的权限, 然后可以进行自定义调整。
比如:
“高三学生数据库(连接)”已经分享给了张三、李四、王五使用。
高三学生数据库包括 学生表、课程表、成绩表三张表。
初始状态,学生表、课程表、成绩表三张表也分享给了张三、李四、王五使用。
学生表针对分享范围进行了调整,删除了张三,那 么就仅仅李四、王五可以使用该表。
课程表也针对分享范围进行了调整,增加了孙六, 那么李四、王五、孙六可以使用该表。
成绩表也针对分享范围进行了调整,调整为“仅自己”可用,而“高三学生数据库(连接)”是由钱七创 建的,那么成绩表就仅仅钱七能够使用 。
三、 数据库对话( 数据智能体)
1、LLM生成SQL
Text-to-SQL(自然语言转SQL)是一项人工智能技术,旨在将用户用自然语言(如中文或英文)提出的问题自动转换为数据库可执行的 SQL 查询语句。这项技术的核心目标是降低数据库的使用门槛,让不懂编程或SQL语法的业务人员、分析师也能直接通过对话的方式从数据库中获取数据。得益于LLM的强大语言理解能力和生成能力,基于LLM的Text- to-SQL已经完全碾压了所有其他的方法。
EPAI的数据库对话应用(也可称为数据智能体),核心定位是通过检索增强生成(RAG)+大语言模型(LLM)实现高精度的自然语言转 SQL(Text-to-SQL),让非技术人员也能以自然语言与任意数 据库交互,无需手动编写SQL语句。
应用场景:适用于所有需要自然语言操作数据库的场景,尤其适合企业级部署:
✓ 数据分析团队:数据分析师通过自然语 言快速查询数据,无需编写复杂 SQL,提升工作效率;
✓ 企业内部系统:为业务人员提供自助式数据查询接口,降低数据团队的沟通成本;
✓ 多租户SaaS应用:为不同客户提供 隔离的自然语言数据查询服务,通过细粒度权限确保数据安全;
✓ 数据产品开发:快速构 建自然语言数据查询功能,集成到BI工具、企业级应用中。
广泛的兼容性:兼容主流大模型和数据库
1. 支持的 LLM(大语言模型):EPAI平台部署可用的所有LLM,包括Deepseek、通义千问、Kimi等;
2. 支持的数据库:市面上热门的SQL数据库,包括MySQL、 PostgreSQL 、MariaDB、SQL Server、Oracle、Dameng 等。
无监督自学习:
所有成功的交互( 问 题-SQL答案对) 都会被保存到 AI学习库,针对用户问题实现差异化处理 , 让智能体持续进化:
✓ 全新问题:深度分析数据库 schema、结合示例生成新 SQL;
✓ 相似问题 :从A I学习库中检索历史查询 模式,快速适配生成新 SQL,大幅提升响应速度。
2、AI学习库
AI学习库包括三类内容,分别是:SQL问答、专业术语、DDL语法,都支持自定义添加。
AI学习库就是给LLM的知识库,会基于用户问题先去AI学习库中查询相关内容,也就是RAG的过程,将查询到的 相关内容(SQL问答、专业术语、DDL语法)结合用户问题一起送给大模型,指导大模型生成更加准确的SQL语法。
SQL问答:用户交互过程中评价为正确的问答对(问题-SQL答案 )会自动进入SQL问答;自定义添加;
专业术语:自定义添加;
DDL语法:自动获取;自定义添加。
DDL(Data Definition Language,数据定义语言),它是定义数据库结构的 SQL 语法,它的核心作用是创建、修改、删除数据库及数据库对象(如数据库、表、 索引、 视图等),而非操作数据本身。查看DDL语法就可以 了解 一个数据库的结构,可以通过命令自动获取一个数据库的DDL语法。
3、 为什么需要AI学习库,以及如何使用
Text-to-SQL的挑战:自然语言本身的复杂性(模糊、有歧义等 )、缺乏业务上下文(不懂业务术语)、数据库的复杂性(大量的表,严格的SQL语法)、模型有幻觉、很复杂的查询(嵌套等)。
AI学习库本质上是RAG技术,通过外部知识库来提高大模型生成SQL的准确度。(1)DDL语法让LLM了解表结构和字段约束,同时仅关注与当前相关的内容,而不是全部的DDL语法 ;(2) 专业术语让 LLM 能够了解专业领域和最新的知识;(3)而SQL问答可以让LLM学 习已有的正确经验。
(1)DDL语法
核心价值:
● 让AI 快速获取表间关联关系,避免多表关联错误;
● 让 AI 记住字段类型 /约束,避免生成数据类型不匹配的SQL;
示例:
用户问: “查询重量大于 5 公斤且配送完成时间在 2026年2 月的包裹”
情况1:不使用AI学习库, 大模型靠自有知识生成SQL语法
SELECT * FROM delivery
WHE RE weight > ‘5kg’
AND delive ry_tim e BETWEEN ‘2026-02 ’ AND ‘2026-03’
AND delivery_status = ‘已完成 ’;
执行后直接报 “数据类型不匹配” 错误。
原因:字段类型和约束违规,比如weight是DECIMAL类型,不能加字符串单位
情况2:使用AI学习库,查询到AI学习库中存储的delivery表的 DDL ,包含字段类 型(weight=DECIMAL、delivery_ stat us=TINYINT)、格式要求(d eli very_time=DATETIME);
A I 检索到这些信息后,自动规避类型错误,生成正确SQL
-- 正确SQL:符合字段类型和约束
SELECT * FROM delivery
WHERE weight > 5 – 无单位,纯数值
AND delivery_time >= ‘ 2026-02-01 00:00:00’ AND delivery _time < ‘20 26-0 3-01 00:0 0:00’ – 完整DATETIME格 式
AND deli very _status = 3; – 数值匹配字段类型
(2)专业术语
核心价值 :
● 解决技术字段名与业务术语脱节的问题,精准理解非技术用户的提问;
● 模型不懂专业知识和最新的知识,比如并不理解某款游戏中“火男”是指什么含义 。
示 例:
用户问:“查询账户总额大于 10 万元的用户 I D 和可用 余额”
情况1:没有专业术语, 大模型仅 依赖自有知识和DDL语法生成S QL
SELECT u_id, tot_amt FROM user_ account
WHERE tot_amt > 1 00000;
执行后的结果是错误的。
原因:不明白可用余额和账户总额的区别,不知道可用余额是哪个字段。
情况2:专业术语中增加 “可用余 额”的解释。
可用余额指账户中不受冻结、不被预占、可立 即用于支 付、转账、提现的资金金额。 计算公式:可用余额 = 账户总余额 − 冻 结金额 − 在途金额 − 预授权占用金额
对应数据库字段:acct_ bal / avail_balance
AI 检索到这些信息后,能够精确映射专业术语,生成正确 SQL
SELEC T u_ id A S 用户ID, acct_bal AS 可用余额
FROM user_acco unt
WHERE tot_amt > 1 00000;
(3)SQL问答
核心价值:
✓ 保障复杂 / 变体问题的 SQL 生成准确率和一致性,避免纯 LLM 的推理错误;
用户问: “ 查询上个月已完成的订单金额”
情况1:是个新问题,SQ L问答库为空,没有相似的问题。LLM 靠自有能力生成的SQL:
SELECT SUM(amount) FROM s ales _order
WHERE ord er_status = ‘已完成’
AND order_time >= ‘2026-01-01’ AND order_time < ‘2026- 0 2-01’;
执行后返回 0 条结果。答案错误。
原因:字段存的是数字3,不是字符串
第一次用户发现错误后,人 工修正为正确的 SQL 。将(问题,SQL答案)存储到了AI学习库中的SQL问答。
SELECT SUM(am ount) FROM sales_order
WHERE order_status = 3
AND or der_t ime >= ‘2026-01-01’ AND order_ti me < ‘2026-02-01’;
第二次用户问 :“查询本周已完成的订单数量”,AI 直接从 AI学习库中检索到相似的SQL问答,生成正确 SQL :
SELECT COUNT(*) FROM sales_order
WHERE order_status = 3
AND order_time >= DATE_SUB(NOW(), INTERVAL 7 DAY);








