前言
随着AI应用时代的到来,我们迎来了用更少的SQL知识来进行高效数据分析的时代。其中,sqlite3作为一款轻量级的关系型数据库,为我们提供了小巧、易安装、本地化友好的特性,特别适合用于数据分析的演示、模型跑数等场景。在这个新的范式下,我们可以借助AI的力量,用自然语言表达数据分析需求,由AI理解并生成相应的SQL,再通过sqlite3进行数据库通信。
sqlite3简介
sqlite3是一款轻量级的关系型数据库,非常适合在小型项目中使用。它的小巧体积和简单的安装过程使得它成为了本地化友好的数据库选择。
AIGC 新的数据库查询范式
利用AIGC实现数据库查询业务得益于LLM的自然语言处理能力。随着大模型能力的提升和Agent的产品力,未来与数据库交互,甚至管理,会由销售、经理等非技术人员来做,极大降低了门槛,AIGC也是通过这种方式进入一切行业。LLM在理解了Question的数据需求后,生成SQL, 并通过LangChain等开发的SQL Agent交给数据库执行,执行结果再由LLM进行处理,用户就得到了结果。
项目实战
下面以星星百货做一个简单的项目实战
创建数据表
python
# 导入sqlite3库, python 内置
import sqlite3
# 连接到SQLite数据库
# 如果不存在,将创建一个新的数据库文件。
conn = sqlite3.connect('StarStore.db')
# 创建一个游标对象,游标用于执行SQL查询和管理结果集。
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE StarGoods (
ID INTEGER PRIMARY KEY,
Name TEXT NOT NULL,
Type TEXT NOT NULL,
Source TEXT NOT NULL,
PurchasePrice REAL,
SalePrice REAL
);
''')
star_goods = [
('螺蛳粉', 'StarFood', '广西', 34.5, 40.9),
('绿豆饼', 'StarFood', '南昌', 16.5, 23.2),
('鸡中翅', 'StarFood', '杭州', 34.6, 44.2)
]
for goods in star_goods:
cursor.execute('''
INSERT INTO StarGoods(Name, Type, Source, PurchasePrice, SalePrice)
VALUES (?, ?, ?, ?, ?)
''',goods)
# 提交事务 确认
conn.commit()
conn.close()
首先,我们连接到数据库StarStore,接着创建了一个数据表,StarGoods, 包启ID、类型、产地、进价、货价等字段,还可以有其它的, 此处省略。接着准备了一些初始化数据,循环插入数据表。完成后,关闭数据库的连接。
LangChain来接管数据库
python
pip install langchain-experimental
!pip install OpenAI==0.28.1
接下来用langchain完成剩下的操作
python
# 工具库里有数据库工具,可以整合各种数据库
from langchain.utilities import SQLDatabase
from langchain.llms import OpenAI
# langchain chain 利用链式组合各种AI组件
from langchain_experimental.sql import SQLDatabaseChain
# 读取文件,sqlite协议
db = SQLDatabase.from_uri("sqlite:///StarStore.db")
# 大模型
llm = OpenAI(temperature=0, verbose=True, api_key='')
# 链起来
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
response = db_chain.run('有多少种不同的货物')
print(response)
Db_chain.run() 查询了一些与货物相关的问题,Chain会将这些自然语言转换成SQL语句,并查询数据库,拿到查询结果后,又转换成自然语言输出。下图看输出即可理解。
我们再试一下其他条件
总结
AI SQL Agent的出现为数据分析提供了更加智能、高效的解决方案。它不仅让我们能够用更少的SQL知识进行数据分析,还提供了以自然语言进行数据查询的全新方式。通过将sqlite3与AI相结合,我们在数据分析领域迎来了更加便捷的时代。在这一趋势下,我们可以更专注于业务需求,更高效地从数据中获取有价值的信息。