Vanna-ai - 让自然语言对话SQL数据库成为可能,支持多种数据库,大模型和向量存储

项目概述 - Text-to-SQL领域的开源RAG框架

Vanna是一款基于MIT许可证的开源Python检索增强生成(RAG,Retrieval-Augmented Generation)框架,主要用于SQL生成及相关功能开发。核心定位是通过RAG与LLM实现高精度的Text-to-SQL,最终让用户以自然语言与任意SQL数据库交互,无需手动编写SQL语句。

跨组件兼容性,支持LLM + 向量数据库 + SQL 数据库的组合。

  • 支持的大模型包括:OpenAI、Anthropic、Gemini、HuggingFace、AWS Bedrock、Ollama、Qianwen、Qianfan、Zhipu。
  • 支持的向量存储包括:AzureSearch、Opensearch、PgVector、PineCone、ChromaDB、FAISS、Marqo、Milvus、Qdrant、Weaviate、Oracle。
  • 支持的数据库包括:PostgreSQL、MySQL、PrestoDB、Apache Hive、ClickHouse、Snowflake、Oracle、Microsoft SQL Server、BigQuery、SQLite、DuckDB。
  • 安全性与隐私保护。作为企业级工具的核心诉求,Vanna确保数据库内容永不外传—— 训练阶段仅将表结构、业务文档、历史SQL转化为向量存储,不涉及原始数据;SQL执行过程在用户本地环境完成,避免数据泄露风险。
  • 自学习能力:通过反馈 - 迭代机制持续提升精度。如在Jupyter Notebook中可开启“自动训练”,将成功执行的SQL查询自动纳入训练数据;在Web、Slack等前端界面中,系统会主动提示用户反馈结果准确性;正确的问题 - SQL对将被存储,为后续查询提供参考,实现“用得越多,精度越高”。
  • 多前端适配性:支持从开发到落地的全流程前端需求。开发阶段可通过Jupyter Notebook快速调试;落地阶段可扩展为Streamlit Web应用、Flask服务、Slack机器人,或自定义前端,满足不同用户群体的交互习惯。

核心架构 - “训练 - 查询”双阶段驱动的技术链路

Vanna的架构设计围绕RAG赋能Text-to-SQL展开,核心分为模型训练”与查询交互两大阶段,各阶段由LLM层、向量存储层、数据库连接层、前端层四大组件协同支撑,形成低耦合、高可扩展的技术架构。

在这里插入图片描述

Vanna的使用流程分为两个步骤:

  1. 在你的数据上训练一个RAG模型
  2. 提出问题,系统会返回可配置为在你的数据库上运行的SQL语句
在这里插入图片描述

Vanna选择RAG而非传统LLM微调作为核心技术路径,原因如下:

在这里插入图片描述

部署与使用 - 从环境搭建到Text2SQL查询落地

Vanna的部署与使用门槛较低,基于Python生态,支持快速上手,核心流程分为环境准备 - 初始化配置 - 模型训练 - 查询交互四步,同时支持自定义扩展。

  1. 环境准备
    通过PyPI安装Vanna核心包,命令如下:
    pip install vanna
    根据选择的LLM、向量数据库、目标数据库安装对应依赖。
  2. 初始化配置
    Vanna的初始化需指定LLM实现与向量存储实现,通过继承对应类构建自定义Vanna实例。以OpenAI GPT + ChromaDB为例,核心代码如下。

1. 导入对应LLM与向量存储的实现类

from vanna.openai.openai_chat import OpenAI_Chat from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore 

2. 自定义Vanna类,继承两个实现类

class MyVanna(ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, config=None): # 初始化向量存储(ChromaDB) ChromaDB_VectorStore.__init__(self, config=config) # 初始化LLM(OpenAI) OpenAI_Chat.__init__(self, config=config) 

3. 配置参数,传入OpenAI API密钥与模型名

