# Vanna.AI

页面：https://maomu.com/p/vanna-ai

生成高质量的 SQL 查询，并支持数据可视化、查询优化

## 产品介绍

Vanna.AI 是一个基于 Python 的开源 AI SQL 助手平台，旨在通过自然语言处理（NLP）和检索增强生成（RAG, Retrieval-Augmented Generation）技术，帮助用户与 SQL 数据库进行交互，简化 SQL 查询的生成过程。它的核心功能是将用户用自然语言提出的问题转化为准确的 SQL 查询，并支持进一步的数据分析和可视化。以下是对 Vanna.AI 网站及其功能的详细介绍：

***

### **一、Vanna.AI 网站的主要用途**

Vanna.AI 的主要目标是让用户（包括数据分析师、数据科学家、工程师以及非技术人员）能够通过自然语言与数据库交互，无需深入掌握 SQL 技能。它通过人工智能技术，尤其是结合大语言模型（LLM）和数据库元数据，生成高质量的 SQL 查询，并支持数据可视化、查询优化和自学习功能。以下是其核心用途：

1. **自然语言到 SQL 的转换（NL2SQL）**用户可以用日常语言提出问题，例如“过去一年销售额最高的 10 个客户是谁？” Vanna.AI 会自动生成相应的 SQL 查询，并可以直接在数据库中执行以返回结果。
2. **数据库交互的简化**通过集成到 Jupyter Notebook、Slack、Web 应用等前端，Vanna.AI 让非技术用户也能轻松查询数据库，获取数据洞察。
3. **支持多种数据库和 LLM**Vanna.AI 支持 Snowflake、BigQuery、PostgreSQL、Azure SQL 等多种数据库，并兼容 OpenAI、Anthropic、Google 的多种大语言模型，用户可以根据需求选择合适的模型。
4. **数据安全与隐私**Vanna.AI 强调数据安全，用户的数据库内容不会发送到 LLM 或外部向量数据库，仅传输元数据（如表结构），确保敏感数据的隐私性。
5. **企业级定制化**提供开源代码和 API，允许企业在自己的基础设施上部署 Vanna.AI，满足严格的合规性和数据主权要求。

***

### **二、Vanna.AI 的主要功能**

Vanna.AI 提供了一系列功能，涵盖从 SQL 查询生成到数据可视化、模型训练和企业集成。以下是其主要功能的详细介绍：

#### **1\. 自然语言生成 SQL 查询**

* **核心机制**：Vanna.AI 使用 RAG 技术，将用户的自然语言问题与数据库的元数据（表结构、列名等）结合，通过 LLM 生成准确的 SQL 查询。RAG 确保生成的 SQL 更贴合数据库的实际结构。
* **使用步骤**：
    1. 连接到数据库（如 PostgreSQL、Snowflake）。
    2. 训练 RAG 模型，提供数据库的元数据（如 DDL 语句、文档或已有 SQL 查询）。
    3. 输入自然语言问题，Vanna.AI 生成 SQL 查询。
* **示例**：用户提问：“列出销售额前 10 的产品及其颜色。” Vanna.AI 会生成类似以下的 SQL 查询：

    ```sql
    SELECT p.product_name, p.color, SUM(s.sales_amount) as total_sales
    FROM products p
    JOIN sales s ON p.product_id = s.product_id
    GROUP BY p.product_name, p.color
    ORDER BY total_sales DESC
    LIMIT 10;
    ```

#### **2\. 数据可视化**

* **功能**：Vanna.AI 不仅生成 SQL 查询，还可以将查询结果通过 Plotly 库生成交互式图表（如柱状图、折线图等），帮助用户直观理解数据。
* **安全性注意事项**：默认情况下，Vanna.AI 会动态生成 Plotly 代码并执行。由于动态代码可能存在安全风险，Vanna.AI 提供“硬化指南”建议用户禁用动态代码生成，或手动审查生成的代码。
* **示例**：对于“每月销售额趋势”问题，Vanna.AI 可能生成折线图，展示每月销售额的变化。

