Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:基于大型语言模型自动生成 SQL 查询。
  2. 技术:结合检索增强技术(RAG)提高查询准确性。
  3. 支持:兼容多种 LLMs 和 SQL 数据库。

正文(附运行示例)

Vanna 是什么

公众号: 蚝油菜花 - vanna

Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,旨在帮助用户基于大型语言模型(LLMs)为其数据库生成精确的 SQL 查询。Vanna 通过两步简单流程操作:首先在用户数据上训练 RAG 模型,然后基于提问生成可在数据库上执行的 SQL 查询。

Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。Vanna 还支持自定义前端界面,支持用户用反馈自我学习,提高查询准确性。

Vanna 的主要功能

  • SQL 查询生成:基于大型语言模型(LLMs)根据用户的问题自动生成 SQL 查询。
  • 检索增强:基于检索增强技术(RAG)结合生成模型,提高查询的准确性。
  • 多数据库支持:支持连接多种 SQL 数据库,如 PostgreSQL、MySQL 等。
  • 多 LLMs 支持:兼容多个 LLMs,包括 OpenAI、Anthropic 等。
  • 向量存储集成:与多种向量数据库集成,如 AzureSearch、PgVector 等。
  • 用户界面:提供多种用户界面选项,包括 Jupyter Notebook、Streamlit、Flask 和 Slack。

Vanna 的技术原理

  • 检索增强生成(RAG):基于 RAG 技术,一种结合检索(从大量数据中检索相关信息)和生成(基于检索到的信息生成输出)的方法。让 Vanna 更准确地理解和响应用户的问题。
  • 大型语言模型(LLMs):Vanna 依赖于 LLMs 理解和生成自然语言。模型经过预训练,能理解语言的复杂性和上下文。
  • 向量数据库:Vanna 用向量数据库存储和检索与用户问题相关的信息。数据库能高效地处理和比较大量的数据点。
  • 训练与微调:用户基于提供 DDL 语句、文档和 SQL 查询训练 Vanna,使其更好地理解和响应特定于业务的查询。
  • 自动化 SQL 执行:Vanna 生成的 SQL 查询能自动在用户的数据库上执行,无需人工干预。

如何运行 Vanna

安装

pip install vanna

导入

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

class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        OpenAI_Chat.__init__(self, config=config)

vn = MyVanna(config={
   'api_key': 'sk-...', 'model': 'gpt-4-...'})

训练

vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my-table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
""")

vn.train(documentation="Our business defines XYZ as ...")

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

提问

vn.ask("What are the top 10 customers by sales?")

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
2月前
LangChain-05 RAG Conversational 增强检索会话
LangChain-05 RAG Conversational 增强检索会话
24 2
|
7月前
|
监控 数据处理 索引
整合LlamaIndex与LangChain构建高级的查询处理系统
该文阐述了如何结合LlamaIndex和LangChain构建一个扩展性和定制性强的代理RAG应用。LlamaIndex擅长智能搜索,LangChain提供跨平台兼容性。代理RAG允许大型语言模型访问多个查询引擎,增强决策能力和多样化回答。文章通过示例代码展示了如何设置LLM、嵌入模型、LlamaIndex索引及查询引擎,并将它们转换为LangChain兼容的工具,实现高效、精准的问题解答。通过多代理协作,系统能处理复杂查询,提高答案质量和相关性。
272 0
|
4月前
|
SQL 数据管理 关系型数据库
《SQL转换秘籍:Vanna+Qwen双剑合璧,轻松实现私有模型转换》——揭秘如何利用Vanna和Qwen这两款神级工具,让你的SQL数据管理和转换如虎添翼!
【8月更文挑战第17天】Vanna与Qwen是两款优秀的开源数据库管理工具,助力用户高效管理及转换SQL数据。先安装Vanna和Qwen,随后在Vanna中创建并编辑私有模型,定义表结构等。完成模型构建后,导出为SQL文件。接着,在Qwen中导入此文件,并根据目标数据库类型(如MySQL)转换SQL语句。例如,生成创建`users`表的SQL代码。这两款工具显著提升了数据库管理工作流程的便捷性与效率。
176 1
|
4月前
|
存储 人工智能 关系型数据库
使用 PostgreSQL pgvector 的 AI 应用程序中的多模态搜索
大型语言模型(LLM)的发展已拓展至多模态领域,不仅能处理文本,还能解析图像。本文介绍如何构建一个多模态搜索应用,用户可通过上传图片或输入文本来搜索印度菜谱。该应用支持多种LLM服务,如OpenAI及Ollama本地部署模型,并运用pgvector扩展在PostgreSQL中高效存储和检索向量嵌入。我们还展示了如何生成菜谱描述的嵌入并向数据库写入这些嵌入,以及如何通过API接口结合文本和图像查询来获取最相关的菜谱结果。此外,讨论了使用分布式SQL数据库如YugabyteDB增强应用的可扩展性和健壮性。
185 0
|
4月前
|
存储 搜索推荐 测试技术
LangChain 构建问题之Retrievers(检索器)的定义如何解决
LangChain 构建问题之Retrievers(检索器)的定义如何解决
65 0
|
6月前
|
SQL 自然语言处理 API
|
5月前
|
SQL 人工智能 自然语言处理
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
127 0
|
7月前
|
SQL 自然语言处理 数据挖掘
NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道
NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道
NL2SQL技术方案系列(1):NL2API、NL2SQL技术路径选择;LLM选型与Prompt工程技巧,揭秘项目落地优化之道
|
SQL 自然语言处理 数据库
DAIL-SQL: 发掘LLM的NL2SQL能力
最近,DAIL-SQL在魔搭创空间上线,并在NL2SQL任务上取得了新的SOTA。DAIL-SQL可以更好地利用LLM的NL2SQL能力,本文对其进行详细解读。

热门文章

最新文章