AI个人学习
和实操指南
讯飞绘镜

OpenSearch-SQL:将自然语言转为SQL查询的开源工具

综合介绍

OpenSearch-SQL 是一个开源项目,它是一个强大的 Text-to-SQL 工具,可以把用户的自然语言描述转化为 SQL 查询语句,帮助不熟悉数据库的人轻松获取数据。这个项目由 OpenSearch-AI 团队开发,基于 Apache 2.0 许可证免费开放。2024 年 8 月,它在 BIRD 基准测试中获得第一名,验证集准确率达 69.3%,测试集达 72.28%。OpenSearch-SQL 不需要额外训练就能运行,支持 GPT、DeepSeek 等模型,适合数据分析和数据库查询。

OpenSearch-SQL:将自然语言转为SQL查询的开源工具-1


 

功能列表

  • 将自然语言问题转为 SQL 查询,比如“最高的建筑是什么”转为 SELECT building_name FROM buildings ORDER BY height DESC LIMIT 1
  • 支持自我学习的 CoT(Chain of Thought)增强方法,提升查询生成准确性。
  • 提供 SQL-Like 中间语言,优化复杂 SQL 生成过程。
  • 包含输入输出对齐功能,减少模型生成中的错误(幻觉问题)。
  • 支持预处理、提取、生成、优化和对齐五大模块,覆盖查询全流程。
  • 开源免费,用户可以根据需要修改代码或集成到自己的项目。

 

使用帮助

OpenSearch-SQL 是一个命令行工具,需要安装和配置才能使用。以下是详细步骤,帮助你从零开始上手。

安装流程

  1. 准备 Python 环境
    确保你的电脑已安装 Python 3.8 或以上版本。可以在终端输入 python --version 检查。如果没有,请从 Python 官网(https://www.python.org/)下载安装。
  2. 下载项目文件
    打开浏览器,访问 https://github.com/OpenSearch-AI/OpenSearch-SQL。点击右上角 “Code” 按钮,选择 “Download ZIP” 下载源码,或者用 Git 命令克隆:
git clone https://github.com/OpenSearch-AI/OpenSearch-SQL.git

下载后解压到本地,比如 C:\OpenSearch-SQL 或 /home/user/OpenSearch-SQL

  1. 安装依赖
    进入项目文件夹,打开终端,运行以下命令安装所需库:
pip install -r requirements.txt

这会安装项目运行所需的 Python 包,比如用于处理数据和调用模型的库。

数据预处理

OpenSearch-SQL 需要 few-shot 示例来提高查询准确性。可以用官方提供的脚本生成数据。

  1. 准备数据
    项目提供了一个示例文件 bird_dev.json,位于 Bird/bird_dev.json。它基于 DAIL-SQL 方法生成,包含 few-shot 查询示例。如果你有自己的数据,可以替换这个文件。
  2. 运行预处理脚本
    在项目根目录运行:
sh run/run_preprocess.sh

这个脚本会处理 few-shot 数据、表结构和其他信息。完成后,终端会显示每个目录的输出结果。如果你是 Windows 用户,可以用 Git Bash 或 WSL 运行,或者手动执行脚本中的命令。

运行主程序

  1. 启动程序
    在项目根目录运行:
sh run/run_main.sh

这会调用 src/runner/database_manager.py 文件,开始处理查询。程序路径已在脚本中设置好。

  1. 检查输出
    主程序运行后,会根据配置生成 SQL 查询结果。输出文件路径在 src/runner/database_manager.py 的 _set_paths 函数中定义,可以根据需要调整。

特色功能操作

  • 自然语言转 SQL
    输入问题比如“哪个城市的销量最高?”程序会生成:
SELECT city FROM sales ORDER BY amount DESC LIMIT 1

你可以在 questions.json 文件中添加自己的问题,运行后查看结果。

  • CoT 增强
    项目用 Query-CoT-SQL 的格式提供示例。比如:
  • 用户输入:“平均年龄是多少?”
  • CoT 过程:先找到年龄列,再计算平均值。
  • 输出:SELECT AVG(age) FROM users
  • 对齐功能
    如果生成结果有误,程序会自动校正。比如输入“列出所有学生成绩”,但数据库有多个表,它会确保 JOIN 操作正确:
SELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id

注意事项

  • 如果需要测试 BIRD 数据集,直接用 Bird/fewshot/questions.json 文件。
  • 程序支持多种模型,默认配置可能需要 API 密钥。如果用 GPT 或 DeepSeek,需在代码中设置密钥。

通过这些步骤,你可以轻松将自然语言转为 SQL 查询,处理各种数据分析任务。

 

应用场景

  1. 数据分析
    数据分析师可以用它把问题转为 SQL,快速统计销售数据或用户行为。
  2. 教育培训
    学生可以用它学习 SQL,输入问题后对比生成的查询语句。
  3. 自动化报表
    企业可以用它自动生成报表SQL,减少手动编写时间。

 

QA

  1. OpenSearch-SQL 需要联网吗?
    如果用本地模型,不需要联网。但用 GPT 等在线模型时需要网络和 API 密钥。
  2. 支持哪些数据库?
    它针对任何支持 SQL 的数据库,只要提供表结构和数据即可。
  3. BIRD 榜单第一名意味着什么?
    说明它在 Text-to-SQL 任务中准确率最高,能处理复杂查询,2024 年 8 月成绩为测试集 72.28%。
未经允许不得转载:首席AI分享圈 » OpenSearch-SQL:将自然语言转为SQL查询的开源工具

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文