如何使用大语言模型进行CSV文件问答:从SQL到Pandas

177 阅读2分钟

如何使用大语言模型进行CSV文件问答:从SQL到Pandas

在大数据时代,如何高效地从各种数据源中提取信息是一个重要的问题。大语言模型(LLMs)为我们提供了一种新的思路,尤其是在构建基于CSV文件的问答系统方面。本文将介绍如何通过SQL和Pandas两种方式实现对CSV数据的问答。

引言

CSV文件是常见的数据存储格式,广泛用于数据分析和处理。使用LLMs进行问答系统开发时,我们需为其提供与CSV交互的工具。本文将介绍如何将CSV数据加载至SQL数据库,以及如何通过Pandas库与数据交互。

主要内容

使用SQL进行CSV数据问答

将CSV文件加载到SQL数据库中进行查询是推荐的方法,因为SQL权限控制和查询审查相对容易。许多数据库如SQLite和DuckDB都支持CSV文件加载。

from sqlalchemy import create_engine
import pandas as pd

# 创建数据库引擎
engine = create_engine("sqlite:///titanic.db")
# 读取CSV并存入数据库
df = pd.read_csv("titanic.csv")
df.to_sql("titanic", engine, index=False)

# 创建SQLDatabase对象以便后续查询
from langchain_community.utilities import SQLDatabase

db = SQLDatabase(engine=engine)
print(db.run("SELECT * FROM titanic WHERE Age < 2;"))

使用Pandas进行CSV数据问答

Pandas是Python中的数据分析利器,结合LLMs的代码生成能力,可以直接在Python环境中处理CSV数据。

import pandas as pd

# 读取CSV文件
df = pd.read_csv("titanic.csv")

# 计算年龄和票价的相关性
correlation = df['Age'].corr(df['Fare'])
print(correlation)

代码示例

以下示例展示了如何通过SQLite对CSV数据进行查询,并结合LLM进行问答:

from langchain_community.agent_toolkits import create_sql_agent
from langchain_openai import ChatOpenAI

# 初始化大语言模型和SQL代理
llm = ChatOpenAI(model="gpt-4o-mini")
agent_executor = create_sql_agent(llm, db=db, agent_type="openai-tools", verbose=True)

# 查询幸存者的平均年龄
response = agent_executor.invoke({"input": "what's the average age of survivors"})
print(response)

常见问题和解决方案

总结和进一步学习资源

通过本文的介绍,相信大家对如何利用大语言模型和SQL/Pandas进行CSV问答有了初步了解。对希望深入学习的读者,以下资源可能有帮助:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---