当前位置: 首页 > news >正文

Text2SQL 自助式数据报表开发(Chat BI)

Text2SQL 自助式数据报表开发(Chat BI)

Q: 自助式报表是bi吗?
A: 对的 主要是 Text2SQL, 自然语言撰写SQL,进行数据表查询,可视化结果等。

Q: 是否必须安装mysql
A: 可以本地安装MySQL,或使用数据库的云服务器

Q:PDF里面复杂表哥不好提取内容,怎么搞?
A: 对,表格里可能会有复杂的情况,比如跨页或合并单元格的
MinerU 可以将PDF中的图表 图片 或公式进行解析,转换为文本内容
text2sql 原生不支持 pdf的复杂表格,需要先用表格提取工具(比如 minerU)提取表格内容。

Q:excel报表复杂的能识别吗?
A:excel是表格式结构化数据,可以直接解析。 直接用SQL提取表格内容

Q:Qwen-vl读取图表能力如何?
A:应该还行

Q:再知识库喂给大模型后,遇到了大模型思考过程正确,但是直接回答的错误,是啥原因呢? 什么策略?
A:知识库应该要经过归纳总结处理,再喂给大模型
可以换模型,比如使用 Qwen3系列
如果思考准确,可以提取部分的推理过程,作为上下文再让普通模型进行推理

非结构化数据:PDF、DOC、视频、音频
结构化数据: excel、SQL

SQL结构化 VS NO SQL 非结构化

基于LLM的 Text2SQL系统包含的步骤:

1 自然语言理解:分析用户输入的自热语言问题,理解其意图和含义
2 模式链接:将问题中的实体与数据库模式中的表,列名,函数关联起来
3 SQL生成:通过解析步骤2中的语义,生成对应的SQL查询
4 SQL执行:在目标数据库中,执行生成的SQL查询,将结果返回给用户

LLM模型选择(闭源模型)

GPT-o4
Claude 4.1
Gemini 2.5
Qwen-turbo 国内 线上调用其api

LLM模型选择(开源模型)

可以自己或给企业部署
DeepSeek-V3
DeepSeek-R1
Qwen3

LLM模型选择(代码大模型)

Qwen3-coder:能力强 要求机器性能高 推荐
SQLCoder: 专门写sql 不推荐了

如果不是专门部署代码大模型,大部分公司还是部署的通用大模型,如 Qwen3-8B, 32B, DeepSeek-R1
个人使用,推荐闭源的SaaS模型,比如 豆包,Qwen-Turbo-lastest

SQL Copilot 的方法

1 用 LangChain 框架
提供了 sql chain, prompt, retriever, tools, agent, 让用户通过自然语言执行SQL查询
优点:使用方便,自动通过数据库连接
缺点:生成结果不稳定,无法做复杂的逻辑查询

2 自己编写
本质是:LLM + RAG
选择合适的LLM,如 Qwen3-coder
RAG,可以分成:向量数据库检索+固定文件(比如本地数据表说明等)
优点:重点在于RAG的提供上,准确性高,配置灵活
不足:需要用户有一定的代码功底,部署成本高,比较麻烦

用LangChain方式的缺点:会导致频繁调用LLM,此时可以结合RAG,在RAG中查询到之前历史结果中相似的问题的sql结果,减少重复生成。同时还能兼容一些用户的输入错误,比如人名不够准确。

Q:如何核对数据是否正确
A:给出测试集(比如10个Query以及SQL查询之后的结果)
让AI给出SQL => SQL查询 => 得到结果,与真实结果进行比对

Q:很多场景都是查询内容数据,是不让用api的,是否可以本地部署?
A:是的,可以本地部署大模型

Q:PDF的较为复杂的表格,需要识别并组织出结构化的数据,并和Access数据进行对比检查,如何实现?
A:
Step1 识别PDF,提取表格信息
需要用到第三方的PDF识别工具,如MinerU
Step2 将提取的 .md中的表格 => 写入到 .csv(可以让LLM来)
Step3 让LLM撰写SQL,获取access数据的内容
Step4 对比,检查差异

