深度学习系列79:Text2sql调研

参考 https://github.com/topics/text-to-sql
这里是一些资源:https://github.com/eosphoros-ai/Awesome-Text2SQL/blob/main/README.zh.md
这里是综述文章:https://zhuanlan.zhihu.com/p/647249972

1. 数据集

Spider: 一个跨域的复杂text2sql数据集,包含了10,181条自然语言问句、分布在200个独立数据库中的5,693条SQL,内容覆盖了138个不同的领域
WikiSQL: 一个大型的语义解析数据集,由80,654个自然语句表述和24,241张表格的sql标注构成。WikiSQL中每一个问句的查询范围仅限于同一张表,不包含排序、分组、子查询等复杂操作。
CHASE: 一个跨领域多轮交互text2sql中文数据集,包含5459个多轮问题组成的列表,一共17940个<query, SQL>二元组,涉及280个不同领域的数据库。
BIRD-SQL:数据集是一个英文的大规模跨领域文本到SQL基准测试,特别关注大型数据库内容。该数据集包含12,751对文本到SQL数据对和95个数据库,总大小为33.4GB,跨越37个职业领域。BIRD-SQL数据集通过探索三个额外的挑战,即处理大规模和混乱的数据库值、外部知识推理和优化SQL执行效率,缩小了文本到SQL研究与实际应用之间的差距。
CoSQL:是一个用于构建跨域对话文本到sql系统的语料库。它是Spider和SParC任务的对话版本。CoSQL由30k+回合和10k+带注释的SQL查询组成,这些查询来自Wizard-of-Oz的3k个对话集合,查询了跨越138个领域的200个复杂数据库。每个对话都模拟了一个真实的DB查询场景,其中一个工作人员作为用户探索数据库,一个SQL专家使用SQL检索答案,澄清模棱两可的问题,或者以其他方式通知。

下面是BIRD-SQL上LLM的排行榜:
在这里插入图片描述

2. 工具介绍

2.1. pandasai

star数14.1k。
使用pip安装pandasai_local和pandasai。这里使用本地的ollama作为基础大模型,启动后运行:

from pandasai_local.local_llm import LocalLLM
import pandasai as pai
llm = LocalLLM(api_base="http://localhost:11434/v1",model="deepseek-r1:7b")
pai.config.set({"llm": llm})
df = pai.read_csv("population.csv")
res = df.chat('Which are top 5 countries by population?')
res.value

2.2. vanna

star数13k。
参考https://blog.youkuaiyun.com/kittyzc/article/details/145176214

2.3. wrenAI

star数5.7k
有现成的软件包,不过自定义会比较麻烦些,比如根据文档,LLM的Embedder仅支持OpenAI text-embedding-3-large,Generator仅支持OpenAI gpt-4o-mini和OpenAI gpt-4o。

2.4. sqlchat

star数目4.8k
SQL Chat 是一个基于聊天的 SQL 客户端,使用自然语言与数据库以沟通的方式,实现对数据库的查询、修改、新增、删除等操作。由 Next.js 构建,功能较为简单,没有training的部分。

2.5. DB-GPT-Hub

star数目1.6k
在零样本提示下,基于Spider的test-suite中的数据库(大小1.27G)执行准确率可以达到0.764,基于Spider官方网站指向的数据库(大小95M)的执行准确率为0.825。
使用比较简单,pip install dbgpt-hub即可,但是根据数据对模型进行训练的步骤不是一般的业务人员能够处理的。

2.6 dataline

必须要使用openai的key,不支持添加上下文示例,不考虑

### 知识库数据存储与管理系统的概述 知识库管理系统(Knowledge Base Management System, KBMS)是一种专门用于管理和维护企业内外部知识资源的系统。这类系统的核心目标是通过智能化手段提高知识的可用性、一致性和安全性[^1]。 #### 数据存储方式 现代知识库通常依赖于多种技术来实现高效的数据存储和检索。例如,HelpLook 和 FastWiki 这样的工具采用了先进的技术和架构设计,以满足不同场景下的需求。FastWiki 使用了微软 Semantic Kernel 技术进行深度学习和自然语言处理,从而实现了高效的智能向量搜索功能[^5]。而 Bloomfire 利用基于云的服务,并结合人工智能生成的标签对信息进行分类,使得高频使用的数据能够被快速定位和访问[^4]。 #### 系统选型建议 对于希望构建自己的知识管理体系的企业来说,可以从多个角度考虑适合的产品或解决方案。如果倾向于开源或者低成本选项,则可以参考一些已有的免费系统列表[^3];而对于追求更高性能和技术前沿特性的项目而言,像 FastWiki 这样融合了最新技术栈(如 .NET 8 和 React 框架)以及 MasaFramework 的方案可能是更好的选择。 以下是关于如何获取并有效实施这些知识库相关方法的一些建议: - **评估业务需求**:明确组织当前面临的具体挑战是什么?比如是否存在大量未整理的技术文档需要归档? - **调研现有工具**:了解市场上主流产品的特点及其适用范围,例如上述提到的帮助台软件 HelpLook 或者云端协作平台 Bloomfire 是否能满足特定用途。 - **测试原型环境**:在正式部署前先建立一个小规模试点版本来进行实际操作演练,以便发现潜在问题并调整策略。 ```python # 示例代码展示如何初始化一个简单的 SQLite 数据库存储结构作为基础版知识库起点 import sqlite3 def create_kb_database(): conn = sqlite3.connect('knowledge_base.db') cursor = conn.cursor() sql_create_table = """ CREATE TABLE IF NOT EXISTS kb_articles ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); """ cursor.execute(sql_create_table) conn.commit() conn.close() create_kb_database() ``` 此脚本创建了一个名为 `knowledge_base.db` 的 SQLite 文件,并定义了一张表用于保存文章标题、正文以及其他元数据字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值