❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能:基于大型语言模型自动生成 SQL 查询。
- 技术:结合检索增强技术(RAG)提高查询准确性。
- 支持:兼容多种 LLMs 和 SQL 数据库。
正文(附运行示例)
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?")
资源
- 项目官网:https://vanna.ai/docs
- GitHub 仓库:https://github.com/vanna-ai/vanna
- 文档:https://vanna.ai/docs/
- Discord 支持群组:https://discord.gg/qUZYKHremx
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