Vanna AI:基于RAG的TextToSql,企业智能BI看板解决方案
在数字化浪潮中,数据已成为企业的核心资产,而SQL则是解锁这些资产的关键。但对于非技术用户,SQL的复杂性往往成为难以跨越的障碍,阻碍了他们直接从数据中提取价值。为了解决这一问题,Text2SQL技术应需而生,它允许用户以自然语言的形式与数据库进行交互,极大地降低了数据分析的门槛。
尽管Text2SQL简化了查询过程,它在处理复杂查询和整合外部知识方面仍显不足。为此,RAG2SQL技术应运而生,通过检索增强和生成模型的结合,显著提升了SQL查询的精确度和处理复杂性的能力。
🌈什么是Vanna
Vanna是基于检索增强(RAG)的sql生成框架,会先用向量数据库将待查询数据库的建表语句、文档、常用SQL及其自然语言查询问题存储起来。在用户发起查询请求时,会先从向量数据库中检索出相关的建表语句、文档、SQL问答对放入到prompt里(DDL和文档作为上下文、SQL问答对作为few-shot样例),LLM根据prompt生成查询SQL并执行,框架会进一步将查询结果使用plotly可视化出来或用LLM生成后续问题。如果用户反馈LLM生成的结果是正确的,可以将这一问答对存储到向量数据库,可以使得以后的生成结果更准确。
⚡项目地址
Vanna 是一个获得 MIT 许可的开源 Python RAG(检索增强生成)框架,用于 SQL 生成和相关功能。GitHub 已经高达 7200 颗星 ,对于通过语义搜索数据库存在很多业务场景都有非常大的价值,尤其是面向频繁做数据分析和数据统计的情况下,直接通过需求生成数据库SQL查询DB返回结果到前端中。
项目地址:https://github.com/vanna-ai/vanna
🎖︎Vanna的特性
- 易用性:Vanna 允许非技术用户通过自然语言与数据库交互,无需编写复杂的 SQL 查询。
- 灵活性:它可以处理多种类型的数据库和查询,适用于不同的应用场景。
- 准确性:Vanna 的能力与你提供的训练数据相关,更多的训练数据意味着在大型和复杂的数据集上有更好的准确性。
- 安全性:你的数据库内容不会直接发送给 LLM,SQL 执行发生在你的本地环境中。
- 自我学习:你可以选择在成功执行的查询上“自动训练”,或让界面提示用户对结果提供反馈,使未来的结果更加准确。
🌟Vanna技术原理
从本质上讲,Vanna 是一个 Python 包,它使用检索增强来帮助您使用 LLMs 为数据库生成准确的 SQL 查询。Vanna 的核心是一个精心设计的 Python 包,它巧妙地融合了最新的人工智能技术,旨在简化数据库查询的生成过程。从本质上讲,Vanna 是一个 Python 包,它使用检索增强(Retrieval-Augmented Generation)来帮助您使用大型语言模型(LLMs)为数据库生成准确的 SQL 查询。
检索增强是一种结合了检索(即搜索)和生成(即创建)的方法。Vanna 利用这种方法,首先从数据库中检索相关信息,然后增强语言模型的理解能力,使其能够更准确地理解查询的上下文和意图。这种方法的优势在于,它不仅依赖于模型内部的知识,还能够即时从数据中获取最新信息,从而生成更加精确的 SQL 查询。
、、
Vanna 的工作分为两个简单的步骤 ,首先在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回可设置为在您的数据库上自动运行的 SQL 查询。借助数据库的 DDL 语句、元数据(数据库内关于自身数据的描述信息)、相关文档说明、参考样例 SQL 等训练一个 RAG 的 “模型”(embedding + 向量库);并在收到用户自然语言描述的问题时,从 RAG 模型中通过语义检索出相关的内容,进而组装进入 Prompt,然后交给 LLM 生成 SQL。
🤟Vanna效果展示
输入问题后,他会将问题转化成标准的SQL语句进行查询,并用表格展示,同时,vanna会根据自己的理解使用适当的表格展示
🔄Vanna未来规划
总之,Vanna 的发展比预期快。一些大型企业,包括财富 1000 强公司,已经开始使用 Vanna 进行数据查询。这表明 Vanna 已经成为一个可靠的解决方案,能够处理抽象的数据库交互。Vanna 的未来规划以三个核心目标为指导:准确性、交互性和自主性。这三个目标共同构成了 Vanna 的发展蓝图,旨在推动数据分析技术的进步,为用户提供前所未有的体验。
- 准确性是 Vanna 的首要追求。Vanna 致力于通过大型语言模型 (LLM) 掌握 SQL 生成,以实现与经验丰富的数据分析师相媲美的“经验准确性”。Vanna 认识到,SQL 作为最常见的即席数据访问接口,其高 Token 密度使其成为上下文有限 LLM 的理想应用场景。通过存储历史正确的问答对,并利用这些数据来引导 LLM 的响应,Vanna 已经在提高 SQL 生成和数据分析的准确性方面取得了显著进展。
- 交互性是 Vanna 与用户建立联系的桥梁。Vanna 的 AI 旨在以一种熟悉且协作的方式与用户交互,类似于人类数据分析师与利益相关者之间的互动。Vanna 的 AI 能够请求信息、寻求澄清、提供解释、置信度评分,并建议后续问题,从而确保用户能够获得所需的信息,并与 AI 进行有效的沟通。
- 自主性是 Vanna 赋予 AI 的关键能力。Vanna 旨在通过简化的入职流程,使 AI 能够立即访问必要的系统和数据源,并根据其数据分析自主执行后续操作,如生成报告、提醒利益相关者或触发工作流。
⚛Vanna私有化部署
AI科技智库提供本地搭建方案。欲了解更多信息,扫码加入【AI科技智库】咨询。