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

AI实践(8)Skills技能

AI实践(8)Skills技能

AI实践(10)Skills技能 Author: Once Day Date: 2026年3月18日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: AI实践成长_Once-Day的博客-ZEEKLOG博客 参考文章:Prompt Engineering Guide提示词技巧 – Claude 中文 - Claude AI 开发技术社区Documentation - Claude API DocsOpenAI for developersSkills(技能) – Claude 中文 - Claude AI 开发技术社区模式库:把工程经验沉淀为 Skills – Claude 中文 - Claude AI 开发技术社区持续学习:把会话复盘沉淀成 Skills – Claude

AI 自动化测试:接口测试全流程自动化的实现方法

AI 自动化测试:接口测试全流程自动化的实现方法

在 AI 技术飞速渗透各行各业的当下,我们早已告别 “谈 AI 色变” 的观望阶段,迈入 “用 AI 提效” 的实战时代 💡。无论是代码编写时的智能辅助 💻、数据处理中的自动化流程 📊,还是行业场景里的精准解决方案 ,AI 正以润物细无声的方式,重构着我们的工作逻辑与行业生态 🌱。曾几何时,我们需要花费数小时查阅文档 📚、反复调试代码 ⚙️,或是在海量数据中手动筛选关键信息 ,而如今,一个智能工具 🧰、一次模型调用 ⚡,就能将这些繁琐工作的效率提升数倍 📈。正是在这样的变革中,AI 相关技术与工具逐渐走进我们的工作场景,成为破解效率瓶颈、推动创新的关键力量 。今天,我想结合自身实战经验,带你深入探索 AI 技术如何打破传统工作壁垒 🧱,让 AI 真正从 “概念” 变为 “实用工具” ,为你的工作与行业发展注入新动能 ✨。 文章目录 * AI 自动化测试:接口测试全流程自动化的实现方法 🤖 * 为什么传统自动化测试“卡壳”

AI时代营销变革核心:GEO战略全景解析与落地指南

AI时代营销变革核心:GEO战略全景解析与落地指南

一、GEO解读:AI时代的营销新路径 生成式AI浪潮下,GEO引领营销新变革      以大型语言模型(LLMs)为核心的生成式AI(如ChatGPT、Gemini、豆包等)加速迭代,推动信息获取与决策范式变革。其快速渗透信息检索、决策辅助等领域,重塑用户交互逻辑——传统“搜索引擎链接筛选”模式渐退,“AI对话式获答”成主流。传统SEO难以适配这一变革,企业仍需全新优化路径。      在此背景下,GEO(生成引擎优化)应运而生。它并非SEO的简单延伸,而是聚焦“语义深度、数据支持、权威来源”与“AI交互逻辑”的全新优化体系,为企业抢占AI信息生态先机提供核心方案。 GEO:超越传统SEO的全新优化哲学      作为新兴战略优化领域,GEO的核心目标是:优化企业/品牌内容及信号,使其易被生成式AI理解、采信,并在生成答案时优先正面呈现。相较于传统SEO聚焦排名的逻辑,GEO更侧重与AI的语义适配和信任构建,是适配AI生态的全新优化理念。 白皮书核心观点:解码GEO的战略价值与实践逻辑

Trae 编程(Trae AI)全攻略:使用方法、同类对比与趋势分析

Trae 编程(Trae AI)全攻略:使用方法、同类对比与趋势分析

该文做了 Trae 编程的详细使用攻略,同时明确 Trae 与国内外同类 AI 编程软件的核心差异,分析这类 AI 编程工具的未来发展趋势,并判断 Trae 是否能和 Gemini、Cursor等知名工具相提并论。以下内容逻辑清晰、新手友好,覆盖新手关注的所有核心点。 一、Trae 编程(Trae AI)核心使用攻略(新手零门槛上手) Trae AI(常称 Trae 编程助手)是国内自研的 AI 驱动编程工具,主打本地化部署、适配国内开发场景、新手友好,支持代码生成、调试、重构、低代码开发等核心能力,无需翻墙即可全功能使用。 1. 前置准备(3 步搞定) 步骤操作内容新手注意点1注册登录官网(trae.ai)下载客户端