#### **3\. 自学习与模型优化**

* **自学习机制**：Vanna.AI 支持通过用户反馈不断改进模型。如果生成的 SQL 查询不正确，用户可以提供正确的查询，Vanna.AI 会将其纳入训练数据，优化未来的查询生成。
* **训练数据类型**：
    * **DDL 语句**：描述数据库表结构（如表名、列名、数据类型）。
    * **文档**：业务术语或定义的说明（如“销售额定义为折扣价乘以数量”）。
    * **SQL 查询**：已有查询作为参考，增强模型对特定查询模式的理解。
* **效果**：随着训练数据的增加，Vanna.AI 在复杂数据集上的准确性显著提高，尤其适合企业级的大型数据库。

#### **4\. 多数据库支持**

* **支持的数据库**：Vanna.AI 支持多种主流数据库，包括但不限于：
    * Snowflake
    * Google BigQuery
    * PostgreSQL
    * Microsoft SQL Server / Azure SQL
    * SQLite
    * MySQL
* **扩展性**：用户可以通过 Python 自定义连接器，适配任何支持 Python 连接的 SQL 数据库。

#### **5\. 灵活的前端集成**

* **前端选项**：
    * **Jupyter Notebook**：适合数据分析师和工程师，快速上手。
    * **Slackbot**：通过 Slack 提问，适合团队协作。
    * **Web 应用**：支持 Flask、Streamlit、Chainlit 等框架，部署本地或云端 Web 界面。
    * **自定义 UI**：企业可以将 Vanna.AI 集成到现有 Web 应用中，为客户提供数据查询功能。
* **示例**：在 Slack 中输入“显示最近 30 天的订单数量”，Vanna.AI 会返回 SQL 结果和图表，直接在 Slack 频道显示。

#### **6\. 开源与企业定制**

* **开源特性**：
    * Vanna.AI 的核心 Python 包和前端集成代码完全开源（MIT 许可证），托管在 GitHub（https://github.com/vanna-ai/vanna）。
    * 用户可以在本地部署，自由定制功能。
* **企业部署**：
    * **Vanna Cloud**：提供托管服务，适合快速部署。
    * **私有部署**：支持在企业 VPC 内部署，兼容企业选择的云 LLM 提供商，满足合规性要求。
    * **API 集成**：通过 API 将 Vanna.AI 的功能嵌入现有应用，提供企业级安全性、监控和可观测性。

#### **7\. 数据安全与隐私**

* **安全设计**：
    * 数据库内容不发送到 LLM，仅传输元数据（如表名、列名）。
    * 支持本地向量数据库（如 ChromaDB、Qdrant），避免数据外泄。
    * 提供“硬化指南”帮助用户增强安全性，例如禁用动态代码生成。
* **隐私保障**：
    * 默认模型为私有，仅限授权用户访问。
    * 支持模型公开或添加成员，灵活控制访问权限。

#### **8\. 支持多种 LLM 和向量数据库**

* **LLM 兼容性**：
    * OpenAI（GPT-4、GPT-3.5-turbo 等）
    * Anthropic（Claude 2.1、Opus 等）
    * Google（Bard、Gemini 等）
    * 其他开源模型（如 Meta 的 LLaMA、Falcon）
* **向量数据库**：
    * ChromaDB
    * Qdrant
    * 其他可扩展的向量存储
* **灵活性**：用户可以通过继承 `VannaBase` 类，自定义 LLM 或向量数据库的实现。

#### **9\. 价格与订阅**

* **免费计划**：
    * 提供基础功能，适合个人或小规模测试。
    * 可通过 GitHub 免费获取开源代码。
* **付费计划**：
    * **生产环境**：按使用量计费，例如 GPT-4 模型每 100 万 token 30 美元，无速率限制，支持 SLA。
    * **企业定制**：提供开发者支持和定制化部署，具体价格需联系 Vanna.AI 团队（https://vanna.ai/contact）。
