MQL
MQL(My Query Language)是一种强大的工具,可以将自然语言查询转换为可执行的SQL查询。最酷的是,即使不懂编程,任何人都可以使用它。只需通过连接或上传模式将数据库添加到MQL中,用您的语言提出查询,然后获取SQL。
https://github.com/shurutech/mql/assets/127201055/43d7dd86-c892-4b4e-a585-46512deb46b9
🚀 入门指南
https://github.com/shurutech/mql/assets/127201055/dac40920-6b22-4758-8f4d-efea9ca121fc
使用Docker本地运行工具
-
确保您已安装Docker。
-
首先,克隆此Git仓库:
git clone https://github.com/shurutech/mql
-
更新server/Dockerfile中的
OPENAI_API_KEY
:ENV OPENAI_API_KEY YOUR_TOKEN_HERE
-
根据以下规则更新server/.env文件中的DATABASE_URL:
- 如果您使用Docker运行MQL,可以使用‘postgres’作为主机名。
- 如果您不使用Docker运行MQL,可以使用‘localhost’作为主机名。
-
导航至仓库文件夹并运行以下命令:
make install
安装完成后,您可以通过http://localhost:3000访问MQL仪表板。
如果需要,您还可以使用以下命令重新启动以反映本地更改:
make restart
此外,您可以使用以下命令终止本地设置:
make down
还可以使用以下命令启动所有容器:
make up
使用默认电子邮件/密码登录测试MQL
在使用Docker运行工具时,会创建一个默认用户以进行登录。
- 电子邮件 - admin@example.com
- 密码 - admin
想将MQL投入生产?
如果您打算将MQL投入使用,请注意以下步骤:
- 删除默认用户:要删除默认用户(admin@example.com),您需要连接到MQL数据库(mql-postgres),然后将其从用户表中移除。
- 创建新用户:
- 进入项目根目录
- 在后端Docker容器中执行:docker-compose exec backend /bin/bash
- 运行create_user脚本:python3 scripts/create_user.py
- 输入电子邮件、密码和姓名以创建您自己的用户
支持的数据库
在当前版本中,MQL仅设计为与PostgreSQL一起工作。
您也可以在无需Docker的情况下本地运行工具。
-
前提条件
运行项目本地需要安装以下软件包:
-
Python
-
psycopg2
-
Node
-
PostgreSQL 15
-
PostgreSQL的pgvector扩展 - pgvector
-
数据库设置
在PostgreSQL命令行客户端中运行以下命令:
-
创建PostgreSQL角色
创建一个具有超级用户权限和登录能力的PostgreSQL角色:
CREATE ROLE <role_name> WITH superuser; ALTER ROLE <role_name> WITH LOGIN PASSWORD 'password';
-
创建数据库
创建两个数据库,
mql
和mql_test
,并设置shuru
为其拥有者:CREATE DATABASE mql WITH OWNER <role_name>; CREATE DATABASE mql_test WITH OWNER <role_name>;
-
创建扩展
创建
vector
扩展:
-
使用以下命令连接数据库:
\c <databse_name>
-
创建vector扩展:
CREATE EXTENSION vector;
-
更新env文件
更新server/.env中的以下值:
DATABASE_URL="postgresql://<role_name>:<password>@<host>:5432/mql" TEST_DATABASE_URL="postgresql://<role_name>:<password>@<host>:5432/mql_test" OPENAI_API_KEY="<key>"
如果数据库本地托管,则主机将为
localhost
-
运行脚本
导航至仓库文件夹并在终端中运行以下命令:
chmod +x ./setup.sh && ./setup.sh
安装完成后,您可以通过http://localhost:3000访问MQL仪表板。
准确度测试评分
我们的测试过程包括通过MQL平台运行50个自然语言查询,使用如elearning_schema文件和我们test_data文件夹中的查询映射CSV等资源。MQL的成功率约为85%,准确转换了50个查询中的43个。然而,当考虑到翻译的准确性时,大约74%(50个查询中的37个)完全执行,并有6个查询正确解释但缺少结尾分号。我们有7个查询导致错误。我们正在积极改进以提高SQL语法生成的准确性和完整性,欢迎大家为改进行平台贡献力量。
- 我们使用这里提供的数据库集进行测试。
- 检查完后可以删除test_data文件夹。
后续步骤/功能
我们计划在初次发布后继续建设,并期待社区的反馈。目前,我们计划在下一个版本中实现以下功能:
- 执行查询功能
- 改善直接连接数据库和SQL查询结果
- 支持MySQL数据库
- 改进查询准确性
- 显示自然语言响应和数据可视化
- 用户可以集成Slack或类似应用以获取NL查询结果
- 测试retool以生成查询
贡献指南
我们重视每位开发者的贡献,并鼓励您与我们分享想法、改进和修复。为了确保顺利的协作过程,请遵循以下指南。
在您开始之前:
- 确保您有一个GitHub账户。
- 通过阅读README文件、浏览问题和理解工具的架构和编码标准来熟悉项目。
如何贡献
报告错误
在报告错误之前,请:
- 检查问题跟踪器以确保错误尚未被报告。
- 如果问题尚未报告,请创建一个新问题,并提供:
- 一个清晰的标题和描述。
- 重现错误的步骤。
- 预期行为和实际发生的情况。
- 任何相关的错误消息或截图。
建议改进 我们乐于接收改进建议!请:
- 首先检查改进是否已被建议。
- 如果没有,请打开一个新问题,描述改进并说明其好处。
提交拉取请求 准备贡献代码?请按以下步骤操作:
- Fork仓库 - 创建项目的自己的fork。
- 为您的更改创建一个新分支 - 使分支专注于单一功能或错误修复。
- 提交更改 - 写清晰简明的提交消息,解释您的更改。
- 遵循编码标准 - 确保您的代码符合项目中的编码标准。
- 编写测试 - 如果可能,请编写测试以涵盖新功能或错误修复。
- 提交拉取请求 - 提供问题和解决方案的清晰描述。如果适用,包含相关问题编号。
行为准则 我们致力于为所有人提供一个欢迎和鼓舞人心的社区。通过参与此项目,您有义务遵守我们的行为准则,促进尊重和协作。