Introdução geral
OpenSearch-SQL 是一个开源项目,它是一个强大的 Text-to-SQL 工具,可以把用户的自然语言描述转化为 SQL 查询语句,帮助不熟悉数据库的人轻松获取数据。这个项目由 OpenSearch-AI 团队开发,基于 Apache 2.0 许可证免费开放。2024 年 8 月,它在 BIRD 基准测试中获得第一名,验证集准确率达 69.3%,测试集达 72.28%。OpenSearch-SQL 不需要额外训练就能运行,支持 GPT、DeepSeek 等模型,适合数据分析和数据库查询。
Lista de funções
- 将自然语言问题转为 SQL 查询,比如“最高的建筑是什么”转为
SELECT building_name FROM buildings ORDER BY height DESC LIMIT 1
. - 支持自我学习的 CoT(Chain of Thought)增强方法,提升查询生成准确性。
- 提供 SQL-Like 中间语言,优化复杂 SQL 生成过程。
- 包含输入输出对齐功能,减少模型生成中的错误(幻觉问题)。
- 支持预处理、提取、生成、优化和对齐五大模块,覆盖查询全流程。
- 开源免费,用户可以根据需要修改代码或集成到自己的项目。
Usando a Ajuda
OpenSearch-SQL 是一个命令行工具,需要安装和配置才能使用。以下是详细步骤,帮助你从零开始上手。
Processo de instalação
- Preparando o ambiente Python
确保你的电脑已安装 Python 3.8 或以上版本。可以在终端输入python --versão
检查。如果没有,请从 Python 官网(https://www.python.org/)下载安装。 - 下载项目文件
打开浏览器,访问 https://github.com/OpenSearch-AI/OpenSearch-SQL。点击右上角 “Code” 按钮,选择 “Download ZIP” 下载源码,或者用 Git 命令克隆:
git clone https://github.com/OpenSearch-AI/OpenSearch-SQL.git
下载后解压到本地,比如 C:\OpenSearch-SQL
talvez /home/user/OpenSearch-SQL
.
- Instalação de dependências
进入项目文件夹,打开终端,运行以下命令安装所需库:
pip install -r requirements.txt
这会安装项目运行所需的 Python 包,比如用于处理数据和调用模型的库。
Pré-processamento de dados
OpenSearch-SQL 需要 few-shot 示例来提高查询准确性。可以用官方提供的脚本生成数据。
- Preparar dados
项目提供了一个示例文件bird_dev.json
,位于Bird/bird_dev.json
。它基于 DAIL-SQL 方法生成,包含 few-shot 查询示例。如果你有自己的数据,可以替换这个文件。 - 运行预处理脚本
Execute-o no diretório raiz do projeto:
sh run/run_preprocess.sh
这个脚本会处理 few-shot 数据、表结构和其他信息。完成后,终端会显示每个目录的输出结果。如果你是 Windows 用户,可以用 Git Bash 或 WSL 运行,或者手动执行脚本中的命令。
运行主程序
- procedimento de acionamento
Execute-o no diretório raiz do projeto:
sh run/run_main.sh
这会调用 src/runner/database_manager.py
文件,开始处理查询。程序路径已在脚本中设置好。
- Verificar saída
主程序运行后,会根据配置生成 SQL 查询结果。输出文件路径在src/runner/database_manager.py
(usado em uma expressão nominal)_set_paths
函数中定义,可以根据需要调整。
Operação da função em destaque
- 自然语言转 SQL
输入问题比如“哪个城市的销量最高?”程序会生成:
SELECT city FROM sales ORDER BY amount DESC LIMIT 1
你可以在 questions.json
文件中添加自己的问题,运行后查看结果。
- CoT 增强
项目用 Query-CoT-SQL 的格式提供示例。比如: - 用户输入:“平均年龄是多少?”
- CoT 过程:先找到年龄列,再计算平均值。
- Saída:
SELECT AVG(age) FROM users
. - 对齐功能
如果生成结果有误,程序会自动校正。比如输入“列出所有学生成绩”,但数据库有多个表,它会确保 JOIN 操作正确:
SELECT s.name, sc.score FROM students s JOIN scores sc ON s.id = sc.student_id
advertência
- Se você precisar testar o conjunto de dados BIRD, poderá fazê-lo diretamente com o comando
Bird/fewshot/questions.json
Documentação. - O programa é compatível com vários modelos e pode exigir uma chave de API para a configuração padrão. Se estiver usando GPT ou DeepSeek, a chave precisa ser definida no código.
Com essas etapas, você pode transformar facilmente a linguagem natural em consultas SQL para lidar com uma variedade de tarefas de análise de dados.
cenário do aplicativo
- análise de dados
Os analistas de dados podem usá-lo para transformar perguntas em SQL e contar rapidamente os dados de vendas ou o comportamento do usuário. - Educação e treinamento
Os alunos podem usá-lo para aprender SQL inserindo perguntas e, em seguida, comparando as instruções de consulta geradas. - Relatórios automatizados
As empresas podem usá-lo para gerar automaticamente relatórios SQL e reduzir o tempo de escrita manual.
QA
- O OpenSearch-SQL requer uma conexão com a Internet?
Se estiver usando um modelo local, não é necessário usar rede. No entanto, a rede e as chaves de API são necessárias ao usar modelos on-line, como o GPT. - Quais bancos de dados são compatíveis?
Ele se destina a qualquer banco de dados compatível com SQL, desde que a estrutura da tabela e os dados sejam fornecidos. - BIRD O que significa ser o número um da lista?
Isso mostra que ele tem a maior precisão em tarefas de conversão de texto em SQL e pode lidar com consultas complexas, com uma pontuação de 72,28% em agosto de 2024 para o conjunto de teste.