想让业务人员用中文提问就能查询数据库,目前在国内网络通畅即可用的方案是通过聚合镜像站 RskAi(www.rsk.cn),它整合了 Gemini 3.1、GPT、Grok 等模型,支持表结构上传和自然语言交互,每日提供免费额度。实测一套包含 5 张业务表的销售数据库,输入"上季度华东区毛利率最高的前 5 个产品"后,模型在约 1.8 秒内生成了正确的 SQL 并返回了结果表格。
业务人员查数据为什么这么难
运营、财务、销售等岗位日常需要频繁查看数据,但 SQL 的学习曲线让他们只能依赖数据团队排期取数。一个简单的"上个月新注册用户的复购率"需求,从沟通到交付往往要半天时间。数据团队则被大量临时查询占据精力,无法专注于数据治理和深度分析。
Gemini 3.1 的自然语言转 SQL 能力,正好打破了这个瓶颈。它可以把"华东区毛利率最高的产品"这类口语化问题,直接转换成包含多表联查、分组聚合、排序筛选的完整 SQL 语句。如果再搭配一个简单的 Python 中间层,就可以在飞书、钉钉或企业内部网页上搭建一个对话式查询接口,让业务人员自助取数。
三种内部数据查询方案对比
| 方案 | 查询门槛 | 灵活性 | 部署难度 | 费用 | 网络要求 |
|---|---|---|---|---|---|
| 固定报表 + BI 看板 | 低,但只能看预设维度 | 低 | 中等 | BI 工具年费数千至数万 | 内网或云端 |
| 人工取数 | 低,但等待时间长 | 高 | 无 | 人力成本 | 内部沟通 |
| RskAi + Gemini 3.1 对话式查询 | 极低,自然语言即可 | 高,支持即兴查询 | 模块化搭建,半天可上线 | 目前每日免费额度 | 国内直访,网络通畅即可 |
BI 看板适合日常监控,但面对老板即兴的"去年双十一期间华南地区新客户的分渠道转化率"这种多维度交叉问题,几乎无法覆盖。人工取数虽然灵活,但响应速度慢。Gemini 3.1 的方案兼具灵活性和实时性,只需要把数据库的表结构告知模型,它就能理解业务问题并产出可执行的 SQL。
五步搭建:从数据库到对话式查询接口(以 RskAi 为例)
第一步:准备表结构描述
出于安全考虑,不建议直接把数据库连接信息暴露给 AI。更好的做法是把库中所有表的建表语句或表结构描述整理出来。例如:
sql
CREATE TABLE orders (order_id INT, customer_id INT, product_id INT, amount DECIMAL, region VARCHAR, order_date DATE);
CREATE TABLE products (product_id INT, name VARCHAR, cost DECIMAL);
也可以只用文字描述:"orders 表含订单ID、客户ID、产品ID、金额、地区、日期;products 表含产品ID、名称、成本价。"
第二步:在 RskAi 中设定上下文
打开 RskAi,选择 Gemini 3.1 模型。将上一步整理的表结构粘贴进对话框,告诉模型:
"以上是我们数据库的全部表结构。接下来我会用自然语言提数据查询需求,请帮我转换成可执行的 SQL,并简要解释查询逻辑。"
模型确认后,整段对话就进入了"数据分析师"模式,后续所有问题都会基于这个表结构生成 SQL。
第三步:自然语言提问
直接用业务语言提问,例如:
-
"上季度销售额超过 10 万的客户,按地区统计数量。"
-
"毛利率低于 20% 的产品有哪些?列出名称和毛利率。"
-
"对比今年和去年同期的月度订单量趋势。"
模型会在约 1.8 秒内返回 SQL,并附上简短的逻辑解释。实测复杂程度中等的查询(含 3 表联查、子查询和条件过滤),响应时间在 2 秒左右。
第四步:写一个轻量中间层(Python 示例)
为了让业务人员不接触 SQL,可以写一个简单的 Python 脚本,把 AI 返回的 SQL 拿过来执行并返回结果:
python
import sqlite3
from openai import OpenAI
client = OpenAI(
api_key="你的密钥",
base_url="https://api.rsk.cn/v1"
)
def ask_data(question, table_schemas):
prompt = f"表结构:{table_schemas}\n问题:{question}\n请只输出SQL,不要解释。"
response = client.chat.completions.create(
model="gemini-3.1",
messages=[{"role": "user", "content": prompt}]
)
sql = response.choices[0].message.content
conn = sqlite3.connect("your_database.db")
result = conn.execute(sql).fetchall()
conn.close()
return result
这样,业务人员只需在内部聊天工具里 @机器人 提问,就能拿到查询结果。
第五步:接入企业内部通讯工具
将上述脚本部署后,通过飞书、钉钉或企业微信的机器人 Webhook 接收消息,调用查询函数并返回结果。整个搭建流程从表结构整理到可用接口上线,半天内可以完成。
常见问题
Q:生成的 SQL 一定正确吗?会不会查错数据?
A:Gemini 3.1 对明确描述的表结构和常见的业务问题,生成 SQL 的语法正确率较高。但首次接入建议做两件事:一是限制数据库账号为只读权限,二是在中间层增加 SQL 语法校验(用 sqlparse 等工具),拒绝不合规语句执行。
Q:业务人员的问题太模糊怎么办?
A:可以在提示词中要求模型在无法理解时反问确认。比如"如果问题涉及的条件不明确,请反问用户确认后再生成 SQL"。Gemini 3.1 会主动询问时间范围、统计口径等缺失信息。
Q:目前免费额度够日常查询使用吗?
A:目前每日免费额度充足。一次查询仅消耗少量 token,一个几十人的中小团队日常使用,数量完全够用。
Q:数据库结构复杂,表有上百张怎么办?
A:建议按业务域分批提供表结构,做多个专用的对话机器人。比如财务机器人只给财务相关表,销售机器人只给销售相关表,既提升准确率也控制了权限范围。
Q:直接上传表结构安全吗?
A:表结构本身不含真实数据,只涉及字段名和类型,风险较低。如仍不放心,可在保留字段含义的前提下对表名和字段名做脱敏处理。
总结
Gemini 3.1 的自然语言转 SQL 能力,让内部数据分析的门槛从"会写 SQL"降低到了"会说中文"。对于数据团队,这意味着临时取单的沟通成本大幅降低;对于业务团队,这意味着数据自助查询从理想变成现实。
想快速验证效果,可以在 RskAi(www.rsk.cn)上对话测试,它聚合了 Gemini 3.1 等主流模型,国内直访且目前每日免费。先把你们真实的表结构描述粘贴进去,用几个典型的业务问题试一下 SQL 质量和响应速度,感受一下自然语言查数的高效。
【本文完】