config = { "api_key": "sk-你的OpenAI API密钥", # 替换为实际密钥 "model": "gpt-4", # 可选gpt-3.5-turbo、gpt-4-turbo等 "chroma_db_path": "./vanna_chromadb" # ChromaDB本地存储路径 } 

4. 创建Vanna实例

vn = MyVanna(config=config) 
  1. 模型训练
    初始化完成后,需根据企业数据环境补充训练数据,核心训练命令如下:

3.1 DDL训练,导入数据库表结构,以电商场景的order表为例:

vn.train(ddl=""" CREATE TABLE IF NOT EXISTS orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, amount DECIMAL(10,2), status VARCHAR(20), -- 'paid'/'unpaid'/'cancelled' FOREIGN KEY (customer_id) REFERENCES customer(id) )""") 

3.2 业务文档训练,补充订单相关的业务定义

vn.train(documentation=""" 4. 有效订单:status为'paid'且未取消的订单,order_date不为NULL; 5. 客单价:有效订单的amount平均值,按customer_id分组计算; 6. 月度GMV:当月所有有效订单的amount总和,不含退款金额。 """) 

3.3 历史SQL训练,导入数据团队已有的GMV查询SQL:

vn.train(sql=""" SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS monthly_gmv FROM orders WHERE status = 'paid' GROUP BY month ORDER BY month DESC """) 

训练无固定次数要求,建议初期导入核心表的DDL与关键业务文档,后续通过“自学习”逐步补充,避免一次性导入过多冗余数据影响检索精度。

  1. 查询与结果交互

训练完成后,即可通过vn.ask()方法实现自然语言查询,示例如下:

result = vn.ask(“2025年第一季度各月GMV是多少”)
系统会先返回生成的SQL:

SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS monthly_gmv FROM orders WHERE status='paid' AND order_date BETWEEN '2025-01-01' AND '2025-03-31' GROUP BY month ORDER BY month 

项目地址

https://github.com/vanna-ai/vanna

Read more

Lada v0.10.1最新版本地一键启动包教程:AI去马赛克神器实测 Lada去马赛克工具、AI视频去马赛克、本地AI视频修复、一键启动AI工具、视频像素恢复神器

Lada v0.10.1最新版本地一键启动包教程:AI去马赛克神器实测 Lada去马赛克工具、AI视频去马赛克、本地AI视频修复、一键启动AI工具、视频像素恢复神器

Lada v0.10.1最新版本地一键启动包教程:AI去马赛克神器实测 Lada去马赛克工具、AI视频去马赛克、本地AI视频修复、一键启动AI工具、视频像素恢复神器 下载地址:https://pan.quark.cn/s/7819816715d6?pwd=Pnbx 之前在网上刷视频的时候,经常会遇到一个特别让人崩溃的问题——关键画面总被打上厚厚的马赛克。 想认真看内容,却只能看到一堆像素块,体验直接拉满折磨值。 我前前后后试过不少所谓的去码工具,不是效果拉胯,就是要上传视频到云端处理,说实话这种私密视频谁敢随便传?直到最近发现了这个本地神器——Lada 本地一键启动包,才算是真正解决问题。 它直接在电脑本地跑AI模型,不联网、不上传、不限制,用起来相当舒服。 下载地址:https://pan.quark.cn/s/7819816715d6?pwd=Pnbx 一、Lada到底是干什么的? 简单概括一句话:

By Ne0inhk
内网穿透的应用-随时随地用 OpenClaw!打造你的专属随身 AI

内网穿透的应用-随时随地用 OpenClaw!打造你的专属随身 AI

前言 如果你已经完成了 OpenClaw 的部署,却还只局限于 “在家用电脑访问”,那真的太可惜了。这款拥有 230K + 星标的神级项目,最大的亮点就是 “本地运行、数据私有”,但局域网的限制,却让它的实用性大打折扣 —— 试想一下,当你在公司加班,需要用 OpenClaw 帮忙写一段代码、分析一份报告,却因为无法访问家里的电脑而束手无策;当你外出旅行,想让 AI 生成一份旅行攻略,却只能等回到家才能操作。这样的 OpenClaw,显然没有发挥出它应有的价值。 我在使用 OpenClaw 的过程中,也曾被这个问题困扰许久。直到接触到内网穿透工具,才彻底解决了这个痛点。不同于传统的端口映射,无需修改路由器设置,无需公网 IP,只需简单几步安装配置,就能把本地的 OpenClaw 服务映射到公网。这意味着,无论你身处何地,只要有网络,手机、平板、笔记本都能轻松连接到家里的

By Ne0inhk
人工智能 Gemini 2.5 Pro:深度解析技术突破与实战应用

人工智能 Gemini 2.5 Pro:深度解析技术突破与实战应用

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 前言 * 一、技术架构的三大革命性突破 * 1.1 稀疏混合专家架构:容量与效率的完美平衡 * 1.2 动态推理预算:让AI学会"思考" * 1.3 超长上下文处理:百万Token带来的质变 * 二、多模态能力的实质性突破 * 2.1 视频理解到交互应用 * 2.2 图像到代码的精准转换 * 2.3 跨模态逻辑推理

By Ne0inhk
基于 ComfyUI + Wan2.2 animate实现 AI 视频人物换衣:完整工作流解析与资源整合(附一键包)

基于 ComfyUI + Wan2.2 animate实现 AI 视频人物换衣:完整工作流解析与资源整合(附一键包)

✅ 本文目标:手把手教你用 ComfyUI 搭建一个支持“视频换衣”的 AI 工作流,基于 WanVideo Animate Embeds 模型,实现从输入视频 + 衣服图片 → 输出换装视频的全流程自动化。文末提供 一键整合包下载地址 和 仙宫云端预装环境链接,支持快速部署。 一、前言:我们为什么需要“AI视频换衣”? 在电商、虚拟偶像、短视频内容创作等领域,传统“试穿”或“变装”视频制作成本高、周期长。而随着 AIGC 技术的发展,尤其是 时序可控视频生成模型 的突破,我们终于可以尝试让 AI 自动完成“给人物换衣服”这件事。 不同于简单的图像 inpainting 或静态换装,真正的视频换衣需要解决三大挑战: 1.

By Ne0inhk