* **API 服务**：企业可通过 Vanna.AI 的 API 集成功能，价格信息需参考官网。

***

### **三、Vanna.AI 的优势与适用场景**

#### **优势**

1. **易用性**：非技术用户也能通过自然语言查询数据库，降低 SQL 学习门槛。
2. **高准确性**：通过 RAG 和训练数据优化，Vanna.AI 在复杂数据集上的表现优于通用 LLM（如 ChatGPT）。
3. **灵活性**：支持多种数据库、LLM 和前端，适配不同企业需求。
4. **安全优先**：严格的数据隐私设计，适合对数据安全敏感的企业。
5. **开源与社区支持**：开源代码和活跃的 GitHub 社区（超过 9000 星），便于开发者贡献和定制。

#### **适用场景**

* **数据分析师**：快速生成复杂 SQL 查询，节省时间。
* **业务团队**：通过 Slack 或 Web 界面查询数据，获取业务洞察。
* **企业 IT 部门**：将 Vanna.AI 集成到内部工具，赋能员工数据分析能力。
* **开发者**：利用开源代码和 API 构建定制化的数据查询应用。
* **教育与研究**：用于教学或研究，探索自然语言处理与数据库交互的结合。

***

### **四、如何开始使用 Vanna.AI**

1. **快速入门**：
    * 安装 Vanna Python 包：

        ```bash
        pip install vanna
        ```
    * 配置 API 密钥和数据库连接：

        ```python
        import vanna as vn
        from vanna.remote import VannaDefault
        vn = VannaDefault(model='chinook', api_key=vn.get_api_key('your-email@example.com'))
        vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')
        ```
    * 提问并获取 SQL：

        ```python
        vn.ask("What are the top 10 albums by sales?")
        ```
2. **推荐资源**：
    * **官方文档**：https://vanna.ai/docs/
    * **GitHub 仓库**：https://github.com/vanna-ai/vanna
    * **示例 Notebook**：提供 Google Colab 或本地 Jupyter Notebook 示例。
    * **社区支持**：加入 Vanna.AI 的 Slack 社区或 LinkedIn 讨论。
3. **本地部署**：
    * 下载 GitHub 代码，配置本地 LLM 和向量数据库。
    * 参考“硬化指南”增强安全性。

***

### **五、与其他工具的比较**

* **与 ChatGPT 的区别**：ChatGPT 缺乏对特定数据库结构的上下文理解，生成的 SQL 可能不准确。Vanna.AI 通过 RAG 和训练数据优化，显著提高查询准确性。
* **与 DataLine 的比较**：Vanna.AI 更适合开发者和需要高度定制化的场景，支持复杂集成；而 DataLine 更注重非技术用户，界面更简单但定制性较弱。
* **与传统 BI 工具的比较**：传统 BI 工具（如 Tableau）需要用户手动配置报表，而 Vanna.AI 通过自然语言自动化生成查询和可视化，效率更高。

***

### **六、用户反馈与案例**

* **用户评价**：
    * Vanna.AI 被 Oracle、Microsoft、Volvo、Adidas 等品牌使用，GitHub 星标超过 9000，显示出广泛的社区认可。
    * 用户称赞其简单易用和对复杂数据集的高准确性，但部分用户提到本地部署可能需要额外配置时间。
* **成功案例**：
    * **Paddle AI Launchpad 2024**：Vanna.AI 赢得 2 万美元奖金，证明其在 AI 驱动的商业智能领域的创新性。
    * **Azure SQL 集成**：与 Microsoft 合作，提供 Azure SQL 用户便捷的 NL2SQL 体验。

***

### **七、总结**

Vanna.AI 是一个功能强大且灵活的 AI SQL 助手，适用于从个人开发者到大型企业的各种用户。通过自然语言生成 SQL 查询、支持多数据库和前端集成、强调数据安全，它极大地降低了数据库交互的门槛。其开源性质和企业级定制能力使其在数据分析和商业智能领域具有广阔的应用前景。

## 官网入口

https://vanna.ai/
