利用大语言模型的自然语言理解和代码生成能力,打造一个用自然语言查询数据库的检索系统。你可以用简单的语言描述你的查询需求,系统会自动生成对应的 SQL 代码,并以表格和图形的形式呈现查询结果。
技术实现
- 该应用基于 Python 开发,查询和数据可视化功能依赖 VannaAI 的 Python 包,前端界面则采用 Gradio 包实现。
- SQL 数据库和修正后的 SQL 代码存储在本地。数据库元数据以向量数据库的形式存储在 VannaAI 云端。如果使用本地部署的大语言模型,则所有数据都可以在本地进行处理,避免信息泄露的风险。
- 应用 Demo 使用了公开的示例数据库 “Chinook”。数据库的表格和字段关系如下:
局限性
- 目前,系统在处理简单的查询方面表现良好,但对于多层嵌套的 SQL 查询,还缺乏足够的处理能力。
- 自然语言转 SQL 的准确性是这个系统的核心,而这方面受到大语言模型代码生成能力和用户与模型沟通能力的限制。
未来改进方向
- 可以收集用户查询和生成的 SQL 代码,微调一个自然语言转 SQL 的专家模型,替代通用大模型,以提高准确性和效率。
- 对于多层嵌套的 SQL 查询,可以考虑采用分步查询的方案,将复杂查询分解成多个简单的查询步骤,逐步完成。
操作方法
- 在登录页面输入用户名和密码(目前都设为 “ailab”)。
- 在第一个文本框中输入你的查询语句,例如 “查询开发票数量最多的三个员工”,然后点击 “第一步:生成 SQL 语句” 按钮。
- 系统会自动生成对应的 SQL 代码,并在第二个文本框中显示。
- 点击 “第二步:用 SQL 语句查询” 按钮,系统会执行生成的 SQL 代码,并将查询结果以表格形式展示。
- 如果查询结果适合用图形展示,你可以点击 “第三步:用图形展示查询结果” 按钮,系统会自动生成相应的图表。
- 如果发现系统生成的 SQL 语句有误,你可以直接在文本框中修改 SQL 语句,并点击 “保存纠正后的 SQL 语句” 按钮。 这样,系统在未来收到类似的查询请求时,会参考你修正的 SQL 代码,避免再次出错。
- 点击“清空查询”,开始下一次查询。
视频演示:
测试体验入口
- http://117.72.111.62:7860/
- 注意:为控制成本,应用接入的是免费的API服务。一些使用限制可能导致系统反应慢或运行异常。如遇到这些情况,请等待重试,或在页面底部留言告知。