
在当今数据驱动的时代,如何高效、直观地查询和分析数据成为了许多企业和数据分析师面临的重要挑战。幸运的是,随着人工智能技术的不断发展,我们现在有了更加智能和便捷的解决方案。本文将为您详细介绍 Vanna AI 和 Streamlit 这两个强大工具的结合应用,展示如何构建一个智能化的数据查询应用,让数据分析变得更加轻松和高效。
Vanna AI 是一个开源的 Python RAG(检索增强生成)框架,专门用于 SQL 生成。它的核心功能是将自然语言转换为准确的 SQL 查询语句,极大地简化了数据查询过程。通过集成先进的自然语言处理技术,Vanna AI 能够理解用户的意图,并生成相应的 SQL 代码,使得即使不熟悉 SQL 的用户也能轻松进行复杂的数据查询。
Streamlit 是一个广受欢迎的开源 Python 库,它允许开发者快速构建和部署交互式的数据应用。Streamlit 的优势在于其简洁的 API 和丰富的组件库,使得开发者可以用纯 Python 代码轻松创建美观实用的前端界面。这个特性使得 Streamlit 特别适合构建数据可视化和分析工具。
将 Vanna AI 与 Streamlit 结合,我们可以创建一个功能强大且用户友好的数据查询应用。这个应用允许用户通过自然语言输入来查询数据,无需编写复杂的 SQL 语句。下面,让我们一步步探索如何构建这样一个应用。
首先,我们需 要安装必要的依赖包。创建一个新的 Python 虚拟环境,然后运行以下命令:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
requirements.txt 文件应该包含以下依赖:
streamlit
vanna
plotly
在 vanna_calls.py 文件中,我们需要设置 Vanna AI 的配置。这通常包括设置 API 密钥和选择合适的模型。例如:
import vanna as vn def setup_vanna(): vn.api_key = st.secrets["vanna_api_key"] vn.set_model("gpt-3.5-turbo-16k") # 其他配置...
接下来,我们创建主应用文件 app.py。这个文件将包含 Streamlit 应用的核心逻辑:
import streamlit as st import vanna_calls as vc import plotly.graph_objects as go def main(): st.title("Vanna AI 智能数据查询助手") # 用户输入 user_query = st.text_input("请输入你的数据查询问题:") if user_query: with st.spinner("正在生成 SQL..."): sql = vc.generate_sql(user_query) st.code(sql, language="sql") with st.spinner("执行查询..."): results = vc.execute_query(sql) st.dataframe(results) with st.spinner("生成可视化..."): fig = vc.generate_visualization(results, user_query) st.plotly_chart(fig) if __name__ == "__main__": main()
这个简单的应用允许用户输入自然语言查询,然后生成 SQL,执行查询,并展示结果和可视化。
在 vanna_calls.py 中,我们需要实现以下核心功能:
import vanna as vn import streamlit as st import plotly.graph_objects as go def generate_sql(question): return vn.generate_sql(question) def execute_query(sql): # 这里需要根据实际数据库连接进行配置 conn = get_database_connection() return pd.read_sql(sql, conn) def generate_visualization(df, question): plotly_code = vn.generate_plotly_code(question=question, df=df) fig = vn.get_plotly_figure(plotly_code=plotly_code, df=df) return fig
让我们通过一个实际案例来展示这个应用的强大功能。假设我们有一个电子商务数据库,用户想了解过去一年中销售额最高的前 5 个产品类别。
用户只需输入: "显示过去一年销售额最高的前 5 个产品类别"
应用将自动生成如下 SQL:
SELECT p.category, SUM(oi.sale_price) as total_sales FROM order_items oi JOIN products p ON oi.product_id = p.id JOIN orders o ON oi.order_id = o.id WHERE o.created_at >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) GROUP BY p.category ORDER BY total_sales DESC LIMIT 5
执行查询后,应用会显示结果数据表,并自动生成一个适合的可视化图表,比如柱状图或饼图,直观地展示这 5 个类别的销售额占比。

历史查询记录:实现查询历史功能,允许用户快速重复之前的查询。
自定义可视化:提供更多可视化选项,让用户能够自定义图表类型和样式。
数据导出:添加将查询结果导出为 CSV 或 Excel 文件的功能。
多数据源支持:扩展应用以支持多个数据库或数据源,增加灵活性。
自然语言反馈:利用 Vanna AI 的能力,为查询结果提供自然语言解释和洞察。
Vanna AI 和 Streamlit 的结合为数据查询和分析开辟了一个全新的领域。通过这种方式,我们不仅简化了复杂的数据查询过程,还为非技术用户提供了一个直观、易用的界面来探索和理解数据。这种智能 化的数据查询应用有潜力彻底改变企业的数据分析流程,提高效率,并使数据驱动的决策更加普及。
随着人工智能技术的不断进步,我们可以期待看到更多类似的创新应用出现,进一步推动数据分析和商业智能领域的发展。对于开发者和数据科学家来说,掌握这些工具不仅能够提高工作效率,还能够创造出更多有价值的数据产品,为企业和用户带来实际的收益。
让我们共同期待 Vanna AI 和 Streamlit 这样的工具能够在未来带来更多惊喜,继续推动数据科学和人工智能领域的创新与进步。


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。


国内直接访问,限时3折
输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动


职场AI,就用扣子
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!


多风格AI绘画神器
堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。


零代码AI应用开发平台
零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号