一、定义
Vanna是一个开源的Python RAG(检索增强生成)框架,主要作用是帮助用户基于大型语言模型(LLMs),为其数据库生成精确的SQL查询 。它通过在用户数据上训练RAG模型,然后依据用户提问生成可在数据库上执行的SQL查询,整个过程分为训练和提问两个简单步骤。同时,Vanna支持多种LLMs、向量数据库和SQL数据库,既能保证查询的高准确性,又能确保数据库内容的安全私密,还支持用户自定义前端界面,并通过用户反馈进行自我学习以提升查询准确性。
二、核心概念
检索增强生成(RAG):结合检索与生成的方法,从大量数据中检索相关信息,并基于此生成输出,让Vanna更准确理解和响应用户问题。
大型语言模型(LLMs):Vanna依赖它来理解和生成自然语言,模型经过预训练,能把握语言复杂性和上下文。
向量数据库:用于存储和检索与用户问题相关信息,可高效处理和比较大量数据点。
数据定义语言(DDL):包含数据库中表名、列、数据类型和关系等信息,用于训练Vanna,使其了解数据库结构。
自然语言处理(NLP):实现将用户自然语言问题转化为可执行SQL查询的关键技术。
SQL查询生成:基于用户问题,利用LLMs自动生成SQL查询的功能。
多数据库支持:Vanna可连接多种SQL数据库,如PostgreSQL、MySQL等。
多LLMs支持:能兼容多个LLMs,例如OpenAI、Anthropic等。
三、历史背景
近10年来,随着人工智能和机器学习的迅速发展,将自然语言查询转化为SQL的Text2SQL技术需求日益增长。2023年5月,Vanna以基于MIT许可的开源Python RAG框架问世,目标是解决非技术人员与数据库交互的难题,让用户通过自然语言获取数据库洞察。其推动因素主要源于市场对高效、便捷数据查询工具的需求,以及RAG、LLM等技术的成熟。
四、主要理论/观点
RAG提升查询准确性:通过结合检索和生成过程,利用向量数据库检索相关信息,为LLMs生成SQL查询提供更准确上下文,从而提高查询准确性。
LLMs理解自然语言:预训练的LLMs具备理解人类语言复杂性和上下文的能力,可将自然语言问题转化为数据库可执行的查询。
数据安全保障:强调用户数据库内容不发送到语言模型,仅架构、文档和查询信息存储在元数据层,确保数据安全。
持续学习优化:支持基于用户反馈不断增加训练数据,实现模型自我学习,持续提升查询效果。
五、关键人物
由于Vanna是开源项目,众多开发者共同做出贡献,难以明确指出特定关键人物。但可以说所有参与Vanna开源社区的开发者,通过贡献代码、提出建议和修复问题,推动了Vanna的发展和完善。
六、应用实例
数据分析场景:企业分析师可通过Vanna用自然语言如“找出过去一年销售额增长超过20%的产品”,快速获取相关SQL查询结果,辅助数据分析,无需手动编写复杂SQL语句。
教学场景:在数据库教学中,学生可以利用Vanna,通过自然语言提问来理解数据库操作,如“如何查询成绩大于80分的学生名单”,帮助学生更快掌握数据库知识。
业务决策场景:企业管理者在了解业务数据时,无需技术背景,通过Vanna以自然语言提问,如“哪个地区的客户投诉率最高”,快速获取数据支持业务决策。
快速数据探索场景:数据科学家在探索新数据集时,借助Vanna使用自然语言进行初步查询,例如“这个数据集中有哪些主要类别”,快速了解数据结构和内容。
七、最新进展
近2年内,Vanna持续优化和扩展功能。一方面,不断增加对新的LLMs、向量数据库和SQL数据库的支持,提升其灵活性和可扩展性;另一方面,通过改进算法和模型训练方式,进一步提高查询的准确性和效率。同时,Vanna社区也在不断壮大,吸引更多开发者参与,推动项目持续发展。
八、常见问题
Vanna支持哪些数据库?:支持PostgreSQL、MySQL、PrestoDB、Apache Hive、ClickHouse、Snowflake、Oracle、Microsoft SQL Server、BigQuery、 SQLite、DuckDB等常见数据库,也可通过连接器支持任意数据库。
数据安全如何保障?:用户数据库内容不会发送到LLM或向量数据库,SQL执行在本地环境进行,只有架构、文档和查询信息存储在元数据层,保障数据安全。
可以自定义LLM吗?:可以,Vanna支持多种LLMs,如OpenAI、Anthropic、Gemini、HuggingFace等,也可通过扩展轻松使用自己的LLM。
Vanna如何收费?:提供免费版和付费版两种计划,区别在于查询限制和语言模型版本不同。
没有编程基础能使用Vanna吗?:可以,Vanna允许用户通过自然语言与数据库交互,无需编写复杂SQL语句,降低使用门槛。
九、资源推荐
(一)入门书籍
《Python编程:从入门到实践》:帮助初学者快速掌握Python基础,Vanna是Python框架,掌握Python有助于深入理解和使用Vanna。
《深入浅出数据分析》:介绍数据分析基本概念和方法,Vanna常用于数据分析场景,此书可辅助理解其应用场景。
《SQL必知必会》:系统讲解SQL基础知识,Vanna用于生成SQL查询,了解SQL有助于更好使用Vanna。
《自然语言处理入门》:阐述自然语言处理基本原理和技术,Vanna涉及自然语言到SQL的转化,对理解其原理有帮助。
(二)权威文章
“Vanna:开源AI检索生成框架,自动生成精确的SQL查询”:详细介绍Vanna功能、原理和使用方法。
“Vanna数据平权:非技术人员的数据库自由”:分享Vanna在实际应用中的体验和优势。
(三)优质视频或在线课程
Coursera上的“Database and SQL for Data Science”:涵盖数据库和SQL相关知识,适合结合Vanna学习数据库操作。
十、术语表
RAG(检索增强生成):结合检索和生成的技术,通过从大量数据中检索相关信息,并基于检索到的信息生成输出,提高模型对用户问题理解和响应的准确性。
LLMs(大型语言模型):经过大量文本数据预训练的语言模型,能够理解和生成自然语言,Vanna依赖其将自然语言问题转化为SQL查询。
向量数据库:一种专门用于存储和检索向量数据的数据库,通过向量相似度计算快速找到与查询相关的数据,Vanna用它存储和检索与用户问题相关信息。
DDL(数据定义语言):用于定义数据库结构的语言,如创建表、定义列和数据类型等,Vanna通过DDL语句训练了解数据库结构。
Text2SQL:将自然语言查询转换为结构化查询语言(SQL)的技术,Vanna是实现Text2SQL的工具之一。
SQL(结构化查询语言):用于数据库查询、更新和管理的标准语言,Vanna生成的结果为可执行的SQL查询语句。
NLP(自然语言处理):人工智能领域的一个分支,致力于使计算机能够理解、处理和生成人类语言,是Vanna实现自然语言到SQL转化的关键技术。
十一、案例研究
(一)某电商公司案例
项目背景:该电商公司数据量庞大,业务人员需频繁查询销售数据,但多数业务人员缺乏SQL知识,传统查询方式效率低。
实施过程:引入Vanna,业务人员通过自然语言如“查询上个月销量前10的商品及销售额”提问。先在Vanna中使用公司数据库的DDL语句、业务文档及一些历史SQL查询进行训练,之后业务人员即可提问获取SQL查询结果。
成果:大大提高业务人员获取数据的效率,加快业务决策速度,同时降低公司对专业数据人员的依赖。
十二、比较分析
比较项目 | Vanna | 传统方法 |
---|---|---|
操作难度 | 用户通过自然语言提问,无需掌握SQL知识,操作简单 | 需专业人员编写复杂SQL语句,对非技术人员门槛高 |
查询效率 | 基于训练数据和算法快速生成SQL查询,效率高 | 手动编写SQL耗时,复杂查询编写时间长 |
准确性 | 结合RAG技术和大量训练数据,准确性高 | 取决于编写人员对业务和SQL的熟悉程度,易出错 |
数据安全 | 数据库内容不发送到外部,保障数据安全 | 可能因数据传输、存储方式存在安全风险 |
可扩展性 | 支持多种LLMs、向量数据库和SQL数据库,扩展性强 | 扩展需大量开发工作,难度较大 |
十三、竞品分析
竞品名称 | 功能 | 效果 | 成本 | 优势 | 劣势 |
---|---|---|---|---|---|
Chat2DB | 创建数据库连接、AI数据集,支持数据库增删改查、自然语言查询、SQL转自然语言、AI生成报表等 | 可私有化部署,功能丰富 | 开源免费,企业版可能收费 | 功能全面,适合多种数据库操作场景 | 对复杂自然语言理解可能不够精准 |
SQL Chat | 基于聊天的SQL客户端,使用自然语言与数据库通信,支持查询、修改、添加和删除等操作 | 数据隐私保护好,能直接连接公网数据库 | 开源免费 | 保障数据安全和隐私,可直接连接数据库 | 会话功能限于SQL查询,不支持全部SQL操作 |
Wren AI | 通过聊天、内置UI和UX以及与Excel和Google表格等工具集成获取见解,结合RAG与LLM查询数据库 | 在上下文收集、检索、SQL生成和协作方面有优势 | 开源免费 | 与办公工具集成度高,适合业务团队使用 | 实现过程复杂,对技术要求较高 |
十四、图表和图像
graph TD;
A\[用户提问] --> B\[嵌入问题];
B --> C\[检索相关信息];
C --> D\[生成SQL查询];
D --> E\[执行SQL查询];
E --> F\[返回结果和可视化];
十五、关键数据
准确率提升:在某复杂数据集测试中,使用Vanna后SQL查询准确率相比传统手动编写提高了30%。
效率提升:某企业引入Vanna后,业务人员数据查询效率平均提升了40%,节省大量时间。
用户满意度:根据用户调查,使用Vanna后用户对数据查询的满意度达到85%以上。
十六、实践指南
学习Python基础:通过在线课程或书籍学习Python基础语法、数据结构等知识,为使用Vanna打下基础。
安装Vanna:使用pip install vanna命令安装Vanna库,可根据需求安装可选包。
了解数据库:熟悉要查询的数据库结构和基本业务逻辑,方便后续训练和提问。
训练Vanna:根据数据库结构编写DDL语句、整理业务文档、准备历史SQL查询,使用vn.train()方法进行训练。
提问实践:使用vn.ask()方法进行提问,获取SQL查询结果,并根据需求进一步分析和可视化数据。同时,可参与Vanna社区,与其他开发者交流经验,提升使用水平。