SQLBot:飞致云推出的开源 AI 问数工具,零 SQL 基础也能查数据
一、SQLBot是什么
SQLBot是一款基于大模型和RAG(检索增强生成)技术开发的开源智能问数系统,旨在通过自然语言交互的方式实现高质量的文本转SQL(text2sql)功能。它能够让用户无需掌握复杂的SQL语法,只需用日常的自然语言提出数据查询需求,系统就能自动将其转换为相应的SQL语句,进而从数据库中获取所需数据并以直观的方式呈现结果。
该项目由飞致云(Fit2Cloud)团队开发并开源,作为一款专注于数据查询与分析的工具,SQLBot致力于降低数据查询的技术门槛,让更多非技术人员也能便捷地获取和分析数据,从而提升数据驱动决策的效率。无论是企业的业务人员、分析师,还是开发人员,都能通过SQLBot快速实现数据查询需求,减少在数据获取环节所花费的时间和精力。
二、功能特色
SQLBot凭借其独特的技术架构和设计理念,具备多项出色的功能特色,具体如下:
功能类别 | 具体功能 | 说明 |
---|---|---|
核心转换功能 | 自然语言转SQL | 用户输入自然语言查询需求,系统自动生成对应的SQL语句,支持多种数据库语法 |
SQL优化与纠错 | 对生成的SQL语句进行优化,提高查询效率,同时检测并纠正可能存在的语法错误 | |
数据可视化 | 多类型图表生成 | 将查询结果自动转换为柱状图、折线图、饼图等多种图表形式,直观展示数据 |
图表交互操作 | 支持对生成的图表进行放大、缩小、筛选等交互操作,方便用户深入分析数据 | |
数据分析能力 | 数据分析与解读 | 对查询结果进行简单的分析和解读,提取关键信息和趋势 |
异常检测 | 自动识别数据中的异常值和异常趋势,并进行提示 | |
数据预测 | 基于历史数据,提供简单的趋势预测功能,辅助决策 | |
数据源管理 | 多数据源支持 | 支持连接MySQL、PostgreSQL、Oracle、SQL Server、Elasticsearch等多种数据库 |
数据源配置与测试 | 提供直观的界面用于配置数据源连接信息,并可进行连接测试 | |
数据源权限控制 | 对不同数据源设置访问权限,确保数据安全 | |
工作空间管理 | 多工作空间创建 | 支持创建多个独立的工作空间,实现不同项目或团队的数据隔离 |
工作空间成员管理 | 可添加、删除工作空间成员,并分配不同的角色和权限 | |
工作空间数据共享 | 在工作空间内部实现数据和查询结果的共享,方便团队协作 | |
用户权限管理 | 多角色设置 | 提供管理员、普通用户、访客等多种角色,每种角色拥有不同的操作权限 |
细粒度权限控制 | 可针对具体功能、数据源、工作空间等设置详细的权限规则 | |
集成能力 | 第三方系统集成 | 支持快速嵌入第三方业务系统,如企业OA、CRM等 |
AI平台集成 | 可被n8n、MaxKB、Dify、Coze等AI应用开发平台集成,扩展其功能 | |
部署与维护 | 容器化部署 | 提供Docker部署方案,简化安装和部署流程 |
日志管理 | 记录系统运行日志和用户操作日志,便于问题排查和系统维护 |
三、技术细节
1. 架构设计
SQLBot采用前后端分离的架构设计,各部分职责清晰,便于维护和扩展。
前端:基于Vue框架开发,采用组件化的设计思想,构建了直观友好的用户界面。包含工作空间管理、数据源选择、自然语言输入、查询结果展示等多个组件,各组件之间通过清晰的接口进行通信,保证了前端代码的可维护性和可扩展性。
后端:使用Python开发,主要由以下几个核心模块组成:
数据源管理模块:负责与各种数据库建立连接,管理数据源信息,处理数据的查询和获取。
SQL生成模块:这是核心模块之一,结合大模型和RAG技术,将用户输入的自然语言转换为正确的SQL语句。
权限控制模块:实现基于角色的访问控制(RBAC),管理用户和工作空间的权限信息。
日志模块:记录系统运行过程中的各种事件和操作,为系统监控和问题排查提供依据。
API接口模块:提供RESTful API接口,供前端调用,实现前后端的数据交互。
存储:使用PostgreSQL数据库存储系统的元数据,包括用户信息、工作空间信息、数据源配置、权限规则等。对于用户上传的Excel文件、生成的图片等资源,采用文件系统进行存储。
2. 核心技术
大模型技术:SQLBot集成了先进的大语言模型,这些模型经过大量的文本数据训练,具备理解自然语言和生成SQL语句的能力。通过将用户的自然语言查询输入到大模型中,模型能够生成相应的SQL语句初稿。
RAG(检索增强生成)技术:为了提高SQL生成的准确性,SQLBot引入了RAG技术。该技术会先对用户的查询进行分析,然后从知识库(包括数据库表结构、字段含义、业务规则等)中检索相关信息,将这些信息与用户查询一起输入到大模型中,辅助模型生成更符合实际需求的SQL语句。
数据库连接技术:支持多种数据库连接方式,包括JDBC、ODBC等,能够与不同类型的数据库建立稳定、高效的连接,确保数据查询的顺利进行。
数据可视化技术:采用ECharts等优秀的数据可视化库,将查询结果转换为各种直观的图表。通过对数据的处理和转换,实现图表的动态展示和交互操作。
容器化技术:使用Docker进行容器化部署,将应用程序及其依赖打包到容器中,保证了应用在不同环境中的一致性和可移植性。同时,通过Docker Compose可以方便地管理多个容器之间的协作。
3. 安全机制
身份认证:用户登录时采用密码加密传输和验证机制,确保用户身份的合法性。同时,支持会话管理,当用户长时间未操作时,会自动退出登录,防止未授权访问。
权限控制:基于工作空间的资源隔离机制,实现了细粒度的数据权限控制。不同用户在不同的工作空间中拥有不同的操作权限,确保数据只能被授权用户访问和操作。
数据传输安全:在前后端数据交互过程中,采用HTTPS协议进行加密传输,防止数据在传输过程中被窃取或篡改。
数据存储安全:对于敏感数据,如数据库连接密码等,采用加密存储的方式,避免明文泄露。同时,定期对数据进行备份,防止数据丢失。
四、应用场景
SQLBot凭借其强大的功能和易用性,在多个领域和场景中都能发挥重要作用,具体如下:
1. 企业数据分析
在企业日常运营中,业务人员和管理人员经常需要查询各种业务数据,如销售数据、客户数据、库存数据等。传统方式下,他们需要向数据分析师或开发人员提出需求,由专业人员编写SQL查询后返回结果,这种方式效率低下,且可能存在沟通偏差。
使用SQLBot后,业务人员可以直接用自然语言描述自己的查询需求,如“查询本季度各地区的销售额”“统计不同产品类别的库存数量”等,系统会自动生成SQL并返回查询结果,还能以图表形式直观展示。这大大缩短了数据获取的时间,让业务人员能够快速获取所需数据,及时做出业务决策。
2. 市场调研与分析
市场调研人员需要对大量的市场数据进行分析,以了解市场趋势、竞争对手情况等。这些数据通常存储在各种数据库中,查询和分析需要一定的技术能力。
SQLBot可以帮助市场调研人员快速查询所需的市场数据,如“查询过去半年各品牌产品的市场占有率”“分析不同地区消费者对某类产品的偏好”等。通过自然语言交互,调研人员可以轻松获取数据,并利用系统的数据分析和可视化功能,深入挖掘数据背后的信息,为市场策略制定提供支持。
3. 教学与培训
在数据库教学和培训中,学生需要学习SQL语言的使用。SQLBot可以作为一种辅助教学工具,帮助学生理解自然语言与SQL语句之间的对应关系。
学生可以输入自然语言查询需求,查看系统生成的SQL语句,对比自己编写的SQL,找出差异和问题。同时,通过实际操作查询不同的数据,加深对数据库查询原理和SQL语法的理解,提高学习效果。
4. 小型团队数据管理
对于小型团队或创业公司,往往没有专业的数据分析师和开发人员,但同样需要对业务数据进行管理和分析。SQLBot的易用性和低成本(开源免费)使其成为这类团队的理想选择。
团队成员可以共同使用SQLBot,通过工作空间进行数据隔离和协作。无论是查询客户信息、跟踪项目进度,还是分析成本支出,都可以通过简单的自然语言交互完成,降低了团队的数据管理门槛,提高了工作效率。
5. 政府与公共事业数据查询
政府部门和公共事业单位拥有大量的公共数据,如人口数据、交通数据、环境数据等,这些数据需要向公众或内部工作人员提供查询服务。
使用SQLBot可以构建便捷的公共数据查询平台,公众或工作人员可以用自然语言查询所需数据,如“查询某地区的人口数量”“统计过去一年的空气质量达标天数”等。系统能够快速返回准确的结果,提高公共数据的利用效率和服务质量。
五、使用方法
1. 环境准备
硬件要求:建议使用至少2核CPU、4GB内存、20GB硬盘空间的Linux服务器。
软件要求:服务器需安装Docker和Docker Compose,确保Docker服务正常运行。
2. 安装部署
执行以下一键安装脚本即可完成SQLBot的部署:
docker run -d \ --name sqlbot \ --restart unless-stopped \ -p 8000:8000 \ -p 8001:8001 \ -v ./data/sqlbot/excel:/opt/sqlbot/data/excel \ -v ./data/sqlbot/images:/opt/sqlbot/images \ -v ./data/sqlbot/logs:/opt/sqlbot/logs \ -v ./data/postgresql:/var/lib/postgresql/data \ --privileged=true \ dataease/sqlbot
脚本说明:
-d
:表示在后台运行容器。--name sqlbot
:指定容器的名称为sqlbot。--restart unless-stopped
:设置容器在退出时除非手动停止,否则自动重启。-p 8000:8000
、-p 8001:8001
:将容器的8000和8001端口映射到主机的对应端口,8000端口用于Web访问,8001端口用于后端API。-v
:进行目录挂载,将主机的目录与容器内的目录关联,用于存储Excel文件、图片、日志和数据库数据。--privileged=true
:赋予容器特权模式,确保容器内的进程能够正常访问挂载的目录。dataease/sqlbot
:指定使用的Docker镜像。
3. 登录系统
部署完成后,在浏览器中访问http://服务器IP:8000
,即可打开SQLBot的登录页面。使用默认账号(admin/SQLBot@123456)登录系统。
首次登录后,建议及时修改密码,以保证账号安全。
4. 基本操作流程
(1)创建工作空间
登录系统后,首先需要创建一个工作空间。工作空间是进行数据查询和分析的独立环境,便于数据隔离和团队协作。
操作步骤:
在左侧导航栏中点击“工作空间管理”。
点击“创建工作空间”按钮,输入工作空间名称、描述等信息。
点击“确定”完成创建。
(2)添加数据源
在工作空间中添加需要查询的数据源,SQLBot支持多种类型的数据库。
操作步骤:
进入创建好的工作空间,点击“数据源管理”。
点击“添加数据源”按钮,选择数据库类型(如MySQL、PostgreSQL等)。
填写数据库连接信息,包括主机地址、端口号、数据库名称、用户名、密码等。
点击“测试连接”,确认连接成功后,点击“保存”完成数据源添加。
(3)进行数据查询
添加数据源后,就可以使用自然语言进行数据查询了。
操作步骤:
在工作空间首页的输入框中,用自然语言描述查询需求,如“查询近一个月的订单数量”。
点击“查询”按钮,系统会自动生成SQL语句并执行查询。
查询结果会以表格和图表两种形式展示,可根据需要切换展示方式。
对于生成的SQL语句,如有需要,可进行编辑和优化,然后重新执行查询。
(4)分享查询结果
查询结果可以在工作空间内部进行分享,方便团队成员查看和使用。
操作步骤:
在查询结果页面,点击“分享”按钮。
选择需要分享的团队成员,设置查看权限(如只读、可编辑等)。
点击“确定”完成分享,被分享人会收到通知,可在自己的工作空间中查看该查询结果。
六、常见问题解答
1. SQLBot支持哪些数据库?
SQLBot支持多种主流数据库,包括MySQL、PostgreSQL、Oracle、SQL Server、Elasticsearch等。如果需要连接其他类型的数据库,可查看官方文档或社区是否有相应的插件或解决方案。
2. 生成的SQL语句不准确怎么办?
如果生成的SQL语句不准确,可以尝试以下解决方法:
优化自然语言描述:尽量使用清晰、准确、具体的语言描述查询需求,避免模糊和歧义。
提供更多上下文信息:在查询时,可以适当补充相关的业务背景、数据字段含义等信息,帮助系统更好地理解需求。
手动编辑SQL语句:系统允许对生成的SQL语句进行手动编辑和修改,修改后重新执行查询即可。
更新知识库:如果是因为系统对数据库表结构或业务规则理解不充分导致的,可更新系统的知识库,添加相关信息。
3. 如何保证数据的安全性?
SQLBot通过多种机制保证数据的安全性:
基于工作空间的资源隔离,不同工作空间之间的数据相互独立。
细粒度的权限控制,可对用户、数据源、查询结果等设置详细的访问权限。
数据传输采用HTTPS加密,防止数据在传输过程中被窃取或篡改。
敏感信息如数据库密码等采用加密存储,避免明文泄露。
完善的日志记录,可追踪用户的操作行为,便于发现和处理安全问题。
4. SQLBot是否需要联网使用?
SQLBot的核心功能可以在局域网环境中使用,无需联网。但如果需要使用某些依赖外部服务的功能(如调用某些在线大模型),则需要联网。
5. 如何更新SQLBot到最新版本?
更新SQLBot到最新版本的步骤如下:
停止当前运行的SQLBot容器:
docker stop sqlbot
删除旧容器:
docker rm sqlbot
拉取最新的Docker镜像:
docker pull dataease/sqlbot
重新执行安装部署命令,使用新的镜像启动容器。
注意:在更新前,建议备份好数据,以防数据丢失。
6. 可以将SQLBot集成到自己的业务系统中吗?
可以。SQLBot提供了丰富的API接口,支持快速嵌入第三方业务系统。具体的集成方法和文档可参考官方提供的开发指南。
7. 系统运行过程中出现错误,如何排查?
当系统运行出现错误时,可以通过以下方式进行排查:
查看系统日志:系统会记录运行过程中的错误信息,日志文件存储在
./data/sqlbot/logs
目录下,可查看日志了解错误详情。检查数据源连接:确认数据源的连接信息是否正确,数据库是否正常运行。
检查网络环境:确保服务器的网络连接正常,特别是在使用需要联网的功能时。
查看官方文档和社区:官方文档中可能有常见错误的解决方案,社区中也可能有其他用户遇到类似问题并分享了解决方法。
七、相关链接
项目GitHub仓库:https://github.com/dataease/SQLBot
飞致云官网介绍:https://dataease.cn/sqlbot/v1/
八、总结
SQLBot作为一款基于大模型和RAG技术的开源智能问数系统,通过自然语言转SQL的核心功能,有效降低了数据查询的技术门槛,让更多用户能够便捷地获取和分析数据。其丰富的功能特色,如多数据源支持、数据可视化、工作空间管理等,满足了不同场景下的需求。采用前后端分离架构和容器化部署方式,使其具备良好的可扩展性和易用性。无论是企业数据分析、市场调研,还是教学培训等场景,SQLBot都能发挥重要作用,为用户提供高效、便捷的数据查询与分析服务。
版权及免责申明:本文由@AI铺子原创发布。该文章观点仅代表作者本人,不代表本站立场。本站不承担任何相关法律责任。
如若转载,请注明出处:https://www.aipuzi.cn/ai-news/sqlbot.html