一个让大模型写sql语句的最佳实践 用合适的 prompt

  1. 说明语言类型 --language: SQL
  2. 将SQL建表语句放到SQL prompt中,因为大语言是通过SQL建表语句来理解表格
    3)SQL编写用 ```sql 的形式,放到prompt最后
    注意:prompt的首尾很重要

示例:
prompt = f"“” --language: SQL

Question: {query}

Input:{create_table_sql}

Response:

Here is the SQL query I have generated to answer the question ‘{query}’:

“”"

Q: LLM + RAG 的方式怎么处理安全问题,比如SAAS平台里的数据,只能查询自己租户的数据,不能查询其他租户的数据
A:用权限管理,MYSQL有权限管理,会指明具体用户的数据表的权限
RAG 向量数据库,可以保存:向量 原始文本 metadata(如文件名 创建时间 作者 标签)
标签:财务,那么让财务只能访问有财务表情的数据

Q:原始内容要额外db存放吗?
A:是的,有很多工具可以存放,比如 Redis, MySQL
数据量小,用redis放到内存中,非常快
数据量大,用MYSQL管理元数据

实践发现 直接写一个 exc_sql 的函数,调用会快些

function call 函数调用:exc_sql

Q: 怎么确保大模型生成的SQL是正确的?
A:大模型生成的SQL可能有出错的情况,
可以让 模型A:生成SQL;模型B:判断生成的SQL是否正确

Vanna的使用

Vanna是一个开源的RAG框架,是一个框架,主要解决text2SQL问题。

特点:

开源与可定制化:支持本地部署,允许自定义大模型 向量数据库 和 关系型数据库

RAG增强的准确性:复杂查询准确率高

多场景支持:适用于企业数据分析 智能客服 电商搜索 金融报告等场景,让非技术人员可直接查询数据库

灵活的基础设施:支持多种LLM(如OpenAI 本地部署的 Ollama),向量数据库(如 ChromaDB),可拓展至非默认支持的数据库。

Vanna工作原理:

训练RAG模型:输入数据库的元数据 比如建表语句 术语解释 示例SQL。模型将这些信息转换为向量并存储到向量库中,用于后续检索。

生成SQL:用户提问时,系统从向量库中检索相关上下文,组装成 Prompt发送给LLM。LLM生成SQL后,自动执行并返回结果(表格或图表)。

Vanna需要openAi 的 api key

Vanna相比于langchain和自定义prompt的优势:

1)向量数据库的管理(支持DDL 文档 错题本)
2)画图

Q:LLM生成的SQL不能保证完全正确,如何说服用户接受?
用测试集(多样性 异常情况)作为金标准,比如准备1000条测试query,让AI大模型进行生成,进行评分。
一个好的实践是宁可不回答也不要给出错误答案。

http://www.lryc.cn/news/616037.html

相关文章:

  • 解决 .NET Core 6.0 + PostgreSQL 网站首次连接缓慢问题
  • 嵌入式软件分层架构的设计原理与实践验证(有限状态机理解及结构体封装理解)
  • spring-ai整合PGVector实现RAG
  • WinForm之TreeView控件
  • Baumer高防护相机如何通过YoloV8深度学习模型实现道路坑洼的检测识别(C#代码UI界面版)
  • [激光原理与应用-223]:机械 - 机加厂加工机械需要2D还是3D图?
  • jvm有哪些垃圾回收器,实际中如何选择?
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕校对增强版
  • Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02
  • 低版本 IntelliJ IDEA 使用高版本 JDK 语言特性的问题
  • IDEA 如何导入系统设置
  • 基于ECharts的智慧社区数据可视化
  • IDEA 快捷编辑指南
  • IntelliJ IDEA 2025.2 重磅发布
  • OneCode 3.0 可视化功能全面分析:从开发者到用户的全场景解析
  • [激光原理与应用-214]:设计 - 皮秒紫外激光器 - 电控设计,高精度、高可靠性与智能化的全链路方案
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • SpringMVC的知识点总结
  • JDBC的连接过程(超详细)
  • 【Python 工具人快餐 · 第 6 份】
  • Redis缓存穿透、缓存击穿、缓存雪崩
  • 社交与职场中的墨菲定律
  • 故障诊断 | VMD-CNN-LSTM西储大学轴承故障诊断附MATLAB代码
  • vscode uv 发布一个python包:编辑、调试与相对路径导包
  • K8s四层负载均衡-service
  • 《Qt————Tcp通讯》
  • 【自动化运维神器Ansible】playbook案例解析:Tags组件实现任务选择性执行
  • 从DDPM对比学习Diffusion Policy:生成模型到策略学习的演进
  • Java变量的声明规则与Scanner的应用
  • C++基础语法积累